diff --git a/framework/dockwindow/qml/Muse/Dock/dockpageview.cpp b/framework/dockwindow/qml/Muse/Dock/dockpageview.cpp index 58f6c22efa..b20a57d728 100644 --- a/framework/dockwindow/qml/Muse/Dock/dockpageview.cpp +++ b/framework/dockwindow/qml/Muse/Dock/dockpageview.cpp @@ -212,7 +212,18 @@ bool DockPageView::isDockOpen(const QString& dockName) const void DockPageView::toggleDock(const QString& dockName) { - setDockOpen(dockName, !isDockOpen(dockName)); + DockBase* dock = dockByName(dockName); + if (!dock) { + return; + } + + DockPanelView* panel = dynamic_cast(dock); + if (panel && panel->isOpen() && !panel->isCurrentTab()) { + panel->makeCurrentTab(); + return; + } + + setDockOpen(dockName, !dock->isOpen()); } void DockPageView::setDockOpen(const QString& dockName, bool open) diff --git a/framework/dockwindow/qml/Muse/Dock/dockpanelview.cpp b/framework/dockwindow/qml/Muse/Dock/dockpanelview.cpp index ecdbaef97f..2215d72b71 100644 --- a/framework/dockwindow/qml/Muse/Dock/dockpanelview.cpp +++ b/framework/dockwindow/qml/Muse/Dock/dockpanelview.cpp @@ -310,3 +310,15 @@ void DockPanelView::setCurrentTabIndex(int index) frame->setCurrentTabIndex(index); } } + +bool DockPanelView::isCurrentTab() const +{ + return dockWidget() && dockWidget()->isCurrentTab(); +} + +void DockPanelView::makeCurrentTab() +{ + if (dockWidget()) { + dockWidget()->setAsCurrentTab(); + } +} diff --git a/framework/dockwindow/qml/Muse/Dock/dockpanelview.h b/framework/dockwindow/qml/Muse/Dock/dockpanelview.h index 0acfc4923e..7a2fb193f8 100644 --- a/framework/dockwindow/qml/Muse/Dock/dockpanelview.h +++ b/framework/dockwindow/qml/Muse/Dock/dockpanelview.h @@ -58,6 +58,8 @@ class DockPanelView : public DockBase bool isTabAllowed(const DockPanelView* tab) const; void addPanelAsTab(DockPanelView* tab); void setCurrentTabIndex(int index); + bool isCurrentTab() const; + void makeCurrentTab(); public slots: void setGroupName(const QString& name);