aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2019-04-29 12:09:12 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2019-04-29 10:10:08 +0000
commit63a646af9b9b4828ad9638f0a8e7477b67575851 (patch)
treebbf7a08d494e57715b12e1ddcfa0c5fb9772dca5 /src
parentee68989e2a2f467f5c5ebcd4bda78cc333d25ced (diff)
QmlDesigner: Add hints for visibility in library and navigator
Change-Id: If5d3a4c34a0010cc5a826296aa428a5915142659 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp5
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp2
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatorview.cpp15
-rw-r--r--src/plugins/qmldesigner/designercore/include/nodehints.h2
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp13
5 files changed, 31 insertions, 6 deletions
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
index 72ee60fd92..ae53990cf9 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
@@ -30,6 +30,7 @@
#include "itemlibrarysection.h"
#include <model.h>
+#include <nodehints.h>
#include <nodemetainfo.h>
#include <utils/algorithm.h>
@@ -184,8 +185,10 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
qDebug() << Utils::transform(metaInfo.superClasses(), &NodeMetaInfo::typeName);
}
+ bool forceVisiblity = valid && NodeHints::fromItemLibraryEntry(entry).visibleInLibrary();
+
if (valid
- && isItem //We can change if the navigator does support pure QObjects
+ && (isItem || forceVisiblity) //We can change if the navigator does support pure QObjects
&& (entry.requiredImport().isEmpty()
|| model->hasImport(entryToImport(entry), true, true))) {
QString itemSectionName = entry.category();
diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
index e98e7c3379..126fed8e68 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
@@ -252,7 +252,7 @@ QList<ModelNode> filteredList(const NodeListProperty &property, bool filter)
return property.toModelNodeList();
return Utils::filtered(property.toModelNodeList(), [] (const ModelNode &arg) {
- return QmlItemNode::isValidQmlItemNode(arg);
+ return QmlItemNode::isValidQmlItemNode(arg) || NodeHints::fromModelNode(arg).visibleInNavigator();
});
}
diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
index c8fc4e5b54..07434102fc 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
@@ -48,6 +48,7 @@
#include <utils/utilsicons.h>
#include <QHeaderView>
+#include <QTimer>
static inline void setScenePos(const QmlDesigner::ModelNode &modelNode,const QPointF &pos)
@@ -147,15 +148,21 @@ void NavigatorView::modelAttached(Model *model)
{
AbstractView::modelAttached(model);
- m_currentModelInterface->setFilter(
- DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool());
-
QTreeView *treeView = treeWidget();
- treeView->expandAll();
treeView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
treeView->header()->resizeSection(1,26);
treeView->setIndentation(20);
+
+ m_currentModelInterface->setFilter(false);
+
+
+ QTimer::singleShot(0, this, [this, treeView]() {
+ m_currentModelInterface->setFilter(
+ DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool());
+ treeView->expandAll();
+ });
+
#ifdef _LOCK_ITEMS_
treeView->header()->resizeSection(2,20);
#endif
diff --git a/src/plugins/qmldesigner/designercore/include/nodehints.h b/src/plugins/qmldesigner/designercore/include/nodehints.h
index 982c3a80b0..1e8b7d99e4 100644
--- a/src/plugins/qmldesigner/designercore/include/nodehints.h
+++ b/src/plugins/qmldesigner/designercore/include/nodehints.h
@@ -65,6 +65,8 @@ public:
bool canBeReparentedTo(const ModelNode &potenialParent);
QString indexPropertyForStackedContainer() const;
bool takesOverRenderingOfChildren() const;
+ bool visibleInNavigator() const;
+ bool visibleInLibrary() const;
QHash<QString, QString> hints() const;
static NodeHints fromModelNode(const ModelNode &modelNode);
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp
index 28d7c0a205..be7623323d 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp
@@ -201,6 +201,19 @@ bool NodeHints::takesOverRenderingOfChildren() const
return evaluateBooleanExpression("takesOverRenderingOfChildren", false);
}
+bool NodeHints::visibleInNavigator() const
+{
+ if (!isValid())
+ return false;
+
+ return evaluateBooleanExpression("visibleInNavigator", false);
+}
+
+bool NodeHints::visibleInLibrary() const
+{
+ return evaluateBooleanExpression("visibleInLibrary", true);
+}
+
QHash<QString, QString> NodeHints::hints() const
{
return m_hints;