From ec3260e5c7107490fd7c8e196fed82e6ca188dca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 7 Sep 2021 12:57:39 +0200 Subject: Close QWidget during destruction via QWindow Ensures that the QWindow and platform machinery is involved in closing the widget. Change-Id: I4ca4ed0b1b31b835d62d2fc0a2158e34e15d710e Reviewed-by: Qt CI Bot Reviewed-by: Volker Hilsheimer --- src/widgets/kernel/qwidget.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/widgets') diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 069e77c1cb..fcb18d7c18 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -1466,7 +1466,7 @@ QWidget::~QWidget() if (isWindow() && isVisible() && internalWinId()) { QT_TRY { - d->handleClose(QWidgetPrivate::CloseNoEvent); + d->close(); } QT_CATCH(...) { // if we're out of memory, at least hide the window. QT_TRY { @@ -8396,6 +8396,10 @@ bool QWidgetPrivate::handleClose(CloseMode mode) QPointer parentWidget = (q->parentWidget() && !QObjectPrivate::get(q->parentWidget())->wasDeleted) ? q->parentWidget() : nullptr; bool quitOnClose = q->testAttribute(Qt::WA_QuitOnClose); + + if (data.in_destructor) + mode = CloseNoEvent; + if (mode != CloseNoEvent) { QCloseEvent e; if (mode == CloseWithSpontaneousEvent) -- cgit v1.2.3