summaryrefslogtreecommitdiff
path: root/share/qtcreator/qml/qmlpuppet
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@nokia.com>2011-07-19 20:17:35 +0200
committerMarco Bubke <marco.bubke@nokia.com>2011-07-20 13:06:12 +0200
commitd1b3b66d5a3b50796cf02ada60153ff588ac77f4 (patch)
treefe6aa5b55d3037d5c697d7bdeae216dda9a9d39a /share/qtcreator/qml/qmlpuppet
parent37f6d97f438f5ddb8a8e84573329f02f139f0fd1 (diff)
downloadqt-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')
-rw-r--r--share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp4
-rw-r--r--share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h1
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.cpp13
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/positionernodeinstance.h2
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qmlgraphicsitemnodeinstance.cpp7
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)