diff options
Diffstat (limited to 'src/gui/kernel')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 17 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication_p.h | 3 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 2ca1ff0a44..8f9c2bd996 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -210,6 +210,8 @@ qreal QGuiApplicationPrivate::m_maxDevicePixelRatio = 0.0; static qreal fontSmoothingGamma = 1.7; +bool QGuiApplicationPrivate::quitOnLastWindowClosed = true; + extern void qRegisterGuiVariant(); #if QT_CONFIG(animation) extern void qRegisterGuiGetInterpolator(); @@ -3538,12 +3540,12 @@ void QGuiApplicationPrivate::notifyWindowIconChanged() void QGuiApplication::setQuitOnLastWindowClosed(bool quit) { - QCoreApplication::setQuitLockEnabled(quit); + QGuiApplicationPrivate::quitOnLastWindowClosed = quit; } bool QGuiApplication::quitOnLastWindowClosed() { - return QCoreApplication::isQuitLockEnabled(); + return QGuiApplicationPrivate::quitOnLastWindowClosed; } void QGuiApplicationPrivate::maybeLastWindowClosed(QWindow *closedWindow) @@ -3561,8 +3563,8 @@ void QGuiApplicationPrivate::maybeLastWindowClosed(QWindow *closedWindow) if (in_exec) emit q_func()->lastWindowClosed(); - if (QGuiApplication::quitOnLastWindowClosed()) - maybeQuit(); + if (quitOnLastWindowClosed && canQuitAutomatically()) + quitAutomatically(); } /*! @@ -3591,9 +3593,12 @@ bool QGuiApplicationPrivate::lastWindowClosed() const return true; } -bool QGuiApplicationPrivate::shouldQuit() +bool QGuiApplicationPrivate::canQuitAutomatically() { - return lastWindowClosed(); + if (quitOnLastWindowClosed && !lastWindowClosed()) + return false; + + return QCoreApplicationPrivate::canQuitAutomatically(); } void QGuiApplicationPrivate::quit() diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h index d43bfd755e..92d69f4a76 100644 --- a/src/gui/kernel/qguiapplication_p.h +++ b/src/gui/kernel/qguiapplication_p.h @@ -105,11 +105,12 @@ public: #if QT_CONFIG(commandlineparser) void addQtOptions(QList<QCommandLineOption> *options) override; #endif - virtual bool shouldQuit() override; + bool canQuitAutomatically() override; void quit() override; void maybeLastWindowClosed(QWindow *closedWindow); bool lastWindowClosed() const; + static bool quitOnLastWindowClosed; static void captureGlobalModifierState(QEvent *e); static Qt::KeyboardModifiers modifier_buttons; |