tst_QGraphicsWidget: fix memleak in implicitMouseGrabber()

If a QGraphicsItem is removed from a QGraphicsScene, it also gets
un-parent-ed, and the caller of removeItem() is responsible for
deleting the item henceforth. The test function neglected that,
leaking the object.

To fix, use a scope-guard to defer deletion of the object to the exit
from the test function. This is the minimally-invasive fix.

Amends the start of the public history.

Pick-to: 6.8 6.5 5.15
Change-Id: Ie4f9be232674bba583f4a59908e42de096930136
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit 156bd559231f06136bc368236675688b3c93d02a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2025-03-28 09:16:34 +01:00 committed by Qt Cherry-pick Bot
parent 6489fc1e52
commit 4a9782f628

View File

@ -2290,6 +2290,7 @@ void tst_QGraphicsWidget::implicitMouseGrabber()
QCOMPARE(widget2UngrabEventSpy.count(), 0);
scene.removeItem(widget);
const auto reaper = qScopeGuard([=] { delete widget; });
QCOMPARE(widgetUngrabEventSpy.count(), 4);
QCOMPARE(scene.mouseGrabberItem(), nullptr);
}