From 199d1e14c5bf0e7910baec625ca0f77606c5bb43 Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Tue, 23 Mar 2010 14:03:18 +0100
Subject: [PATCH] Fix binding bug for width and height.

Task-Id: BAUHAUS-472
---
 .../instances/qmlgraphicsitemnodeinstance.cpp    | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/plugins/qmldesigner/core/instances/qmlgraphicsitemnodeinstance.cpp b/src/plugins/qmldesigner/core/instances/qmlgraphicsitemnodeinstance.cpp
index ad65bccdfd8..eb9ad087de2 100644
--- a/src/plugins/qmldesigner/core/instances/qmlgraphicsitemnodeinstance.cpp
+++ b/src/plugins/qmldesigner/core/instances/qmlgraphicsitemnodeinstance.cpp
@@ -98,7 +98,8 @@ QSizeF QmlGraphicsItemNodeInstance::size() const
         double implicitWidth = qmlGraphicsItem()->implicitWidth();
         if (!m_hasWidth
             && implicitWidth // WORKAROUND
-            && implicitWidth != qmlGraphicsItem()->width()) {
+            && implicitWidth != qmlGraphicsItem()->width()
+            && !modelNode().hasBindingProperty("width")) {
             qmlGraphicsItem()->blockSignals(true);
             qmlGraphicsItem()->setWidth(implicitWidth);
             qmlGraphicsItem()->blockSignals(false);
@@ -107,7 +108,8 @@ QSizeF QmlGraphicsItemNodeInstance::size() const
         double implicitHeight = qmlGraphicsItem()->implicitHeight();
         if (!m_hasHeight
             && implicitWidth // WORKAROUND
-            && implicitHeight != qmlGraphicsItem()->height()) {
+            && implicitHeight != qmlGraphicsItem()->height()
+            && !modelNode().hasBindingProperty("height")) {
             qmlGraphicsItem()->blockSignals(true);
             qmlGraphicsItem()->setHeight(implicitHeight);
             qmlGraphicsItem()->blockSignals(false);
@@ -138,7 +140,8 @@ QRectF QmlGraphicsItemNodeInstance::boundingRect() const
         double implicitWidth = qmlGraphicsItem()->implicitWidth();
         if (!m_hasWidth
             && implicitWidth // WORKAROUND
-            && implicitWidth != qmlGraphicsItem()->width()) {
+            && implicitWidth != qmlGraphicsItem()->width()
+            && !modelNode().hasBindingProperty("width")) {
             qmlGraphicsItem()->blockSignals(true);
             qmlGraphicsItem()->setWidth(implicitWidth);
             qmlGraphicsItem()->blockSignals(false);
@@ -147,7 +150,8 @@ QRectF QmlGraphicsItemNodeInstance::boundingRect() const
         double implicitHeight = qmlGraphicsItem()->implicitHeight();
         if (!m_hasHeight
             && implicitWidth // WORKAROUND
-            && implicitHeight != qmlGraphicsItem()->height()) {
+            && implicitHeight != qmlGraphicsItem()->height()
+            && !modelNode().hasBindingProperty("height")) {
             qmlGraphicsItem()->blockSignals(true);
             qmlGraphicsItem()->setHeight(implicitHeight);
             qmlGraphicsItem()->blockSignals(false);
@@ -215,7 +219,7 @@ void QmlGraphicsItemNodeInstance::setPropertyBinding(const QString &name, const
 
 QVariant QmlGraphicsItemNodeInstance::property(const QString &name) const
 {
-    if (name == "width" && modelNode().isValid()) {
+    if (name == "width" && modelNode().isValid() && !modelNode().hasBindingProperty("width")) {
         double implicitWidth = qmlGraphicsItem()->implicitWidth();
         if (!m_hasWidth
             && implicitWidth // WORKAROUND
@@ -223,7 +227,7 @@ QVariant QmlGraphicsItemNodeInstance::property(const QString &name) const
             qmlGraphicsItem()->setWidth(implicitWidth);
     }
 
-    if (name == "height" && modelNode().isValid()) {
+    if (name == "height" && modelNode().isValid() && !modelNode().hasBindingProperty("height")) {
         double implicitHeight = qmlGraphicsItem()->implicitHeight();
         if (!m_hasHeight
             && implicitHeight // WORKAROUND
-- 
GitLab