diff --git a/src/plugins/cppeditor/cpptypehierarchy.cpp b/src/plugins/cppeditor/cpptypehierarchy.cpp index c4074b10a3f403dde4daeb97f86b90f431b06d80..e003e5ea884c142618a3b02496cda9790c016086 100644 --- a/src/plugins/cppeditor/cpptypehierarchy.cpp +++ b/src/plugins/cppeditor/cpptypehierarchy.cpp @@ -73,6 +73,20 @@ QStandardItem *itemForClass(const CppClass &cppClass) return item; } +bool compareCppClassNames(const CppClass &c1, const CppClass &c2) +{ + const QString key1 = c1.name() + QLatin1String("::") + c1.qualifiedName(); + const QString key2 = c2.name() + QLatin1String("::") + c2.qualifiedName(); + return key1 < key2; +} + +QList<CppClass> sortClasses(const QList<CppClass> &cppClasses) +{ + QList<CppClass> sorted = cppClasses; + qSort(sorted.begin(), sorted.end(), compareCppClassNames); + return sorted; +} + } // Anonymous // CppTypeHierarchyWidget @@ -160,7 +174,7 @@ void CppTypeHierarchyWidget::perform() void CppTypeHierarchyWidget::buildBaseHierarchy(QVector<CppClass> *s) { const CppClass ¤t = s->back(); - const QList<CppClass> &bases = current.bases(); + const QList<CppClass> &bases = sortClasses(current.bases()); if (!bases.isEmpty()) { foreach (const CppClass &base, bases) { s->push_back(base); @@ -181,7 +195,7 @@ void CppTypeHierarchyWidget::buildDerivedHierarchy(const CppClass &cppClass, QSt { QStandardItem *item = itemForClass(cppClass); parent->appendRow(item); - foreach (const CppClass &derived, cppClass.derived()) + foreach (const CppClass &derived, sortClasses(cppClass.derived())) buildDerivedHierarchy(derived, item); m_treeView->expand(m_model->indexFromItem(parent)); }