From 9ead3b6289e2b3baf7efbed43b0f6454421ae36b Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 2 Apr 2019 16:24:32 +0200 Subject: [PATCH] Fix missing mode changed signal on startup Reverts commit 88fc878aa8215334909eae9c5935cd03c8280c72 and fixes the original issue differently. Introduce a currentAboutToChange signal in FancyTabBar that is passed on via FancyTabWidget to ModeManager::currentModeAboutToChange. This avoids the temporary mismatch of selected indices in the tab bar vs tab widget. Change-Id: If1a331db5478450d7c57e5908b2bed218e9828a8 Reviewed-by: Orgad Shaneh --- src/plugins/coreplugin/fancytabwidget.cpp | 6 ++++-- src/plugins/coreplugin/fancytabwidget.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp index fe20e36c01d..1b7f8703415 100644 --- a/src/plugins/coreplugin/fancytabwidget.cpp +++ b/src/plugins/coreplugin/fancytabwidget.cpp @@ -215,6 +215,7 @@ void FancyTabBar::mousePressEvent(QMouseEvent *event) // menu arrow clicked emit menuTriggered(index, event); } else { + emit currentAboutToChange(index); m_currentIndex = index; update(); // update tab bar before showing widget @@ -396,6 +397,7 @@ void FancyTabBar::paintTab(QPainter *painter, int tabIndex) const void FancyTabBar::setCurrentIndex(int index) { if (isTabEnabled(index) && index != m_currentIndex) { + emit currentAboutToChange(index); m_currentIndex = index; update(); emit currentChanged(m_currentIndex); @@ -520,6 +522,7 @@ FancyTabWidget::FancyTabWidget(QWidget *parent) mainLayout->addLayout(vlayout); setLayout(mainLayout); + connect(m_tabBar, &FancyTabBar::currentAboutToChange, this, &FancyTabWidget::currentAboutToShow); connect(m_tabBar, &FancyTabBar::currentChanged, this, &FancyTabWidget::showWidget); connect(m_tabBar, &FancyTabBar::menuTriggered, this, &FancyTabWidget::menuTriggered); } @@ -598,7 +601,7 @@ void FancyTabWidget::addCornerWidget(QWidget *widget) int FancyTabWidget::currentIndex() const { - return m_modesStack->currentIndex(); + return m_tabBar->currentIndex(); } QStatusBar *FancyTabWidget::statusBar() const @@ -613,7 +616,6 @@ void FancyTabWidget::setCurrentIndex(int index) void FancyTabWidget::showWidget(int index) { - emit currentAboutToShow(index); m_modesStack->setCurrentIndex(index); QWidget *w = m_modesStack->currentWidget(); if (QTC_GUARD(w)) { diff --git a/src/plugins/coreplugin/fancytabwidget.h b/src/plugins/coreplugin/fancytabwidget.h index 19038add89b..c9a7264d80e 100644 --- a/src/plugins/coreplugin/fancytabwidget.h +++ b/src/plugins/coreplugin/fancytabwidget.h @@ -125,6 +125,7 @@ public: QRect tabRect(int index) const; signals: + void currentAboutToChange(int index); void currentChanged(int index); void menuTriggered(int index, QMouseEvent *event);