forked from qt-creator/qt-creator
QmlPuppet: Adding keepBindingFromGettingDeleted to QmlPrivateGate
Change-Id: I51d0d29939b6fbd3fc309c092654f373abd8f179 Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
This commit is contained in:
committed by
Thomas Hartmann
parent
c6047e06e6
commit
f3abe73956
@@ -425,8 +425,8 @@ void ObjectNodeInstance::setPropertyVariant(const PropertyName &name, const QVar
|
||||
nodeInstanceServer()->removeFilePropertyFromFileSystemWatcher(object(), name, path);
|
||||
}
|
||||
|
||||
if (hasValidResetBinding(name)) { //####
|
||||
QQmlPropertyPrivate::setBinding(property, 0, QQmlPropertyPrivate::BypassInterceptor | QQmlPropertyPrivate::DontRemoveBinding);
|
||||
if (hasValidResetBinding(name)) {
|
||||
QmlPrivateGate::keepBindingFromGettingDeleted(object(), context(), name);
|
||||
}
|
||||
|
||||
bool isWritten = property.write(convertSpecialCharacter(adjustedValue));
|
||||
|
@@ -113,6 +113,14 @@ void DesignerCustomObjectData::setPropertyBinding(QObject *object, QQmlContext *
|
||||
data->setPropertyBinding(context, propertyName, expression);
|
||||
}
|
||||
|
||||
void DesignerCustomObjectData::keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName)
|
||||
{
|
||||
DesignerCustomObjectData* data = get(object);
|
||||
|
||||
if (data)
|
||||
data->keepBindingFromGettingDeleted(context, propertyName);
|
||||
}
|
||||
|
||||
void DesignerCustomObjectData::populateResetHashes()
|
||||
{
|
||||
PropertyNameList propertyNameList = QmlPrivateGate::propertyNameListForWritableProperties(object());
|
||||
@@ -245,6 +253,13 @@ void DesignerCustomObjectData::setPropertyBinding(QQmlContext *context, const Pr
|
||||
}
|
||||
}
|
||||
|
||||
void DesignerCustomObjectData::keepBindingFromGettingDeleted(QQmlContext *context, const PropertyName &propertyName)
|
||||
{
|
||||
QQmlProperty property(object(), propertyName, context);
|
||||
QQmlPropertyPrivate::setBinding(property, 0, QQmlPropertyPrivate::BypassInterceptor
|
||||
| QQmlPropertyPrivate::DontRemoveBinding);
|
||||
}
|
||||
|
||||
|
||||
} // namespace QmlPrivateGate
|
||||
} // namespace Internal
|
||||
|
@@ -58,6 +58,7 @@ public:
|
||||
static bool hasValidResetBinding(QObject *object, const PropertyName &propertyName);
|
||||
static bool hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged);
|
||||
static void setPropertyBinding(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QString &expression);
|
||||
static void keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName);
|
||||
|
||||
private:
|
||||
DesignerCustomObjectData(QObject *object);
|
||||
@@ -69,6 +70,7 @@ private:
|
||||
QQmlAbstractBinding *getResetBinding(const PropertyName &propertyName) const;
|
||||
bool hasBindingForProperty(QQmlContext *context, const PropertyName &propertyName, bool *hasChanged) const;
|
||||
void setPropertyBinding(QQmlContext *context, const PropertyName &propertyName, const QString &expression);
|
||||
void keepBindingFromGettingDeleted(QQmlContext *context, const PropertyName &propertyName);
|
||||
|
||||
QObject *m_object;
|
||||
QHash<PropertyName, QVariant> m_resetValueHash;
|
||||
|
@@ -510,6 +510,11 @@ void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInsta
|
||||
}
|
||||
}
|
||||
|
||||
void keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName)
|
||||
{
|
||||
DesignerCustomObjectData::keepBindingFromGettingDeleted(object, context, propertyName);
|
||||
}
|
||||
|
||||
ComponentCompleteDisabler::ComponentCompleteDisabler()
|
||||
{
|
||||
DesignerSupport::disableComponentComplete();
|
||||
|
@@ -88,6 +88,7 @@ public:
|
||||
bool hasValidResetBinding(QObject *object, const PropertyName &propertyName);
|
||||
bool hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged);
|
||||
void setPropertyBinding(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QString &expression);
|
||||
void keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName);
|
||||
|
||||
void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInstanceServer);
|
||||
|
||||
|
Reference in New Issue
Block a user