diff options
| author | 2023-04-30 18:30:36 -0400 | |
|---|---|---|
| committer | 2023-04-30 18:30:36 -0400 | |
| commit | 3565aad630864ecdbe53fdaa501ea708555b3c7c (patch) | |
| tree | c743e4ad0bad39ebdb2f514c7cc52d34a257ebbe /SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp | |
| parent | 1fdc150116cad39aae5c5da407c3312b47a59e3a (diff) | |
New upstream version 3.4.4+dfsg.upstream/3.4.4+dfsg
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp | 25 |
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; |
