aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:31:18 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:31:18 -0400
commit4de57f628bc74f00ba1885e91c84ea07c5405d8f (patch)
tree5d91900751e826d491ff1b2ebc571a787e84f864 /SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp
parent74d881cefa9097e58e129e37b9c44d680d8c7dfe (diff)
parent3565aad630864ecdbe53fdaa501ea708555b3c7c (diff)
Update upstream source from tag 'upstream/3.4.4+dfsg'
Update to upstream version '3.4.4+dfsg' with Debian dir 482614bd23f0ef52dabc9803477204ad88e917ed
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;