From 28be7bc4b49b4afda96fdf16c8a0edeaea991a1d Mon Sep 17 00:00:00 2001 From: Leandro Melo <leandro.melo@nokia.com> Date: Wed, 28 Jul 2010 16:33:44 +0200 Subject: [PATCH] C++ tooltip: Make sure to get the correct list of base classes. --- src/plugins/cppeditor/cpphoverhandler.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp index a004df02e70..3a9ad4b093e 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cppeditor/cpphoverhandler.cpp @@ -60,6 +60,8 @@ #include <QtGui/QToolTip> #include <QtGui/QTextCursor> +#include <algorithm> + using namespace CppEditor::Internal; using namespace CPlusPlus; using namespace Core; @@ -95,11 +97,14 @@ namespace { const QList<Symbol *> &symbols = baseClass->symbols(); foreach (Symbol *baseSymbol, symbols) { if (baseSymbol->isClass()) { - hierarchy->back().append(overview.prettyName( - LookupContext::fullyQualifiedName(baseSymbol))); - buildClassHierarchyHelper(baseSymbol, context, overview, hierarchy); - hierarchy->append(hierarchy->back()); - hierarchy->back().removeLast(); + const QString &qualifiedName = overview.prettyName( + LookupContext::fullyQualifiedName(baseSymbol)); + if (!qualifiedName.isEmpty()) { + hierarchy->back().append(qualifiedName); + buildClassHierarchyHelper(baseSymbol, context, overview, hierarchy); + hierarchy->append(hierarchy->back()); + hierarchy->back().removeLast(); + } } } } @@ -476,6 +481,10 @@ void CppHoverHandler::generateDiagramTooltip(const bool extendTooltips) qSort(m_classHierarchy.begin(), m_classHierarchy.end(), ClassHierarchyComp()); + // Remove duplicates (in case there are any). + m_classHierarchy.erase(std::unique(m_classHierarchy.begin(), m_classHierarchy.end()), + m_classHierarchy.end()); + QStringList directBaseClasses; foreach (const QStringList &hierarchy, m_classHierarchy) { if (hierarchy.size() > 1) -- GitLab