diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index c3b0a6f09bb..c5fb5fd1b97 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -130,6 +130,7 @@ NodeInstanceServer::NodeInstanceServer(NodeInstanceClientInterface *nodeInstance connect(m_childrenChangeEventFilter.data(), &Internal::ChildrenChangeEventFilter::childrenChanged, this, &NodeInstanceServer::emitParentChanged); nodeInstanceServerInstance = this; Internal::QmlPrivateGate::registerNotifyPropertyChangeCallBack(notifyPropertyChangeCallBackPointer); + Internal::QmlPrivateGate::registerFixResourcePathsForObjectCallBack(); } NodeInstanceServer::~NodeInstanceServer() diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp index 67d6a1287b0..2af7f6cd871 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp @@ -790,6 +790,10 @@ ComponentCompleteDisabler::~ComponentCompleteDisabler() DesignerSupport::enableComponentComplete(); } +void registerFixResourcePathsForObjectCallBack() +{ +} + } // namespace QmlPrivateGate } // namespace Internal } // namespace QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.h b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.h index bd17a68a1ee..f1066b3d5b7 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.h +++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.h @@ -127,6 +127,8 @@ public: void registerNotifyPropertyChangeCallBack(void (*callback)(QObject *, const PropertyName &)); + void registerFixResourcePathsForObjectCallBack(); + } // namespace QmlPrivateGate } // namespace Internal } // namespace QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp index 8edf6693653..3daafd5af10 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp @@ -137,6 +137,25 @@ QVariant fixResourcePaths(const QVariant &value) } +void fixResourcePathsForObject(QObject *object) +{ + if (qgetenv("QMLDESIGNER_RC_PATHS").isEmpty()) + return; + + PropertyNameList propertyNameList = propertyNameListForWritableProperties(object); + + foreach (const PropertyName &propertyName, propertyNameList) { + QQmlProperty property(object, QString::fromUtf8(propertyName), QQmlEngine::contextForObject(object)); + + const QVariant value = property.read(); + const QVariant fixedValue = fixResourcePaths(value); + if (value != fixedValue) { + property.write(fixedValue); + } + } +} + + QObject *createComponent(const QUrl &componentUrl, QQmlContext *context) { return QQuickDesignerSupportItems::createComponent(componentUrl, context); @@ -396,6 +415,11 @@ ComponentCompleteDisabler::~ComponentCompleteDisabler() DesignerSupport::enableComponentComplete(); } +void registerFixResourcePathsForObjectCallBack() +{ + QQuickDesignerSupportItems::registerFixResourcePathsForObjectCallBack(&fixResourcePathsForObject); +} + } // namespace QmlPrivateGate } // namespace Internal } // namespace QmlDesigner