From d7ce872f8063a4f4728a4b370051e1188bce763f Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 28 Nov 2023 16:30:17 +0100 Subject: [PATCH] Fix state of side bar buttons when switching different design widgets When switching between different editors in Design mode (e.g. ui and qml), the side bar buttons must update. So far they reacted on mode switches, but not on changes of the main window while staying in the same mode. Change-Id: I85635f12bb8613e90ec81056d8763431c04fea2e Reviewed-by: Reviewed-by: Marcus Tillmanns Reviewed-by: Christian Stenger --- src/plugins/coreplugin/imode.cpp | 1 + src/plugins/coreplugin/modemanager.cpp | 1 + src/plugins/coreplugin/modemanager.h | 2 ++ src/plugins/coreplugin/navigationwidget.cpp | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/imode.cpp b/src/plugins/coreplugin/imode.cpp index 81190327c98..dce4d4a7574 100644 --- a/src/plugins/coreplugin/imode.cpp +++ b/src/plugins/coreplugin/imode.cpp @@ -190,6 +190,7 @@ Utils::FancyMainWindow *IMode::mainWindow() void IMode::setMainWindow(Utils::FancyMainWindow *mw) { m_d->m_mainWindow = mw; + emit ModeManager::instance()->currentMainWindowChanged(); } bool IMode::isEnabled() const diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index cebc5f8422d..424ec4b555c 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -322,6 +322,7 @@ void ModeManager::currentTabChanged(int index) oldMode = d->m_modes.at(d->m_oldCurrent); d->m_oldCurrent = index; emit currentModeChanged(mode->id(), oldMode ? oldMode->id() : Id()); + emit currentMainWindowChanged(); } /*! diff --git a/src/plugins/coreplugin/modemanager.h b/src/plugins/coreplugin/modemanager.h index 96b8b252c23..09a33566f06 100644 --- a/src/plugins/coreplugin/modemanager.h +++ b/src/plugins/coreplugin/modemanager.h @@ -57,6 +57,8 @@ signals: // the default argument '=0' is important for connects without the oldMode argument. void currentModeChanged(Utils::Id mode, Utils::Id oldMode = {}); + void currentMainWindowChanged(); + private: explicit ModeManager(Internal::FancyTabWidget *modeStack); ~ModeManager() override; diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index b6961f8612a..4fc33544fcd 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -194,7 +194,7 @@ NavigationWidget::NavigationWidget(QAction *toggleSideBarAction, Side side) : NavigationWidgetPrivate::s_instanceRight = this; connect(ModeManager::instance(), - &ModeManager::currentModeChanged, + &ModeManager::currentMainWindowChanged, this, &NavigationWidget::updateMode); }