aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-10-22 22:00:45 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-10-22 22:00:45 +0000
commita85d8079779b481fd73aaffa266fd6faf999f142 (patch)
treebee9fc4c466e73f36039b488e5ad44474a6de5ff /src
parentfa5eb116839226c2ddfd835c817122dde993fa02 (diff)
downloadqmmp-a85d8079779b481fd73aaffa266fd6faf999f142.tar.gz
qmmp-a85d8079779b481fd73aaffa266fd6faf999f142.tar.bz2
qmmp-a85d8079779b481fd73aaffa266fd6faf999f142.zip
qsui: fixed dock widget handling
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9520 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Ui/qsui/dockwidgetlist.cpp35
-rw-r--r--src/plugins/Ui/qsui/dockwidgetlist.h3
2 files changed, 31 insertions, 7 deletions
diff --git a/src/plugins/Ui/qsui/dockwidgetlist.cpp b/src/plugins/Ui/qsui/dockwidgetlist.cpp
index f1a1a9cea..6e7eff54e 100644
--- a/src/plugins/Ui/qsui/dockwidgetlist.cpp
+++ b/src/plugins/Ui/qsui/dockwidgetlist.cpp
@@ -19,7 +19,8 @@ DockWidgetList::DockWidgetList(QMainWindow *parent) : QObject(parent), m_mw(pare
dockWidget->setObjectName(id);
dockWidget->setAllowedAreas(desc.allowedAreas);
m_mw->addDockWidget(desc.area, dockWidget);
- connect(dockWidget->toggleViewAction(), SIGNAL(toggled(bool)), SLOT(onViewActionToggled(bool)));
+ connect(dockWidget->toggleViewAction(), SIGNAL(triggered(bool)), SLOT(onViewActionTriggered(bool)));
+ connect(dockWidget, SIGNAL(visibilityChanged(bool)), SLOT(onVisibilityChanged(bool)));
m_dockWidgetList << dockWidget;
}
}
@@ -59,17 +60,19 @@ void DockWidgetList::setTitleBarsVisible(bool visible)
}
}
-void DockWidgetList::onViewActionToggled(bool checked)
+void DockWidgetList::onViewActionTriggered(bool checked)
{
if(!sender() || !sender()->parent())
return;
- QString id = sender()->parent()->objectName();
QDockWidget *dockWidget = qobject_cast<QDockWidget *>(sender()->parent());
+
if(!dockWidget)
return;
- if(checked)
+ QString id = dockWidget->objectName();
+
+ if(checked && !dockWidget->widget())
{
QWidget *w = General::createWidget(id, m_mw);
if(w)
@@ -78,12 +81,32 @@ void DockWidgetList::onViewActionToggled(bool checked)
w->show();
}
}
- else if(dockWidget->widget())
+ else if(!checked && dockWidget->widget())
{
dockWidget->widget()->deleteLater();
}
}
+void DockWidgetList::onVisibilityChanged(bool visible)
+{
+ QDockWidget *dockWidget = qobject_cast<QDockWidget *>(sender());
+
+ if(!dockWidget)
+ return;
+
+ QString id = dockWidget->objectName();
+
+ if(visible && !dockWidget->widget())
+ {
+ QWidget *w = General::createWidget(id, m_mw);
+ if(w)
+ {
+ dockWidget->setWidget(w);
+ w->show();
+ }
+ }
+}
+
void DockWidgetList::onWidgetAdded(const QString &id)
{
for(QDockWidget *dockWidget : m_dockWidgetList)
@@ -99,7 +122,7 @@ void DockWidgetList::onWidgetAdded(const QString &id)
if(m_menu && m_beforeAction)
m_menu->insertAction(m_beforeAction, dockWidget->toggleViewAction());
m_mw->addDockWidget(desc.area, dockWidget);
- connect(dockWidget->toggleViewAction(), SIGNAL(toggled(bool)), SLOT(onViewActionToggled(bool)));
+ connect(dockWidget->toggleViewAction(), SIGNAL(toggled(bool)), SLOT(onViewActionTriggered(bool)));
m_dockWidgetList << dockWidget;
setTitleBarsVisible(m_titleBarsVisible);
diff --git a/src/plugins/Ui/qsui/dockwidgetlist.h b/src/plugins/Ui/qsui/dockwidgetlist.h
index 366e49b3c..c4ac1f0d8 100644
--- a/src/plugins/Ui/qsui/dockwidgetlist.h
+++ b/src/plugins/Ui/qsui/dockwidgetlist.h
@@ -18,7 +18,8 @@ public:
void setTitleBarsVisible(bool visible);
private slots:
- void onViewActionToggled(bool visible);
+ void onViewActionTriggered(bool checked);
+ void onVisibilityChanged(bool visible);
void onWidgetAdded(const QString &id);
void onWidgetRemoved(const QString &id);
void onWidgetUpdated(const QString &id);