From bb7bf6ca17061d835cf7980179ae0a607830048d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Tue, 28 Jan 2014 14:53:49 +0100 Subject: Make closeAllWindows() close real windows only. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QApplication::closeAllWindows() is documented to close all top-level windows. If the widget has WA_DontShowOnScreen set then that is a strong indication that this widget is, in fact, not a top-level window. [ChangeLog][QtWidgets][Mac] QWidgets embedded in QGraphicsProxyWidget are no longer sent close events when the app is closed. Task-number: QTBUG-33716 Change-Id: I0925ed67a2d2088ca9f950a4a43bc2729b88a86c Reviewed-by: Friedemann Kleint Reviewed-by: Morten Johan Sørvig --- src/widgets/kernel/qapplication.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 9bc1576dc6..c01b535067 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -1749,7 +1749,8 @@ bool QApplicationPrivate::tryCloseAllWidgetWindows(QWindowList *processedWindows QWidgetList list = QApplication::topLevelWidgets(); for (int i = 0; i < list.size(); ++i) { QWidget *w = list.at(i); - if (w->isVisible() && w->windowType() != Qt::Desktop && !w->data->is_closing) { + if (w->isVisible() && w->windowType() != Qt::Desktop && + !w->testAttribute(Qt::WA_DontShowOnScreen) && !w->data->is_closing) { QWindow *window = w->windowHandle(); if (!w->close()) // Qt::WA_DeleteOnClose may cause deletion. return false; -- cgit v1.2.3