From a051b3f3cd3590893171907423080ab1638b7b00 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 24 Apr 2024 13:07:20 +0200 Subject: [PATCH] QmlDesigner: Add hints to hide node in navigator For effects we want to explcitly hide certain items. This patch ignores adjustments for project storage. Change-Id: I49748f851453c7c8d5001ca696d5a6b1b2969666 Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Reviewed-by: Tim Jenssen --- .../components/navigator/navigatortreemodel.cpp | 5 ++++- src/plugins/qmldesigner/designercore/include/nodehints.h | 1 + .../qmldesigner/designercore/metainfo/nodehints.cpp | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index d305753ead3..a29f1e26e66 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -320,7 +320,10 @@ QList NavigatorTreeModel::filteredList(const NodeListProperty &proper if (filter) { list.append(::Utils::filtered(nameFilteredList, [](const ModelNode &arg) { - const bool value = (QmlItemNode::isValidQmlItemNode(arg) || NodeHints::fromModelNode(arg).visibleInNavigator()) + const bool visibleInNavigator = NodeHints::fromModelNode(arg).visibleInNavigator(); + const bool hideInNavigator = NodeHints::fromModelNode(arg).hideInNavigator(); + const bool value = ((QmlItemNode::isValidQmlItemNode(arg) && !hideInNavigator) + || visibleInNavigator) && arg.id() != Constants::MATERIAL_LIB_ID; return value; })); diff --git a/src/plugins/qmldesigner/designercore/include/nodehints.h b/src/plugins/qmldesigner/designercore/include/nodehints.h index 9e67c2d99b3..33efc3a6312 100644 --- a/src/plugins/qmldesigner/designercore/include/nodehints.h +++ b/src/plugins/qmldesigner/designercore/include/nodehints.h @@ -47,6 +47,7 @@ public: QStringList visibleNonDefaultProperties() const; bool takesOverRenderingOfChildren() const; bool visibleInNavigator() const; + bool hideInNavigator() const; bool visibleInLibrary() const; QString forceNonDefaultProperty() const; QPair setParentProperty() const; diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp index 32e68a3cdc6..15e01e3af0d 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp @@ -320,6 +320,14 @@ bool NodeHints::visibleInNavigator() const return evaluateBooleanExpression("visibleInNavigator", false); } +bool NodeHints::hideInNavigator() const +{ + if (!isValid()) + return false; + + return evaluateBooleanExpression("hideInNavigator", false); +} + bool NodeHints::visibleInLibrary() const { auto flagIs = m_modelNode.metaInfo().visibleInLibrary();