From b5b4611ba28a24bd33ca2351a12bc3afcb849932 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 25 Mar 2014 13:47:45 +0100 Subject: [PATCH] Probably fixed #39. --- src/gui/tabwidget.cpp | 32 ++++++++++++++++++++------------ src/gui/tabwidget.h | 4 ---- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/gui/tabwidget.cpp b/src/gui/tabwidget.cpp index 1637fbec4..d18a64da0 100644 --- a/src/gui/tabwidget.cpp +++ b/src/gui/tabwidget.cpp @@ -109,20 +109,33 @@ void TabWidget::checkTabBarVisibility() { } void TabWidget::tabInserted(int index) { - QTabWidget::tabInserted(index); + QTabWidget::tabInserted(index); checkTabBarVisibility(); + + int count_of_tabs = count(); + + if (index < count_of_tabs - 1 && count_of_tabs > 1) { + // New tab was inserted and the tab is not the last one. + fixContentsAfterMove(index, count_of_tabs - 1); + } } void TabWidget::tabRemoved(int index) { QTabWidget::tabRemoved(index); checkTabBarVisibility(); + + int count_of_tabs = count(); + + if (index < count_of_tabs && count_of_tabs > 1) { + // Some tab was removed and the tab was not the last one. + fixContentsAfterMove(index, count_of_tabs - 1); + } } void TabWidget::createConnections() { connect(tabBar(), SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int))); connect(tabBar(), SIGNAL(emptySpaceDoubleClicked()), this, SLOT(addEmptyBrowser())); connect(tabBar(), SIGNAL(tabMoved(int,int)), this, SLOT(fixContentsAfterMove(int,int))); - connect(tabBar(), SIGNAL(currentChanged(int)), this, SLOT(fixContentAfterIndexChange(int))); } void TabWidget::initializeTabs() { @@ -324,17 +337,12 @@ void TabWidget::changeTitle(int index, const QString &new_title) { setTabToolTip(index, new_title); } -void TabWidget::fixContentAfterIndexChange(int from) { - fixContentsIndexes(from, count() - 1); -} - void TabWidget::fixContentsAfterMove(int from, int to) { - fixContentsIndexes(qMin(from, to), qMax(from, to)); -} + from = qMin(from, to); + to = qMax(from, to); -void TabWidget::fixContentsIndexes(int starting_index, int ending_index) { - for ( ; starting_index <= ending_index; starting_index++) { - TabContent *content = static_cast(widget(starting_index)); - content->setIndex(starting_index); + for ( ; from <= to; from++) { + TabContent *content = static_cast(widget(from)); + content->setIndex(from); } } diff --git a/src/gui/tabwidget.h b/src/gui/tabwidget.h index 0ff91a1c4..db0f516ce 100644 --- a/src/gui/tabwidget.h +++ b/src/gui/tabwidget.h @@ -85,12 +85,8 @@ class TabWidget : public QTabWidget { public slots: // Fixes tabs indexes. - void fixContentAfterIndexChange(int from); void fixContentsAfterMove(int from, int to); - // Fixes indexes of tab contents. - void fixContentsIndexes(int starting_index, int ending_index); - // Called when number of tab pages changes. void checkTabBarVisibility();