From cdc0f72ecfb0f8ccb9cf17222abe9476eda8ce8c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 3 Nov 2022 17:19:48 +0100 Subject: QmlDesigner: Add option for layer.effect when creating effects (cherry picked from commit 3726caa5de1d5c250028ef6a3eaf07a5e05cc57c) Task-number: QDS-8162 Change-Id: I9b98d4ae264f4b6a703eb5bfdeb6e1fb546e5a37 Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/model/qmlitemnode.cpp | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 09a94719f4..e9055c1933 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -39,6 +39,8 @@ #include "modelmerger.h" #include "rewritingexception.h" +#include + #include #include #include @@ -181,12 +183,22 @@ QmlItemNode QmlItemNode::createQmlItemNodeFromFont(AbstractView *view, return newQmlItemNode; } +static bool useLayerEffect() +{ + QSettings *settings = Core::ICore::settings(); + const QString layerEffectEntry = "QML/Designer/UseLayerEffect"; + + return settings->value(layerEffectEntry, true).toBool(); +} + QmlItemNode QmlItemNode::createQmlItemNodeForEffect(AbstractView *view, const QmlItemNode &parentNode, const QString &effectName) { QmlItemNode newQmlItemNode; + const bool layerEffect = useLayerEffect(); + QmlDesigner::Import import = Import::createLibraryImport("Effects." + effectName, "1.0"); try { if (!view->model()->hasImport(import, true, true)) @@ -197,11 +209,17 @@ QmlItemNode QmlItemNode::createQmlItemNodeForEffect(AbstractView *view, TypeName type(effectName.toUtf8()); newQmlItemNode = QmlItemNode(view->createModelNode(type, 1, 0)); - NodeAbstractProperty parentProperty = parentNode.defaultNodeAbstractProperty(); + NodeAbstractProperty parentProperty = layerEffect + ? parentNode.nodeAbstractProperty("layer.effect") + : parentNode.defaultNodeAbstractProperty(); parentProperty.reparentHere(newQmlItemNode); - newQmlItemNode.modelNode().bindingProperty("source").setExpression("parent"); - newQmlItemNode.modelNode().bindingProperty("anchors.fill").setExpression("parent"); + if (!layerEffect) { + newQmlItemNode.modelNode().bindingProperty("source").setExpression("parent"); + newQmlItemNode.modelNode().bindingProperty("anchors.fill").setExpression("parent"); + } else { + parentNode.modelNode().variantProperty("layer.enabled").setValue(true); + } QTC_ASSERT(newQmlItemNode.isValid(), return QmlItemNode()); -- cgit v1.2.3