From 04f29127a14b83dc3b2d8189e947b68e9286e15f Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@digia.com>
Date: Thu, 15 Aug 2013 15:23:21 +0200
Subject: [PATCH] QmlDesigner: Fix transformation bug for tab widgets

Change-Id: Idc33ddf04f0b6fc317aeb5ed72fd7164ba174ab4
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
---
 .../instances/quickitemnodeinstance.cpp       | 22 ++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
index ce1d1d87cd4..ba8e2e3245e 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
@@ -79,8 +79,10 @@ static QTransform transformForItem(QQuickItem *item, NodeInstanceServer *nodeIns
 }
 
 QTransform QuickItemNodeInstance::transform() const
-{
-    return transformForItem(quickItem(), nodeInstanceServer());
+{   if (quickItem()->parentItem())
+        return DesignerSupport::parentTransform(quickItem());;
+
+    return QTransform();
 }
 
 
@@ -146,9 +148,23 @@ QRectF QuickItemNodeInstance::contentItemBoundingBox() const
     return QRectF();
 }
 
+static QTransform contentItemTransformForItem(QQuickItem *item, NodeInstanceServer *nodeInstanceServer)
+{
+    QTransform toParentTransform = DesignerSupport::parentTransform(item);
+    if (item->parentItem() && !nodeInstanceServer->hasInstanceForObject(item->parentItem())) {
+
+        return transformForItem(item->parentItem(), nodeInstanceServer) * toParentTransform;
+    }
+
+    return toParentTransform;
+}
+
 QTransform QuickItemNodeInstance::contentItemTransform() const
 {
-    return DesignerSupport::parentTransform(contentItem());
+    if (contentItem())
+        return contentItemTransformForItem(contentItem(), nodeInstanceServer());
+
+    return QTransform();
 }
 
 
-- 
GitLab