diff options
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index f1edf52b0a..1bcbb3651b 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -101,6 +101,8 @@ int QGuiApplicationPrivate::mousePressX = 0; int QGuiApplicationPrivate::mousePressY = 0; int QGuiApplicationPrivate::mouse_double_click_distance = 5; +bool QGuiApplicationPrivate::quitOnLastWindowClosed = true; + static Qt::LayoutDirection layout_direction = Qt::LeftToRight; static bool force_reverse = false; @@ -914,6 +916,48 @@ void QGuiApplicationPrivate::notifyActiveWindowChange(QWindow *) { } + +/*! + \property QGuiApplication::quitOnLastWindowClosed + + \brief whether the application implicitly quits when the last window is + closed. + + The default is true. + + If this property is true, the applications quits when the last visible + primary window (i.e. window with no parent) is closed. + + \sa quit(), QWindow::close() + */ + +void QGuiApplication::setQuitOnLastWindowClosed(bool quit) +{ + QGuiApplicationPrivate::quitOnLastWindowClosed = quit; +} + + + +bool QGuiApplication::quitOnLastWindowClosed() +{ + return QGuiApplicationPrivate::quitOnLastWindowClosed; +} + + + +void QGuiApplicationPrivate::emitLastWindowClosed() +{ + if (qGuiApp && qGuiApp->d_func()->in_exec) { + if (QGuiApplicationPrivate::quitOnLastWindowClosed) { + // get ready to quit, this event might be removed if the + // event loop is re-entered, however + QGuiApplication::postEvent(qApp, new QEvent(QEvent::Quit)); + } + emit qGuiApp->lastWindowClosed(); + } +} + + /*! \property QGuiApplication::layoutDirection \brief the default layout direction for this application |