diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2020-10-22 22:00:45 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2020-10-22 22:00:45 +0000 |
| commit | a85d8079779b481fd73aaffa266fd6faf999f142 (patch) | |
| tree | bee9fc4c466e73f36039b488e5ad44474a6de5ff /src/plugins/Ui | |
| parent | fa5eb116839226c2ddfd835c817122dde993fa02 (diff) | |
| download | qmmp-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')
| -rw-r--r-- | src/plugins/Ui/qsui/dockwidgetlist.cpp | 35 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/dockwidgetlist.h | 3 |
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); |
