From 6aa535e39f79548934a5c3a142e13bb09333296a Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Tue, 13 Dec 2011 15:25:18 +0100 Subject: Don't re-parent ShaderEffect source items. ShaderEffect and ShaderEffectSource used to set themselves as parent of and hide source items that don't already have a parent. This was done in order to make sure the source items got a canvas. This patch sets the canvas of the source items without re-parenting. Task-number: QTBUG-23069 Change-Id: I24d56e6eb970590bca3adff7a61459d25e4983a0 Reviewed-by: Gunnar Sletta --- src/quick/items/qquickitem.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/quick/items/qquickitem.cpp') diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index e9dc737e8a..54ce3162f7 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -1892,6 +1892,8 @@ void QQuickItem::setParentItem(QQuickItem *parentItem) QQuickCanvasPrivate::DontChangeFocusProperty); op->removeChild(this); + } else if (d->canvas) { + QQuickCanvasPrivate::get(d->canvas)->parentlessItems.remove(this); } d->parentItem = parentItem; @@ -2119,6 +2121,8 @@ void QQuickItemPrivate::initCanvas(InitializationState *state, QQuickCanvas *c) c->hoverItems.removeAll(q); if (itemNodeInstance) c->cleanup(itemNodeInstance); + if (!parentItem) + c->parentlessItems.remove(q); } canvas = c; @@ -2142,6 +2146,9 @@ void QQuickItemPrivate::initCanvas(InitializationState *state, QQuickCanvas *c) childState = &_dummy; } + if (!parentItem && canvas) + QQuickCanvasPrivate::get(canvas)->parentlessItems.insert(q); + for (int ii = 0; ii < childItems.count(); ++ii) { QQuickItem *child = childItems.at(ii); QQuickItemPrivate::get(child)->initCanvas(childState, c); -- cgit v1.2.3