diff --git a/src/libs/qmleditorwidgets/contextpanewidget.cpp b/src/libs/qmleditorwidgets/contextpanewidget.cpp index 4754f93a1e2..e37783d0410 100644 --- a/src/libs/qmleditorwidgets/contextpanewidget.cpp +++ b/src/libs/qmleditorwidgets/contextpanewidget.cpp @@ -362,6 +362,7 @@ bool ContextPaneWidget::setType(const QStringList &types) } if (types.contains("Rectangle")) { m_currentWidget = m_rectangleWidget; + m_rectangleWidget->enabableGradientEditing(!isPropertyChanges()); m_rectangleWidget->show(); resize(sizeHint()); return true; diff --git a/src/libs/qmleditorwidgets/contextpanewidget.h b/src/libs/qmleditorwidgets/contextpanewidget.h index 9a42240b023..b11d3dc422c 100644 --- a/src/libs/qmleditorwidgets/contextpanewidget.h +++ b/src/libs/qmleditorwidgets/contextpanewidget.h @@ -99,6 +99,10 @@ public: bool setType(const QStringList &types); bool acceptsType(const QStringList &types); QWidget* currentWidget() const { return m_currentWidget; } + void setIsPropertyChanges(bool b) + { m_isPropertyChanges = b; } + bool isPropertyChanges() const + { return m_isPropertyChanges; } public slots: void onTogglePane(); @@ -143,6 +147,7 @@ private: QString m_colorName; QPoint m_originalPos; bool m_pinned; + bool m_isPropertyChanges; }; } //QmlDesigner diff --git a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp index 3f19f0a4d36..0786ce6b3cd 100644 --- a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp +++ b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp @@ -45,7 +45,8 @@ ContextPaneWidgetRectangle::ContextPaneWidgetRectangle(QWidget *parent) : QWidget(parent), ui(new Ui::ContextPaneWidgetRectangle), m_gradientLineDoubleClicked(false), - m_gradientTimer(-1) + m_gradientTimer(-1), + m_enableGradientEditing(true) { ui->setupUi(this); @@ -112,7 +113,7 @@ void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyRe ui->gradientLabel->setEnabled(true); ui->gradientLine->setEnabled(true); - if (m_hasGradient) { + if (m_hasGradient && isGradientEditingEnabled()) { bool isBound; ui->colorGradient->setChecked(true); ui->gradientLine->setGradient(propertyReader->parseGradient("gradient", &isBound)); @@ -122,8 +123,8 @@ void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyRe ui->colorColorButton->setColor("invalidColor"); } } else { - //ui->gradientLine->setEnabled(false); - //ui->gradientLabel->setEnabled(false); + ui->gradientLine->setEnabled(false); + ui->gradientLabel->setEnabled(false); setColor(); } @@ -132,6 +133,12 @@ void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyRe m_gradientTimer = -1; } + ui->colorGradient->setEnabled(isGradientEditingEnabled()); +} + +void ContextPaneWidgetRectangle::enabableGradientEditing(bool b) +{ + m_enableGradientEditing = b; } void ContextPaneWidgetRectangle::onBorderColorButtonToggled(bool flag) @@ -194,22 +201,27 @@ void ContextPaneWidgetRectangle::onGradientClicked() stops.append(QGradientStop(0, ui->colorColorButton->convertedColor())); stops.append(QGradientStop(1, Qt::white)); gradient.setStops(stops); + ui->gradientLine->setEnabled(true); ui->gradientLine->setGradient(gradient); } } void ContextPaneWidgetRectangle::onColorNoneClicked() { - if (ui->colorNone->isChecked()) { + if (ui->colorNone->isChecked()) { + ui->colorGradient->setEnabled(isGradientEditingEnabled()); emit removeAndChangeProperty("gradient", "color", "transparent", true); } + ui->colorGradient->setEnabled(isGradientEditingEnabled()); } void ContextPaneWidgetRectangle::onColorSolidClicked() { if (ui->colorSolid->isChecked()) { + ui->gradientLine->setEnabled(false); emit removeAndChangeProperty("gradient", "color", "\"black\"", true); } + ui->colorGradient->setEnabled(isGradientEditingEnabled()); } void ContextPaneWidgetRectangle::onBorderNoneClicked() diff --git a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.h b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.h index a2af64f008f..fd8f1c21cd1 100644 --- a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.h +++ b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.h @@ -57,6 +57,7 @@ public: explicit ContextPaneWidgetRectangle(QWidget *parent = 0); ~ContextPaneWidgetRectangle(); void setProperties(QmlJS::PropertyReader *propertyReader); + void enabableGradientEditing(bool); public slots: void onBorderColorButtonToggled(bool); @@ -82,12 +83,15 @@ protected: private: void setColor(); + bool isGradientEditingEnabled() const + { return m_enableGradientEditing; } Ui::ContextPaneWidgetRectangle *ui; bool m_hasBorder; bool m_hasGradient; bool m_none; bool m_gradientLineDoubleClicked; int m_gradientTimer; + bool m_enableGradientEditing; }; } //QmlDesigner diff --git a/src/plugins/qmljseditor/quicktoolbar.cpp b/src/plugins/qmljseditor/quicktoolbar.cpp index f302013ff71..458a193a496 100644 --- a/src/plugins/qmljseditor/quicktoolbar.cpp +++ b/src/plugins/qmljseditor/quicktoolbar.cpp @@ -147,6 +147,8 @@ void QuickToolBar::apply(TextEditor::BaseTextEditor *editor, Document::Ptr docum const Interpreter::ObjectValue *scopeObject = document->bind()->findQmlObject(node); + bool isPropertyChanges = false; + if (!lookupContext.isNull() && scopeObject) { m_prototypes.clear(); foreach (const Interpreter::ObjectValue *object, @@ -155,6 +157,7 @@ void QuickToolBar::apply(TextEditor::BaseTextEditor *editor, Document::Ptr docum } if (m_prototypes.contains("PropertyChanges")) { + isPropertyChanges = true; const Interpreter::ObjectValue *targetObject = getPropertyChangesTarget(node, lookupContext); m_prototypes.clear(); if (targetObject) { @@ -230,7 +233,9 @@ void QuickToolBar::apply(TextEditor::BaseTextEditor *editor, Document::Ptr docum offset = QPoint(400 - reg.boundingRect().width() + 10 ,0); QPoint p3 = editor->editorWidget()->mapToParent(editor->editorWidget()->viewport()->mapToParent(reg.boundingRect().topRight()) + offset); p2.setX(p1.x()); - contextWidget()->setType(m_prototypes); + contextWidget()->setIsPropertyChanges(isPropertyChanges); + if (!update) + contextWidget()->setType(m_prototypes); if (!update) contextWidget()->activate(p3 , p1, p2, QuickToolBarSettings::get().pinContextPane); else