aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/qsui/dockwidgetlist.cpp
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/plugins/Ui/qsui/dockwidgetlist.cpp
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/plugins/Ui/qsui/dockwidgetlist.cpp')
-rw-r--r--src/plugins/Ui/qsui/dockwidgetlist.cpp35
1 files changed, 29 insertions, 6 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);