diff --git a/share/qtcreator/qmldesigner/effectComposerQmlSources/BlurHelper.qml b/share/qtcreator/qmldesigner/effectComposerQmlSources/BlurHelper.qml index 80577e932a1..733f0a15a0b 100644 --- a/share/qtcreator/qmldesigner/effectComposerQmlSources/BlurHelper.qml +++ b/share/qtcreator/qmldesigner/effectComposerQmlSources/BlurHelper.qml @@ -4,6 +4,7 @@ // This file should match the BlurHelper.qml in qtquickdesigner repository, except for shader paths import QtQuick +import EffectComposerPropertyData Item { id: rootItem @@ -20,8 +21,8 @@ Item { visible: false layer.enabled: true layer.smooth: true - vertexShader: g_propertyData?.blur_vs_path ?? "" - fragmentShader: g_propertyData?.blur_fs_path ?? "" + vertexShader: GlobalPropertyData?.blur_vs_path ?? "" + fragmentShader: GlobalPropertyData?.blur_fs_path ?? "" } QtObject { diff --git a/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerPreview.qml b/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerPreview.qml index 920d02a304b..7c7f167e07b 100644 --- a/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerPreview.qml +++ b/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerPreview.qml @@ -7,6 +7,7 @@ import HelperWidgets as HelperWidgets import StudioControls as StudioControls import StudioTheme as StudioTheme import EffectComposerBackend +import EffectComposerPropertyData Column { id: root @@ -298,8 +299,8 @@ Column { BlurHelper { id: blurHelper source: source - property int blurMax: g_propertyData?.blur_helper_max_level ?? 64 - property real blurMultiplier: g_propertyData?.blurMultiplier ?? 0 + property int blurMax: GlobalPropertyData?.blur_helper_max_level ?? 64 + property real blurMultiplier: GlobalPropertyData?.blurMultiplier ?? 0 } Item { diff --git a/src/plugins/effectcomposer/compositionnode.cpp b/src/plugins/effectcomposer/compositionnode.cpp index 1792952c3c9..ba3dd38cfcd 100644 --- a/src/plugins/effectcomposer/compositionnode.cpp +++ b/src/plugins/effectcomposer/compositionnode.cpp @@ -210,7 +210,7 @@ void CompositionNode::parse(const QString &effectName, const QString &qenPath, c for (const QJsonValueConstRef &prop : jsonProps) { const auto uniform = new Uniform(effectName, prop.toObject(), qenPath); m_uniformsModel.addUniform(uniform); - g_propertyData.insert(uniform->name(), uniform->value()); + g_propertyData()->insert(uniform->name(), uniform->value()); if (uniform->type() == Uniform::Type::Define) { // Changing defines requires rebaking the shaders connect(uniform, &Uniform::uniformValueChanged, this, &CompositionNode::rebakeRequested); @@ -335,7 +335,7 @@ void CompositionNode::openCodeEditor() void CompositionNode::addUniform(const QVariantMap &data) { const auto uniform = new Uniform({}, QJsonObject::fromVariantMap(data), {}); - g_propertyData.insert(uniform->name(), uniform->value()); + g_propertyData()->insert(uniform->name(), uniform->value()); m_uniformsModel.addUniform(uniform); updateAreUniformsInUse(true); } @@ -346,7 +346,7 @@ void CompositionNode::updateUniform(int index, const QVariantMap &data) const auto uniform = new Uniform({}, QJsonObject::fromVariantMap(data), {}); - g_propertyData.insert(uniform->name(), uniform->value()); + g_propertyData()->insert(uniform->name(), uniform->value()); m_uniformsModel.updateUniform(index, uniform); updateAreUniformsInUse(true); } diff --git a/src/plugins/effectcomposer/effectcomposermodel.cpp b/src/plugins/effectcomposer/effectcomposermodel.cpp index b4dd306ad4d..e7c9d5e707a 100644 --- a/src/plugins/effectcomposer/effectcomposermodel.cpp +++ b/src/plugins/effectcomposer/effectcomposermodel.cpp @@ -2547,8 +2547,8 @@ QString EffectComposerModel::getQmlComponentString(bool localFiles) s += l3 + "id: blurHelper\n"; s += l3 + "source: rootItem.source\n"; int blurMax = 32; - if (g_propertyData.contains("BLUR_HELPER_MAX_LEVEL")) - blurMax = g_propertyData["BLUR_HELPER_MAX_LEVEL"].toInt(); + if (g_propertyData()->contains("BLUR_HELPER_MAX_LEVEL")) + blurMax = g_propertyData()->value("BLUR_HELPER_MAX_LEVEL").toInt(); s += l3 + QString("property int blurMax: %1\n").arg(blurMax); s += l3 + "property real blurMultiplier: rootItem.blurMultiplier\n"; s += l2 + "}\n"; diff --git a/src/plugins/effectcomposer/effectcomposeruniformsmodel.cpp b/src/plugins/effectcomposer/effectcomposeruniformsmodel.cpp index 1a48cee7b99..47b37f08cf0 100644 --- a/src/plugins/effectcomposer/effectcomposeruniformsmodel.cpp +++ b/src/plugins/effectcomposer/effectcomposeruniformsmodel.cpp @@ -68,10 +68,10 @@ bool EffectComposerUniformsModel::setData(const QModelIndex &index, const QVaria updatedValue = QUrl::fromLocalFile(path).toString(); uniform->setValue(updatedValue); - g_propertyData.insert(uniform->name(), updatedValue); + g_propertyData()->insert(uniform->name(), updatedValue); } else { uniform->setValue(value); - g_propertyData.insert(uniform->name(), value); + g_propertyData()->insert(uniform->name(), value); } emit dataChanged(index, index, {role}); diff --git a/src/plugins/effectcomposer/effectcomposerwidget.cpp b/src/plugins/effectcomposer/effectcomposerwidget.cpp index 838b41ca7ae..2c953bc79bd 100644 --- a/src/plugins/effectcomposer/effectcomposerwidget.cpp +++ b/src/plugins/effectcomposer/effectcomposerwidget.cpp @@ -100,11 +100,12 @@ EffectComposerWidget::EffectComposerWidget(EffectComposerView *view) QmlDesigner::QmlDesignerPlugin::trackWidgetFocusTime(this, QmlDesigner::Constants::EVENT_EFFECTCOMPOSER_TIME); - m_quickWidget->rootContext()->setContextProperty("g_propertyData", &g_propertyData); + qmlRegisterSingletonInstance( + "EffectComposerPropertyData", 1, 0, "GlobalPropertyData", g_propertyData()); QString blurPath = "file:" + EffectUtils::nodesSourcesPath() + "/common/"; - g_propertyData.insert(QString("blur_vs_path"), QString(blurPath + "bluritems.vert.qsb")); - g_propertyData.insert(QString("blur_fs_path"), QString(blurPath + "bluritems.frag.qsb")); + g_propertyData()->insert("blur_vs_path", QString(blurPath + "bluritems.vert.qsb")); + g_propertyData()->insert("blur_fs_path", QString(blurPath + "bluritems.frag.qsb")); auto map = m_quickWidget->registerPropertyMap("EffectComposerBackend"); map->setProperties({{"effectComposerNodesModel", QVariant::fromValue(effectComposerNodesModel().data())}, diff --git a/src/plugins/effectcomposer/propertyhandler.cpp b/src/plugins/effectcomposer/propertyhandler.cpp index b440410a0bf..44e04ce810f 100644 --- a/src/plugins/effectcomposer/propertyhandler.cpp +++ b/src/plugins/effectcomposer/propertyhandler.cpp @@ -3,8 +3,14 @@ #include "propertyhandler.h" +#include + namespace EffectComposer { -QQmlPropertyMap g_propertyData; +Q_GLOBAL_STATIC(QQmlPropertyMap, globalEffectComposerPropertyData) +QQmlPropertyMap *g_propertyData() +{ + return globalEffectComposerPropertyData(); +} } diff --git a/src/plugins/effectcomposer/propertyhandler.h b/src/plugins/effectcomposer/propertyhandler.h index 96bc49f78e0..5d685a1f948 100644 --- a/src/plugins/effectcomposer/propertyhandler.h +++ b/src/plugins/effectcomposer/propertyhandler.h @@ -3,13 +3,16 @@ #pragma once -#include +#include + +QT_BEGIN_NAMESPACE +class QQmlPropertyMap; +QT_END_NAMESPACE namespace EffectComposer { // This will be used for binding dynamic properties // changes between C++ and QML. -extern QQmlPropertyMap g_propertyData; - +QQmlPropertyMap *g_propertyData(); } diff --git a/src/plugins/effectcomposer/uniform.cpp b/src/plugins/effectcomposer/uniform.cpp index 149db291a70..aad3fc571b4 100644 --- a/src/plugins/effectcomposer/uniform.cpp +++ b/src/plugins/effectcomposer/uniform.cpp @@ -47,7 +47,7 @@ Uniform::Uniform(const QString &effectName, const QJsonObject &propObj, const QS m_enableMipmap = getBoolValue(propObj.value("enableMipmap"), false); // Update the mipmap property QString mipmapProperty = mipmapPropertyName(m_name); - g_propertyData[mipmapProperty] = m_enableMipmap; + g_propertyData()->insert(mipmapProperty, m_enableMipmap); } QString controlType = propObj.value("controlType").toString();