From 17f5fd0ff18438baaf5978c9ef693e2b553f3375 Mon Sep 17 00:00:00 2001 From: Bur0k <bur0k-git@bur0k.de> Date: Wed, 10 Jan 2018 01:59:55 +0100 Subject: [PATCH] Added a confirmation Dialog when trying to close a tab --- src/widgets/notebook.cpp | 9 +++++++++ src/widgets/notebook.hpp | 3 +++ 2 files changed, 12 insertions(+) diff --git a/src/widgets/notebook.cpp b/src/widgets/notebook.cpp index c204e5d0f..ba62041c9 100644 --- a/src/widgets/notebook.cpp +++ b/src/widgets/notebook.cpp @@ -31,6 +31,7 @@ Notebook::Notebook(Window *parent, bool _showButtons, const std::string &setting , userButton(this) , showButtons(_showButtons) , tabs(fS("{}/tabs", this->settingRoot)) + , closeConfirmDialog(this) { this->connect(&this->settingsButton, SIGNAL(clicked()), this, SLOT(settingsButtonClicked())); this->connect(&this->userButton, SIGNAL(clicked()), this, SLOT(usersButtonClicked())); @@ -47,6 +48,11 @@ Notebook::Notebook(Window *parent, bool _showButtons, const std::string &setting settingsManager.hideUserButton.connectSimple([this](auto) { this->performLayout(); }); this->loadTabs(); + + closeConfirmDialog.setText("Are you sure to close this tab?"); + closeConfirmDialog.setIcon(QMessageBox::Icon::Question); + closeConfirmDialog.setStandardButtons(QMessageBox::Close | QMessageBox::Abort); + closeConfirmDialog.setDefaultButton(QMessageBox::Close); } SplitContainer *Notebook::addNewPage() @@ -74,6 +80,9 @@ SplitContainer *Notebook::addPage(const std::string &uuid, bool select) void Notebook::removePage(SplitContainer *page) { + if (closeConfirmDialog.exec() != QMessageBox::Close) + return; + int index = this->pages.indexOf(page); if (this->pages.size() == 1) { diff --git a/src/widgets/notebook.hpp b/src/widgets/notebook.hpp index 8cbe3bc85..b137beb79 100644 --- a/src/widgets/notebook.hpp +++ b/src/widgets/notebook.hpp @@ -6,6 +6,7 @@ #include "widgets/splitcontainer.hpp" #include <QList> +#include <QMessageBox> #include <QWidget> namespace chatterino { @@ -73,6 +74,8 @@ private: void loadTabs(); + QMessageBox closeConfirmDialog; + public: void save(); };