summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kernel')
-rw-r--r--src/gui/kernel/qguiapplication.cpp17
-rw-r--r--src/gui/kernel/qguiapplication_p.h3
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;