aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@digia.com>2013-05-28 14:14:07 +0200
committerMarco Bubke <marco.bubke@digia.com>2013-05-30 14:11:57 +0200
commitb97422b710be8489c3798febcc82dc8cc6b86c3d (patch)
tree1a80913bc447b570852666f88aa98a71d48b793e /share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
parent21c821806db143239d1824af42eac2dcb216c76f (diff)
QmlDesigner: Add container item support in node instances
Change-Id: I30e0d11346b8c63188d052b46656e7ede179e55d Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp')
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp44
1 files changed, 43 insertions, 1 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
index 12d6f39b86..ce1d1d87cd 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
@@ -56,11 +56,24 @@ QuickItemNodeInstance::~QuickItemNodeInstance()
{
}
+static bool isContentItem(QQuickItem *item, NodeInstanceServer *nodeInstanceServer)
+{
+
+ return item->parentItem()
+ && nodeInstanceServer->hasInstanceForObject(item->parentItem())
+ && nodeInstanceServer->instanceForObject(item->parentItem()).internalInstance()->contentItem() == item;
+}
+
static QTransform transformForItem(QQuickItem *item, NodeInstanceServer *nodeInstanceServer)
{
+ if (isContentItem(item, nodeInstanceServer))
+ return QTransform();
+
QTransform toParentTransform = DesignerSupport::parentTransform(item);
- if (item->parentItem() && !nodeInstanceServer->hasInstanceForObject(item->parentItem()))
+ if (item->parentItem() && !nodeInstanceServer->hasInstanceForObject(item->parentItem())) {
+
return transformForItem(item->parentItem(), nodeInstanceServer) * toParentTransform;
+ }
return toParentTransform;
}
@@ -109,6 +122,35 @@ QuickItemNodeInstance::Pointer QuickItemNodeInstance::create(QObject *object)
return instance;
}
+QQuickItem *QuickItemNodeInstance::contentItem() const
+{
+ return m_contentItem.data();
+}
+
+void QuickItemNodeInstance::doComponentComplete()
+{
+ GraphicalNodeInstance::doComponentComplete();
+
+ QQmlProperty contentItemProperty(quickItem(), "contentItem", engine());
+ if (contentItemProperty.isValid())
+ m_contentItem = contentItemProperty.read().value<QQuickItem*>();
+}
+
+QRectF QuickItemNodeInstance::contentItemBoundingBox() const
+{
+ if (contentItem()) {
+ QTransform contentItemTransform = DesignerSupport::parentTransform(contentItem());
+ return contentItemTransform.mapRect(contentItem()->boundingRect());
+ }
+
+ return QRectF();
+}
+
+QTransform QuickItemNodeInstance::contentItemTransform() const
+{
+ return DesignerSupport::parentTransform(contentItem());
+}
+
bool QuickItemNodeInstance::isQuickItem() const
{