forked from qt-creator/qt-creator
CppTools: Fix recent regression in type hierarchy model
Change-Id: I9fe462a61f32884b422ad402b18f17b44b60c7ab Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
@@ -183,24 +183,24 @@ void CppTypeHierarchyWidget::perform()
|
|||||||
m_inspectedClass->setup(cppClass);
|
m_inspectedClass->setup(cppClass);
|
||||||
QStandardItem *bases = new QStandardItem(tr("Bases"));
|
QStandardItem *bases = new QStandardItem(tr("Bases"));
|
||||||
m_model->invisibleRootItem()->appendRow(bases);
|
m_model->invisibleRootItem()->appendRow(bases);
|
||||||
buildHierarchy(*cppClass, bases, true, cppClass->bases);
|
buildHierarchy(*cppClass, bases, true, &CppClass::bases);
|
||||||
QStandardItem *derived = new QStandardItem(tr("Derived"));
|
QStandardItem *derived = new QStandardItem(tr("Derived"));
|
||||||
m_model->invisibleRootItem()->appendRow(derived);
|
m_model->invisibleRootItem()->appendRow(derived);
|
||||||
buildHierarchy(*cppClass, derived, true, cppClass->derived);
|
buildHierarchy(*cppClass, derived, true, &CppClass::derived);
|
||||||
m_treeView->expandAll();
|
m_treeView->expandAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppTypeHierarchyWidget::buildHierarchy(const CppClass &cppClass, QStandardItem *parent, bool isRoot, const QList<CppClass> &classes)
|
void CppTypeHierarchyWidget::buildHierarchy(const CppClass &cppClass, QStandardItem *parent, bool isRoot, const HierarchyMember member)
|
||||||
{
|
{
|
||||||
if (!isRoot) {
|
if (!isRoot) {
|
||||||
QStandardItem *item = itemForClass(cppClass);
|
QStandardItem *item = itemForClass(cppClass);
|
||||||
parent->appendRow(item);
|
parent->appendRow(item);
|
||||||
parent = item;
|
parent = item;
|
||||||
}
|
}
|
||||||
foreach (const CppClass &klass, sortClasses(classes))
|
foreach (const CppClass &klass, sortClasses(cppClass.*member))
|
||||||
buildHierarchy(klass, parent, false, classes);
|
buildHierarchy(klass, parent, false, member);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppTypeHierarchyWidget::onItemClicked(const QModelIndex &index)
|
void CppTypeHierarchyWidget::onItemClicked(const QModelIndex &index)
|
||||||
|
@@ -75,7 +75,8 @@ private slots:
|
|||||||
void onItemClicked(const QModelIndex &index);
|
void onItemClicked(const QModelIndex &index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void buildHierarchy(const CppClass &cppClass, QStandardItem *parent, bool isRoot, const QList<CppClass> &classes);
|
typedef QList<CppClass> CppClass::*HierarchyMember;
|
||||||
|
void buildHierarchy(const CppClass &cppClass, QStandardItem *parent, bool isRoot, HierarchyMember member);
|
||||||
|
|
||||||
CPPEditorWidget *m_cppEditor;
|
CPPEditorWidget *m_cppEditor;
|
||||||
Utils::NavigationTreeView *m_treeView;
|
Utils::NavigationTreeView *m_treeView;
|
||||||
|
Reference in New Issue
Block a user