diff options
author | Marco Bubke <marco.bubke@digia.com> | 2013-05-28 14:14:07 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@digia.com> | 2013-05-30 14:11:57 +0200 |
commit | b97422b710be8489c3798febcc82dc8cc6b86c3d (patch) | |
tree | 1a80913bc447b570852666f88aa98a71d48b793e /share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp | |
parent | 21c821806db143239d1824af42eac2dcb216c76f (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.cpp | 44 |
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 { |