From c1850305e67d0cbad08a8bd43168a264ce996f1e Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 2 Aug 2011 11:44:29 +0200 Subject: [PATCH] QmlDesigner.propertyEditor: crash fix We did not handle the case that a gradient is a binding. Change-Id: Ib6892420c6d5de7522cb2b051ff2b046ab781c14 Reviewed-on: http://codereview.qt.nokia.com/2503 Reviewed-by: Thomas Hartmann --- .../propertyeditor/Qt/RectangleColorGroupBox.qml | 6 +++++- .../components/propertyeditor/gradientlineqmladaptor.cpp | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/RectangleColorGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/Qt/RectangleColorGroupBox.qml index 79dafeccdba..14edc0afb37 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/Qt/RectangleColorGroupBox.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/Qt/RectangleColorGroupBox.qml @@ -48,6 +48,8 @@ GroupBox { property variant colorAlpha: colorGroupBox.alpha property bool hasGradient: backendValues.gradient.isInModel + property bool gradientIsBinding: backendValues.gradient.isBound + onHasGradientChanged: { print("onGradientInModelChanged") if (backendValues.gradient.isInModel) { @@ -75,7 +77,7 @@ GroupBox { isSetup = true; gradientLine.active = false; colorGroupBox.setSolidButtonChecked = true; - if (backendValues.gradient.isInModel) { + if (backendValues.gradient.isInModel && !gradientIsBinding) { colorGroupBox.setGradientButtonChecked = true; gradientLine.active = true; gradientLine.setupGradient(); @@ -117,6 +119,8 @@ GroupBox { } ColorGroupBox { + enabled: !gradientIsBinding + opacity: gradientIsBinding ? 0.7 : 1 id: colorGroupBox caption: qsTr("Rectangle") finished: finishedNotify diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientlineqmladaptor.cpp b/src/plugins/qmldesigner/components/propertyeditor/gradientlineqmladaptor.cpp index 25668cd25e7..3f356ff317c 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientlineqmladaptor.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientlineqmladaptor.cpp @@ -85,6 +85,9 @@ void GradientLineQmlAdaptor::setupGradient() if (!modelNode.isValid()) return; + if (modelNode.hasBindingProperty(gradientName())) + return; + if (modelNode.hasProperty(gradientName())) { //gradient exists ModelNode gradientNode = modelNode.nodeProperty(gradientName()).modelNode();