summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-09-07 12:57:39 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-09-13 21:21:04 +0200
commitec3260e5c7107490fd7c8e196fed82e6ca188dca (patch)
treefb062fae85f3a10384194306b192404e33aec3c9 /src/widgets
parentf06f39779c11cabc9b4fc281f38c80edb65bd86a (diff)
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 <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/kernel/qwidget.cpp6
1 files changed, 5 insertions, 1 deletions
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<QWidget> 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)