From 0479ef1c1c7e574e5579f4afdf698d802118f181 Mon Sep 17 00:00:00 2001 From: Joni Poikelin Date: Tue, 28 Jan 2025 14:23:18 +0200 Subject: [PATCH] Fix crash cases where window container tries to touch destroyed window MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: QTBUG-133289 Pick-to: 6.8 6.5 Change-Id: I4b5a6ab12c32133d633e1bf11567119d52c1cb5a Reviewed-by: Tor Arne Vestbø (cherry picked from commit 9940f3f280473856858afafc6a4a4feab48c653f) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/kernel/qwindowcontainer.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/widgets/kernel/qwindowcontainer.cpp b/src/widgets/kernel/qwindowcontainer.cpp index e8e8299d805..721bffebf2b 100644 --- a/src/widgets/kernel/qwindowcontainer.cpp +++ b/src/widgets/kernel/qwindowcontainer.cpp @@ -424,7 +424,9 @@ void QWindowContainer::parentWasChanged(QWidget *parent) void QWindowContainer::parentWasMoved(QWidget *parent) { if (QWindowContainerPrivate *d = QWindowContainerPrivate::get(parent)) { - if (d->window->parent()) + if (!d->window) + return; + else if (d->window->parent()) d->updateGeometry(); } qwindowcontainer_traverse(parent, parentWasMoved); @@ -433,7 +435,9 @@ void QWindowContainer::parentWasMoved(QWidget *parent) void QWindowContainer::parentWasRaised(QWidget *parent) { if (QWindowContainerPrivate *d = QWindowContainerPrivate::get(parent)) { - if (d->window->parent()) + if (!d->window) + return; + else if (d->window->parent()) d->window->raise(); } qwindowcontainer_traverse(parent, parentWasRaised); @@ -442,7 +446,9 @@ void QWindowContainer::parentWasRaised(QWidget *parent) void QWindowContainer::parentWasLowered(QWidget *parent) { if (QWindowContainerPrivate *d = QWindowContainerPrivate::get(parent)) { - if (d->window->parent()) + if (!d->window) + return; + else if (d->window->parent()) d->window->lower(); } qwindowcontainer_traverse(parent, parentWasLowered);