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();