From 300c996a66875727fd1793db48694cbbca6c058d Mon Sep 17 00:00:00 2001 From: Ash-86 <108089527+Ash-86@users.noreply.github.com> Date: Fri, 2 Oct 2026 14:41:50 -0300 Subject: [PATCH] Make dock toggle raise an open panel that is hidden behind another tab --- framework/dockwindow/qml/Muse/Dock/dockpageview.cpp | 13 ++++++++++++- .../dockwindow/qml/Muse/Dock/dockpanelview.cpp | 12 ++++++++++++ framework/dockwindow/qml/Muse/Dock/dockpanelview.h | 2 ++ 3 files changed, 26 insertions(+), 1 deletion(-) 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);