QmlPuppet: Adding keepBindingFromGettingDeleted to QmlPrivateGate

Change-Id: I51d0d29939b6fbd3fc309c092654f373abd8f179
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
This commit is contained in:
Thomas Hartmann
2015-05-19 16:48:47 +02:00
committed by Thomas Hartmann
parent c6047e06e6
commit f3abe73956
5 changed files with 25 additions and 2 deletions

View File

@@ -425,8 +425,8 @@ void ObjectNodeInstance::setPropertyVariant(const PropertyName &name, const QVar
nodeInstanceServer()->removeFilePropertyFromFileSystemWatcher(object(), name, path); nodeInstanceServer()->removeFilePropertyFromFileSystemWatcher(object(), name, path);
} }
if (hasValidResetBinding(name)) { //#### if (hasValidResetBinding(name)) {
QQmlPropertyPrivate::setBinding(property, 0, QQmlPropertyPrivate::BypassInterceptor | QQmlPropertyPrivate::DontRemoveBinding); QmlPrivateGate::keepBindingFromGettingDeleted(object(), context(), name);
} }
bool isWritten = property.write(convertSpecialCharacter(adjustedValue)); bool isWritten = property.write(convertSpecialCharacter(adjustedValue));

View File

@@ -113,6 +113,14 @@ void DesignerCustomObjectData::setPropertyBinding(QObject *object, QQmlContext *
data->setPropertyBinding(context, propertyName, expression); 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() void DesignerCustomObjectData::populateResetHashes()
{ {
PropertyNameList propertyNameList = QmlPrivateGate::propertyNameListForWritableProperties(object()); 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 QmlPrivateGate
} // namespace Internal } // namespace Internal

View File

@@ -58,6 +58,7 @@ public:
static bool hasValidResetBinding(QObject *object, const PropertyName &propertyName); static bool hasValidResetBinding(QObject *object, const PropertyName &propertyName);
static bool hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged); 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 setPropertyBinding(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QString &expression);
static void keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName);
private: private:
DesignerCustomObjectData(QObject *object); DesignerCustomObjectData(QObject *object);
@@ -69,6 +70,7 @@ private:
QQmlAbstractBinding *getResetBinding(const PropertyName &propertyName) const; QQmlAbstractBinding *getResetBinding(const PropertyName &propertyName) const;
bool hasBindingForProperty(QQmlContext *context, const PropertyName &propertyName, bool *hasChanged) const; bool hasBindingForProperty(QQmlContext *context, const PropertyName &propertyName, bool *hasChanged) const;
void setPropertyBinding(QQmlContext *context, const PropertyName &propertyName, const QString &expression); void setPropertyBinding(QQmlContext *context, const PropertyName &propertyName, const QString &expression);
void keepBindingFromGettingDeleted(QQmlContext *context, const PropertyName &propertyName);
QObject *m_object; QObject *m_object;
QHash<PropertyName, QVariant> m_resetValueHash; QHash<PropertyName, QVariant> m_resetValueHash;

View File

@@ -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() ComponentCompleteDisabler::ComponentCompleteDisabler()
{ {
DesignerSupport::disableComponentComplete(); DesignerSupport::disableComponentComplete();

View File

@@ -88,6 +88,7 @@ public:
bool hasValidResetBinding(QObject *object, const PropertyName &propertyName); bool hasValidResetBinding(QObject *object, const PropertyName &propertyName);
bool hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged); bool hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged);
void setPropertyBinding(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QString &expression); 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); void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInstanceServer);