From be77ca07e282a233ef44f12fdeb3dec502046580 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Fri, 15 Feb 2019 20:37:19 +0200 Subject: SubWindow: closing tab restores previous index SubWindow keeps track of its previous tab index, and when a tab is closed, the previous index should be restored. --- src/subwindow/tabwidget.cpp | 7 +++++++ src/subwindow/tabwidget.h | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/subwindow/tabwidget.cpp b/src/subwindow/tabwidget.cpp index 6951b7b..ef15657 100644 --- a/src/subwindow/tabwidget.cpp +++ b/src/subwindow/tabwidget.cpp @@ -67,6 +67,12 @@ TabWidget::TabWidget(QWidget *parent) removeTab(i); } }); + + // + connect(this, &TabWidget::currentChanged, this, [this](int index) { + previous = current; + current = index; + }); } TabWidget::~TabWidget() @@ -117,6 +123,7 @@ void TabWidget::removeTab(int index) m_closedTabs.dequeue(); } + setCurrentIndex(previous); QTabWidget::removeTab(index); delete w; } diff --git a/src/subwindow/tabwidget.h b/src/subwindow/tabwidget.h index d615bcb..d67d2de 100644 --- a/src/subwindow/tabwidget.h +++ b/src/subwindow/tabwidget.h @@ -45,9 +45,9 @@ protected: void contextMenuEvent(QContextMenuEvent *event) override; void mousePressEvent(QMouseEvent *event) override; - - private: + int current = -1; + int previous = -1; QMenu *tabContextMenu; QQueue m_closedTabs; }; -- cgit v1.2.1