diff options
author | Lasse Holmstedt <lasse.holmstedt@nokia.com> | 2010-03-03 15:37:49 +0100 |
---|---|---|
committer | Lasse Holmstedt <lasse.holmstedt@nokia.com> | 2010-03-03 15:39:56 +0100 |
commit | 748361bb23be61788ad46895b8b514c1abe5b2f2 (patch) | |
tree | 0994e40ed3fcd5dcaaddbaca7bba57cd98f699e3 /src | |
parent | fe13a9faecc9ebd7aeb36f3bf4790e044411690a (diff) | |
download | qt-creator-748361bb23be61788ad46895b8b514c1abe5b2f2.tar.gz |
Fixed crash when opening files with bindings on "when" properties
Task-number: BAUHAUS-430
Reviewed-by: marco
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.cpp | 22 | ||||
-rw-r--r-- | src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.h | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.cpp b/src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.cpp index 469910db8a..3de24846a9 100644 --- a/src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.cpp +++ b/src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.cpp @@ -28,6 +28,8 @@ **************************************************************************/ #include "qmlstatenodeinstance.h" +#include "nodeabstractproperty.h" + #include <private/qdeclarativestategroup_p.h> namespace QmlDesigner { @@ -105,5 +107,25 @@ bool QmlStateNodeInstance::isStateActive() const return (stateGroup()->state() == property("name")); } +void QmlStateNodeInstance::setPropertyVariant(const QString &name, const QVariant &value) +{ + bool hasParent = modelNode().hasParentProperty(); + bool isStateOfTheRootModelNode = !hasParent || (hasParent && modelNode().parentProperty().parentModelNode().isRootNode()); + if (name == "when" && isStateOfTheRootModelNode) + return; + + ObjectNodeInstance::setPropertyVariant(name, value); +} + +void QmlStateNodeInstance::setPropertyBinding(const QString &name, const QString &expression) +{ + bool hasParent = modelNode().hasParentProperty(); + bool isStateOfTheRootModelNode = !hasParent || (hasParent && modelNode().parentProperty().parentModelNode().isRootNode()); + if (name == "when" && isStateOfTheRootModelNode) + return; + + ObjectNodeInstance::setPropertyBinding(name, expression); +} + } // namespace Internal } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.h b/src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.h index 7ac44daccb..db77a864f9 100644 --- a/src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.h +++ b/src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.h @@ -45,6 +45,9 @@ public: static Pointer create(const NodeMetaInfo &metaInfo, QDeclarativeContext *context, QObject *objectToBeWrapped); + void setPropertyVariant(const QString &name, const QVariant &value); + void setPropertyBinding(const QString &name, const QString &expression); + void activateState(); void deactivateState(); void refreshState(); |