aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
index 685e608..f6072c3 100644
--- a/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
@@ -1,7 +1,7 @@
#include "mdiwindow.h"
#include "mdichild.h"
-#include "common/unused.h"
#include "mdiarea.h"
+#include "iconmanager.h"
#include "mainwindow.h"
#include "services/dbmanager.h"
#include "db/db.h"
@@ -170,7 +170,7 @@ void MdiWindow::closeEvent(QCloseEvent* e)
void MdiWindow::dbAboutToBeDisconnected(Db* db, bool& deny)
{
- if (!db || getMdiChild()->getAssociatedDb() != db)
+ if (!isAssociatedWithDb(db))
return;
if (MAINWINDOW->isClosingApp())
@@ -184,14 +184,13 @@ void MdiWindow::dbAboutToBeDisconnected(Db* db, bool& deny)
void MdiWindow::dbDisconnected(Db* db)
{
- if (!db || getMdiChild()->getAssociatedDb() != db)
+ if (!isAssociatedWithDb(db))
return;
if (MAINWINDOW->isClosingApp())
return;
- getMdiChild()->dbClosedFinalCleanup();
- close();
+ closeWindow();
}
bool MdiWindow::confirmClose()
@@ -208,6 +207,22 @@ bool MdiWindow::confirmClose()
return (msgBox.exec() == QMessageBox::Yes);
}
+
+void MdiWindow::closeWindow()
+{
+ getMdiChild()->dbClosedFinalCleanup();
+ MDIAREA->enforceCurrentTaskSelectionAfterWindowClose();
+ close();
+}
+
+bool MdiWindow::isAssociatedWithDb(Db* db)
+{
+ if (dbBeingClosed)
+ return true; // it was already confirmed by dbAboutToBeDisconnected() and any changes to the "db" member afterwards should not inflict decision change here
+
+ return db && getMdiChild()->getAssociatedDb() == db;
+}
+
bool MdiWindow::getCloseWithoutSessionSaving() const
{
return closeWithoutSessionSaving;