diff options
author | aqua <aqua@iserlohn-fortress.net> | 2022-09-03 15:00:06 +0300 |
---|---|---|
committer | aqua <aqua@iserlohn-fortress.net> | 2022-09-05 23:07:42 +0300 |
commit | fd5f068ae912bec800df24fcac624fb1e3d9593e (patch) | |
tree | 0d3a4722e365710a416613a762519f73e5bfe5e4 /src | |
parent | Add rekonq::DefaultUrl enum (diff) | |
download | rekonq-fd5f068ae912bec800df24fcac624fb1e3d9593e.tar.xz |
Close main window after last tab is closed
Diffstat (limited to 'src')
-rw-r--r-- | src/rekonqwindow.cpp | 8 | ||||
-rw-r--r-- | src/tabbar/tabbar.cpp | 11 | ||||
-rw-r--r-- | src/tabbar/tabbar.h | 1 |
3 files changed, 16 insertions, 4 deletions
diff --git a/src/rekonqwindow.cpp b/src/rekonqwindow.cpp index ef772936..f969622c 100644 --- a/src/rekonqwindow.cpp +++ b/src/rekonqwindow.cpp @@ -23,9 +23,11 @@ RekonqWindow::RekonqWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::Re { ui->setupUi(this); - connect(ui->tabs, &QTabBar::currentChanged, this, [this](int index) { - auto *view = ui->tabs->view(index); - Q_CHECK_PTR(view); + connect(ui->tabs, &TabBar::currentChanged, this, [this](RekonqView *view) { + if (view == nullptr) { // last tab has been closed + close(); + return; + } ui->views->setCurrentWidget(view); ui->urlBar->setCurrentView(view); diff --git a/src/tabbar/tabbar.cpp b/src/tabbar/tabbar.cpp index 9bb05d43..fb5c0444 100644 --- a/src/tabbar/tabbar.cpp +++ b/src/tabbar/tabbar.cpp @@ -27,6 +27,15 @@ TabBar::TabBar(QWidget *parent) : QTabBar(parent) setMovable(true); setAcceptDrops(true); + connect(this, &QTabBar::currentChanged, this, [this](int index) { + if (index == -1) { + emit currentChanged(nullptr); + return; + } + auto view = m_views.at(index); + Q_ASSERT(!view.isNull()); + emit currentChanged(view); + }); connect(this, &QTabBar::tabMoved, this, [this](int from, int to) { m_views.move(from, to); }); connect(this, &QTabBar::tabCloseRequested, this, [this](int index) { @@ -595,4 +604,4 @@ void TabBar::unpinTab() SessionManager::self()->saveSession(); } -*/
\ No newline at end of file +*/ diff --git a/src/tabbar/tabbar.h b/src/tabbar/tabbar.h index 077255a4..793e2acf 100644 --- a/src/tabbar/tabbar.h +++ b/src/tabbar/tabbar.h @@ -36,6 +36,7 @@ public: } signals: + void currentChanged(RekonqView *view); void removeView(RekonqView *); protected: |