From fb54a7626c9f38f000ac5eb90a91eb8763cae973 Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@nokia.com> Date: Thu, 25 Nov 2010 14:47:48 +0100 Subject: [PATCH] QmlDesigner.NodeInstances: More workarounds work again Hopefully Qml will be changed so that code can be removed. --- .../instances/qmlgraphicsitemnodeinstance.cpp | 83 ++++++++++--------- .../instances/qmlgraphicsitemnodeinstance.h | 5 +- 2 files changed, 47 insertions(+), 41 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp index 87f69036667..afb837373a9 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp @@ -56,7 +56,11 @@ QmlGraphicsItemNodeInstance::QmlGraphicsItemNodeInstance(QDeclarativeItem *item) : GraphicsObjectNodeInstance(item), m_hasHeight(false), m_hasWidth(false), - m_isResizable(true) + m_isResizable(true), + m_x(0.0), + m_y(0.0), + m_width(0.0), + m_height(0.0) { } @@ -98,7 +102,7 @@ QSizeF QmlGraphicsItemNodeInstance::size() const if (!m_hasWidth && implicitWidth // WORKAROUND && implicitWidth != qmlGraphicsItem()->width() - && !hasBindingProperty("width")) { + && !hasBindingForProperty("width")) { qmlGraphicsItem()->blockSignals(true); qmlGraphicsItem()->setWidth(implicitWidth); qmlGraphicsItem()->blockSignals(false); @@ -108,7 +112,7 @@ QSizeF QmlGraphicsItemNodeInstance::size() const if (!m_hasHeight && implicitWidth // WORKAROUND && implicitHeight != qmlGraphicsItem()->height() - && !hasBindingProperty("height")) { + && !hasBindingForProperty("height")) { qmlGraphicsItem()->blockSignals(true); qmlGraphicsItem()->setHeight(implicitHeight); qmlGraphicsItem()->blockSignals(false); @@ -142,7 +146,7 @@ QRectF QmlGraphicsItemNodeInstance::boundingRect() const if (!m_hasWidth && implicitWidth // WORKAROUND && implicitWidth != qmlGraphicsItem()->width() - && !hasBindingProperty("width")) { + && !hasBindingForProperty("width")) { qmlGraphicsItem()->blockSignals(true); qmlGraphicsItem()->setWidth(implicitWidth); qmlGraphicsItem()->blockSignals(false); @@ -152,7 +156,7 @@ QRectF QmlGraphicsItemNodeInstance::boundingRect() const if (!m_hasHeight && implicitWidth // WORKAROUND && implicitHeight != qmlGraphicsItem()->height() - && !hasBindingProperty("height")) { + && !hasBindingForProperty("height")) { qmlGraphicsItem()->blockSignals(true); qmlGraphicsItem()->setHeight(implicitHeight); qmlGraphicsItem()->blockSignals(false); @@ -188,6 +192,7 @@ void QmlGraphicsItemNodeInstance::setPropertyVariant(const QString &name, const return; // states are only set by us if (name == "height") { + m_height = value.toDouble(); if (value.isValid()) m_hasHeight = true; else @@ -195,12 +200,19 @@ void QmlGraphicsItemNodeInstance::setPropertyVariant(const QString &name, const } if (name == "width") { + m_width = value.toDouble(); if (value.isValid()) m_hasWidth = true; else m_hasWidth = false; } + if (name == "x") + m_x = value.toDouble(); + + if (name == "y") + m_y = value.toDouble(); + GraphicsObjectNodeInstance::setPropertyVariant(name, value); refresh(); @@ -216,7 +228,7 @@ void QmlGraphicsItemNodeInstance::setPropertyBinding(const QString &name, const QVariant QmlGraphicsItemNodeInstance::property(const QString &name) const { - if (name == "width" && !hasBindingProperty("width")) { + if (name == "width" && !hasBindingForProperty("width")) { double implicitWidth = qmlGraphicsItem()->implicitWidth(); if (!m_hasWidth && implicitWidth // WORKAROUND @@ -227,7 +239,7 @@ QVariant QmlGraphicsItemNodeInstance::property(const QString &name) const } } - if (name == "height" && !hasBindingProperty("height")) { + if (name == "height" && !hasBindingForProperty("height")) { double implicitHeight = qmlGraphicsItem()->implicitHeight(); if (!m_hasHeight && implicitHeight // WORKAROUND @@ -243,41 +255,22 @@ QVariant QmlGraphicsItemNodeInstance::property(const QString &name) const void QmlGraphicsItemNodeInstance::resetHorizontal() { - setPropertyVariant("x", 0.0); - setPropertyVariant("width", qmlGraphicsItem()->implicitWidth()); - -// if (modelNode().hasBindingProperty("x")) -// setPropertyBinding("x", modelNode().bindingProperty("x").expression()); -// else if (modelNode().hasVariantProperty("x")) -// setPropertyVariant("x", modelNode().variantProperty("x").value()); -// else -// setPropertyVariant("x", 0.0); - -// if (modelNode().hasBindingProperty("width")) -// setPropertyBinding("width", modelNode().bindingProperty("width").expression()); -// else if (modelNode().hasVariantProperty("width")) -// setPropertyVariant("width", modelNode().variantProperty("width").value()); -// else -// setPropertyVariant("width", qmlGraphicsItem()->implicitWidth()); + setPropertyVariant("x", m_x); + if (m_width > 0.0) { + setPropertyVariant("width", m_width); + } else { + setPropertyVariant("width", qmlGraphicsItem()->implicitWidth()); + } } void QmlGraphicsItemNodeInstance::resetVertical() { - setPropertyVariant("y", 0.0); - setPropertyVariant("height", qmlGraphicsItem()->implicitHeight()); -// if (modelNode().hasBindingProperty("y")) -// setPropertyBinding("y", modelNode().bindingProperty("y").expression()); -// else if (modelNode().hasVariantProperty("y")) -// setPropertyVariant("y", modelNode().variantProperty("y").value()); -// else -// setPropertyVariant("y", 0.0); - -// if (modelNode().hasBindingProperty("height")) -// setPropertyBinding("height", modelNode().bindingProperty("height").expression()); -// else if (modelNode().hasVariantProperty("height")) -// setPropertyVariant("height", modelNode().variantProperty("height").value()); -// else -// setPropertyVariant("height", qmlGraphicsItem()->implicitHeight()); + setPropertyVariant("y", m_y); + if (m_height > 0.0) { + setPropertyVariant("height", m_height); + } else { + setPropertyVariant("height", qmlGraphicsItem()->implicitWidth()); + } } static void repositioning(QDeclarativeItem *item) @@ -331,11 +324,21 @@ int QmlGraphicsItemNodeInstance::penWidth() const void QmlGraphicsItemNodeInstance::resetProperty(const QString &name) { - if (name == "height") + if (name == "height") { m_hasHeight = false; + m_height = 0.0; + } - if (name == "width") + if (name == "width") { m_hasWidth = false; + m_width = 0.0; + } + + if (name == "x") + m_x = 0.0; + + if (name == "y") + m_y = 0.0; if (name == "anchors.fill") { diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h index 4fe2178ae40..aa6e2c2bd61 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h +++ b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h @@ -85,7 +85,10 @@ private: //variables bool m_hasHeight; bool m_hasWidth; bool m_isResizable; - + double m_x; + double m_y; + double m_width; + double m_height; }; } -- GitLab