aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2021-06-15 14:10:23 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-06-15 20:32:34 +0000
commite7b598072de53ccda1ea9caf6bb5a03401cfde33 (patch)
tree7bbd76e38ce56da5903046fdee087a4ec3b89914
parent93b593e9aec8260864d182e8a154f0948d609652 (diff)
QQuickPopup: finalizeExitTransition before deleting internals
Otherwise they get re-created and leak. Change-Id: Ib6af70bed196d3b32faa1df7f40063a38e321987 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 5f3eec895639aeadc187a641a293895f52b51147) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/quicktemplates2/qquickpopup.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index 44d0d8f4..ebb85c12 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -875,16 +875,17 @@ QQuickPopup::~QQuickPopup()
Q_D(QQuickPopup);
setParentItem(nullptr);
d->popupItem->ungrabShortcut();
- delete d->popupItem;
- d->popupItem = nullptr;
- delete d->positioner;
- d->positioner = nullptr;
// If the popup is destroyed before the exit transition finishes,
// the necessary cleanup (removing modal dimmers that block mouse events,
// emitting closed signal, etc.) won't happen. That's why we do it manually here.
if (d->transitionState == QQuickPopupPrivate::ExitTransition && d->transitionManager.isRunning())
d->finalizeExitTransition();
+
+ delete d->popupItem;
+ d->popupItem = nullptr;
+ delete d->positioner;
+ d->positioner = nullptr;
}
/*!