diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2021-01-26 09:20:36 +0100 |
---|---|---|
committer | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2021-04-18 20:51:51 +0300 |
commit | 1089f8f226d546aef3b032a2f4391e08a3afa48d (patch) | |
tree | daf3bdcedba3b525532b13a3a0884b128b359ef7 | |
parent | e5d149d9839516c371aea6da36fda98663e137f0 (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.cpp | 5 |
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; } |