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>
bb10
Tor Arne Vestbø 2021-09-07 12:57:39 +02:00
parent f06f39779c
commit ec3260e5c7
1 changed files with 5 additions and 1 deletions

View File

@ -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)