diff --git a/src/tools/qml2puppet/qml2puppet/instances/quickitemnodeinstance.cpp b/src/tools/qml2puppet/qml2puppet/instances/quickitemnodeinstance.cpp index f2fbb97abab..a9c49b96611 100644 --- a/src/tools/qml2puppet/qml2puppet/instances/quickitemnodeinstance.cpp +++ b/src/tools/qml2puppet/qml2puppet/instances/quickitemnodeinstance.cpp @@ -277,11 +277,25 @@ static bool layerEnabledAndEffect(QQuickItem *item) return false; } +static QRectF getBoundingRectForEffect(QQuickItem *item) +{ + const auto siblings = item->parentItem()->childItems(); + for (auto sibling : siblings) { + QQmlProperty prop(sibling, "__effect"); + if (prop.read().toBool()) { + prop = QQmlProperty(sibling, "source"); + if (prop.read().value() == item) + return ServerNodeInstance::effectAdjustedBoundingRect(sibling); + } + } + return ServerNodeInstance::effectAdjustedBoundingRect(item); +} + QRectF QuickItemNodeInstance::boundingRect() const { if (quickItem()) { - if (layerEnabledAndEffect(quickItem())) { - return ServerNodeInstance::effectAdjustedBoundingRect(quickItem()); + if (layerEnabledAndEffect(quickItem()) && quickItem()->parentItem()) { + return getBoundingRectForEffect(quickItem()); } else if (quickItem()->clip()) { return quickItem()->boundingRect(); } else {