diff options
author | Marco Bubke <marco.bubke@nokia.com> | 2011-07-19 20:17:35 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@nokia.com> | 2011-07-20 13:06:12 +0200 |
commit | d1b3b66d5a3b50796cf02ada60153ff588ac77f4 (patch) | |
tree | fe6aa5b55d3037d5c697d7bdeae216dda9a9d39a /share/qtcreator/qml/qmlpuppet | |
parent | 37f6d97f438f5ddb8a8e84573329f02f139f0fd1 (diff) | |
download | qt-creator-d1b3b66d5a3b50796cf02ada60153ff588ac77f4.tar.gz |
QmlDesigner: Fix positioner handling
Change-Id: I519bbbfee939d4568a0de5bbe5c01912a08c6fb1
Reviewed-on: http://codereview.qt.nokia.com/1848
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet')
5 files changed, 27 insertions, 0 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp index 15786c92a4..cbb58d1e4e 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp @@ -906,6 +906,10 @@ void ObjectNodeInstance::setInPositioner(bool isInPositioner) m_isInPositioner = isInPositioner; } +void ObjectNodeInstance::refreshPositioner() +{ +} + void ObjectNodeInstance::updateAnchors() { } diff --git a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h index f374b44b26..68198df190 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h @@ -165,6 +165,7 @@ public: virtual bool isMovable() const; bool isInPositioner() const; void setInPositioner(bool isInPositioner); + virtual void refreshPositioner(); bool hasBindingForProperty(const QString &name, bool *hasChanged = 0) const; diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.cpp index 7643bc1c6f..a6dfa634f6 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.cpp @@ -84,5 +84,18 @@ PositionerNodeInstance::Pointer PositionerNodeInstance::create(QObject *object) return instance; } + +QDeclarativeBasePositioner *PositionerNodeInstance::positioner() const +{ + Q_ASSERT(qobject_cast<QDeclarativeBasePositioner*>(object())); + return static_cast<QDeclarativeBasePositioner*>(object()); +} + +void PositionerNodeInstance::refreshPositioner() +{ + bool success = QMetaObject::invokeMethod(positioner(), "prePositioning"); + Q_ASSERT(success); +} + } } // namespace QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.h b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.h index 1a0406e274..cd3794e6e4 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.h @@ -57,9 +57,11 @@ public: bool isResizable() const; + void refreshPositioner(); protected: PositionerNodeInstance(QDeclarativeBasePositioner *item); + QDeclarativeBasePositioner *positioner() const; }; } // namespace Internal diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.cpp index df0e8ef9bc..ef73311773 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.cpp @@ -154,6 +154,8 @@ void QmlGraphicsItemNodeInstance::setPropertyVariant(const QString &name, const GraphicsObjectNodeInstance::setPropertyVariant(name, value); refresh(); + if (isInPositioner()) + parentInstance()->refreshPositioner(); } void QmlGraphicsItemNodeInstance::setPropertyBinding(const QString &name, const QString &expression) @@ -325,6 +327,9 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name) } GraphicsObjectNodeInstance::resetProperty(name); + + if (isInPositioner()) + parentInstance()->refreshPositioner(); } void QmlGraphicsItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParentInstance, const QString &oldParentProperty, const ObjectNodeInstance::Pointer &newParentInstance, const QString &newParentProperty) @@ -353,6 +358,8 @@ void QmlGraphicsItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &ol } refresh(); + if (isInPositioner()) + parentInstance()->refreshPositioner(); } QDeclarativeAnchors::Anchor anchorLineFlagForName(const QString &name) |