From 40e36e0cd0600b24d2bafc9e1e4e01eb703f039a Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@nokia.com> Date: Thu, 22 Jul 2010 10:12:04 +0200 Subject: [PATCH] QmlOutline: Treat grouped property items as properties E.g. "anchors {}" is represented in the AST as a UiObjectDefinition. Treat it nevertheless like a property in the outline, such that it isn't shown in the outline if you deactivate showing bindings. --- src/plugins/qmljseditor/qmljsoutline.cpp | 3 +-- src/plugins/qmljseditor/qmloutlinemodel.cpp | 26 ++++++++++++++------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/plugins/qmljseditor/qmljsoutline.cpp b/src/plugins/qmljseditor/qmljsoutline.cpp index b80d746078a..66d505672b7 100644 --- a/src/plugins/qmljseditor/qmljsoutline.cpp +++ b/src/plugins/qmljseditor/qmljsoutline.cpp @@ -44,8 +44,7 @@ bool QmlJSOutlineFilterModel::filterAcceptsRow(int sourceRow, if (m_filterBindings) { QModelIndex sourceIndex = sourceModel()->index(sourceRow, 0, sourceParent); QVariant itemType = sourceIndex.data(QmlOutlineModel::ItemTypeRole); - Q_ASSERT(itemType.isValid()); - if (itemType.isValid() && itemType == QmlOutlineModel::PropertyType) { + if (itemType == QmlOutlineModel::PropertyType) { return false; } } diff --git a/src/plugins/qmljseditor/qmloutlinemodel.cpp b/src/plugins/qmljseditor/qmloutlinemodel.cpp index 77eae8d008a..9064277687b 100644 --- a/src/plugins/qmljseditor/qmloutlinemodel.cpp +++ b/src/plugins/qmljseditor/qmloutlinemodel.cpp @@ -347,20 +347,28 @@ QModelIndex QmlOutlineModel::enterObjectDefinition(AST::UiObjectDefinition *objD QmlOutlineItem prototype(this); const QString typeName = asString(objDef->qualifiedTypeNameId); - const QString id = getId(objDef); - if (!id.isEmpty()) { - prototype.setText(id); + + if (typeName.at(0).isUpper()) { + const QString id = getId(objDef); + if (!id.isEmpty()) { + prototype.setText(id); + } else { + prototype.setText(typeName); + } + if (!m_typeToIcon.contains(typeName)) { + m_typeToIcon.insert(typeName, getIcon(objDef)); + } + prototype.setIcon(m_typeToIcon.value(typeName)); + prototype.setData(ElementType, ItemTypeRole); + prototype.setIdNode(objDef->qualifiedTypeNameId); } else { + // it's a grouped propery like 'anchors' prototype.setText(typeName); + prototype.setIcon(m_icons->scriptBindingIcon()); + prototype.setData(PropertyType, ItemTypeRole); } - if (!m_typeToIcon.contains(typeName)) { - m_typeToIcon.insert(typeName, getIcon(objDef)); - } - prototype.setIcon(m_typeToIcon.value(typeName)); - prototype.setData(ElementType, ItemTypeRole); prototype.setSourceLocation(getLocation(objDef)); prototype.setNode(objDef); - prototype.setIdNode(objDef->qualifiedTypeNameId); return enterNode(prototype); } -- GitLab