summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLasse Holmstedt <lasse.holmstedt@nokia.com>2010-03-03 15:37:49 +0100
committerLasse Holmstedt <lasse.holmstedt@nokia.com>2010-03-03 15:39:56 +0100
commit748361bb23be61788ad46895b8b514c1abe5b2f2 (patch)
tree0994e40ed3fcd5dcaaddbaca7bba57cd98f699e3 /src
parentfe13a9faecc9ebd7aeb36f3bf4790e044411690a (diff)
downloadqt-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.cpp22
-rw-r--r--src/plugins/qmldesigner/core/instances/qmlstatenodeinstance.h3
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();