diff --git a/src/plugins/cpptools/abstracteditorsupport.cpp b/src/plugins/cpptools/abstracteditorsupport.cpp index 4b033fb571e79e4e073b8aa7901662e94ccc7c04..3c0f02ee5b2ba12041b542a755912819b90ffb50 100644 --- a/src/plugins/cpptools/abstracteditorsupport.cpp +++ b/src/plugins/cpptools/abstracteditorsupport.cpp @@ -40,6 +40,7 @@ #include <Scope.h> #include <coreplugin/icore.h> +#include <QtCore/QDebug> namespace CppTools { @@ -70,7 +71,23 @@ QString AbstractEditorSupport::functionAt(const CppModelManagerInterface *modelM if (const CPlusPlus::Scope *functionScope = scope->enclosingFunctionScope()) if (const CPlusPlus::Symbol *function = functionScope->owner()) { const CPlusPlus::Overview o; - return o.prettyName(function->name()); + QString rc = o.prettyName(function->name()); + // Prepend namespace "Foo::Foo::foo()" up to empty root namespace + for (const CPlusPlus::Symbol *owner = function; ; ) { + if (const CPlusPlus::Scope *nameSpace = owner->enclosingNamespaceScope()) { + owner = nameSpace->owner(); + const QString name = o.prettyName(owner->name()); + if (name.isEmpty()) { + break; + } else { + rc.prepend(QLatin1String("::")); + rc.prepend(name); + } + } else { + break; + } + } + return rc; } return QString(); }