From 674486a7fa30c8370a18d8c1ab215080e5692a07 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Thu, 4 Feb 2010 15:16:35 +0100 Subject: [PATCH] CppCodeModelSupport: functionAt: Prepend namespaces to name. To improve CDB debugger tooltips which go via the function name. --- .../cpptools/abstracteditorsupport.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/plugins/cpptools/abstracteditorsupport.cpp b/src/plugins/cpptools/abstracteditorsupport.cpp index 4b033fb571e..3c0f02ee5b2 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(); } -- GitLab