From c9f9804edf9d15a251b90724eff4b0587ebbe018 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 12 Apr 2024 17:08:14 +0200 Subject: [PATCH] QmlDesigner: Fix getting the bounding rectangle for an effect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When getting the bounding rect for an effect we actually have to find the item with the effect first. Change-Id: I4e20f77c6b8dca9d58ccffb42d8b803f57317cb9 Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Henning Gründl --- .../instances/quickitemnodeinstance.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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 {