aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp2
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp12
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp7
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h1
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();