aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2021-01-26 09:20:36 +0100
committerTarja Sundqvist <tarja.sundqvist@qt.io>2021-04-18 20:51:51 +0300
commit1089f8f226d546aef3b032a2f4391e08a3afa48d (patch)
treedaf3bdcedba3b525532b13a3a0884b128b359ef7
parente5d149d9839516c371aea6da36fda98663e137f0 (diff)
Prevent infinite recursion in QQuickItemPrivate::itemToWindowTransform
Not sure what the XXX TODO was for, but maybe some error checking... This infinite recursion seems to happen in some pathological case, but not normally, of course. Pick-to: 6.1 Change-Id: I6ad56e4b3002d151b2e6007669c46f0507d7f0e0 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 463ac8b43d0df8eea8efda7fc240fbb7a313010b)
-rw-r--r--src/quick/items/qquickitem.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 0ec28b843a..bbacf23d16 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -3071,8 +3071,9 @@ Returns a transform that maps points from item space into window space.
*/
QTransform QQuickItemPrivate::itemToWindowTransform() const
{
- // XXX todo
- QTransform rv = parentItem?QQuickItemPrivate::get(parentItem)->itemToWindowTransform():QTransform();
+ // item's parent must not be itself, otherwise calling itemToWindowTransform() on it is infinite recursion
+ Q_ASSERT(!parentItem || QQuickItemPrivate::get(parentItem) != this);
+ QTransform rv = parentItem ? QQuickItemPrivate::get(parentItem)->itemToWindowTransform() : QTransform();
itemToParentTransform(rv);
return rv;
}