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();
 };