diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-02-04 15:16:35 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-02-04 15:16:35 +0100 |
commit | 674486a7fa30c8370a18d8c1ab215080e5692a07 (patch) | |
tree | 5b5743019238b178a9ae77e20c3b0b0b6189b29d /src/plugins/cpptools/abstracteditorsupport.cpp | |
parent | 870e99120d5d8dbbd8f603588ba6e686dcaf02aa (diff) |
CppCodeModelSupport: functionAt: Prepend namespaces to name.
To improve CDB debugger tooltips which go via the function name.
Diffstat (limited to 'src/plugins/cpptools/abstracteditorsupport.cpp')
-rw-r--r-- | src/plugins/cpptools/abstracteditorsupport.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/plugins/cpptools/abstracteditorsupport.cpp b/src/plugins/cpptools/abstracteditorsupport.cpp index 4b033fb571..3c0f02ee5b 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(); } |