diff options
4 files changed, 21 insertions, 1 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp index dbffe2f4fb..abcf74f39c 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp @@ -417,7 +417,7 @@ QImage Qt5NodeInstanceServer::grabItem(QQuickItem *item) if (instance.isValid()) renderBoundingRect = instance.boundingRect(); else - renderBoundingRect = item->boundingRect(); + renderBoundingRect = ServerNodeInstance::effectAdjustedBoundingRect(item); // Hide immediate children that have instances and are QQuickItems so we get only // the parent item's content, as compositing is handled on creator side. diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp index 403ba9fbe9..4399f669c7 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp @@ -329,11 +329,23 @@ QRectF QuickItemNodeInstance::contentItemBoundingBox() const return QRectF(); } +static bool layerEnabledAndEffect(QQuickItem *item) +{ + QQuickItemPrivate *pItem = QQuickItemPrivate::get(item); + + if (pItem && pItem->layer() && pItem->layer()->enabled() && pItem->layer()->effect()) + return true; + + return false; +} + QRectF QuickItemNodeInstance::boundingRect() const { if (quickItem()) { if (quickItem()->clip()) { return quickItem()->boundingRect(); + } else if (layerEnabledAndEffect(quickItem())) { + return ServerNodeInstance::effectAdjustedBoundingRect(quickItem()); } else { return boundingRectWithStepChilds(quickItem()); } diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp index 97b5031260..6b2ba78340 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp @@ -135,6 +135,13 @@ bool ServerNodeInstance::isSubclassOf(QObject *object, const QByteArray &superTy return Internal::QmlPrivateGate::isSubclassOf(object, superTypeName); } +QRectF ServerNodeInstance::effectAdjustedBoundingRect(QQuickItem *item) +{ + if (item) + return item->boundingRect().adjusted(-40, -40, 40, 40); + return {}; +} + void ServerNodeInstance::setModifiedFlag(bool b) { m_nodeInstance->setModifiedFlag(b); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h index 7fd6453daa..0e5ca3547d 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h @@ -180,6 +180,7 @@ public: QStringList allStates() const; static bool isSubclassOf(QObject *object, const QByteArray &superTypeName); + static QRectF effectAdjustedBoundingRect(QQuickItem *item); void setModifiedFlag(bool b); void updateDirtyNodeRecursive(); |