QmlDesigner.propertyEditor: fix notification singals for

This patch fixes the notification signals for PropertyEditorValue
There a two different signals now for the qml part and the backend
This avoids subtle bugs
This commit is contained in:
Thomas Hartmann
2010-04-21 14:49:49 +02:00
parent 600ed1ebcc
commit f7985a2ea8
2 changed files with 11 additions and 7 deletions

View File

@@ -109,6 +109,7 @@ void PropertyEditorValue::setValueWithEmit(const QVariant &value)
setValue(newValue); setValue(newValue);
m_isBound = false; m_isBound = false;
emit valueChanged(name(), value); emit valueChanged(name(), value);
emit valueChangedQml();
emit isBoundChanged(); emit isBoundChanged();
} }
} }
@@ -121,7 +122,8 @@ void PropertyEditorValue::setValue(const QVariant &value)
m_value = value; m_value = value;
emit valueChanged(QString(), value); if (m_value.isValid())
emit valueChangedQml();
emit isBoundChanged(); emit isBoundChanged();
} }
@@ -156,7 +158,8 @@ bool PropertyEditorValue::isInSubState() const
bool PropertyEditorValue::isBound() const bool PropertyEditorValue::isBound() const
{ {
return modelNode().isValid() && modelNode().property(name()).isValid() && modelNode().property(name()).isBindingProperty(); const QmlDesigner::QmlObjectNode objectNode(modelNode());
return objectNode.isValid() && objectNode.hasBindingProperty(name());
} }
bool PropertyEditorValue::isInModel() const bool PropertyEditorValue::isInModel() const
@@ -206,8 +209,8 @@ PropertyEditorNodeWrapper* PropertyEditorValue::complexNode()
void PropertyEditorValue::resetValue() void PropertyEditorValue::resetValue()
{ {
if (m_value.isValid()) { if (m_value.isValid() || isBound()) {
setValue(QVariant()); m_value = QVariant();
m_isBound = false; m_isBound = false;
emit valueChanged(name(), QVariant()); emit valueChanged(name(), QVariant());
} }

View File

@@ -80,10 +80,10 @@ private:
class PropertyEditorValue : public QObject class PropertyEditorValue : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(QVariant value READ value WRITE setValueWithEmit NOTIFY valueChanged) Q_PROPERTY(QVariant value READ value WRITE setValueWithEmit NOTIFY valueChangedQml)
Q_PROPERTY(QString expression READ expression WRITE setExpressionWithEmit NOTIFY expressionChanged FINAL) Q_PROPERTY(QString expression READ expression WRITE setExpressionWithEmit NOTIFY expressionChanged FINAL)
Q_PROPERTY(bool isInModel READ isInModel NOTIFY valueChanged FINAL) Q_PROPERTY(bool isInModel READ isInModel NOTIFY valueChangedQml FINAL)
Q_PROPERTY(bool isInSubState READ isInSubState NOTIFY valueChanged FINAL) Q_PROPERTY(bool isInSubState READ isInSubState NOTIFY valueChangedQml FINAL)
Q_PROPERTY(bool isBound READ isBound NOTIFY isBoundChanged FINAL) Q_PROPERTY(bool isBound READ isBound NOTIFY isBoundChanged FINAL)
Q_PROPERTY(bool isValid READ isValid NOTIFY isValid FINAL) Q_PROPERTY(bool isValid READ isValid NOTIFY isValid FINAL)
Q_PROPERTY(QString name READ name FINAL) Q_PROPERTY(QString name READ name FINAL)
@@ -124,6 +124,7 @@ public slots:
signals: signals:
void valueChanged(const QString &name, const QVariant&); void valueChanged(const QString &name, const QVariant&);
void valueChangedQml();
void expressionChanged(const QString &name); void expressionChanged(const QString &name);