diff options
author | Joni Poikelin <[email protected]> | 2025-01-28 14:23:18 +0200 |
---|---|---|
committer | Joni Poikelin <[email protected]> | 2025-01-29 12:24:01 +0200 |
commit | 9940f3f280473856858afafc6a4a4feab48c653f (patch) | |
tree | 4beefd8940b637377797ad306b9b28c68cd4d072 | |
parent | 07318c81a700b4d4a46c81ae2e4f17c6b1e501c0 (diff) |
Fix crash cases where window container tries to touch destroyed window
Fixes: QTBUG-133289
Pick-to: 6.9 6.8 6.5
Change-Id: I4b5a6ab12c32133d633e1bf11567119d52c1cb5a
Reviewed-by: Tor Arne Vestbø <[email protected]>
-rw-r--r-- | src/widgets/kernel/qwindowcontainer.cpp | 12 |
1 files 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); |