aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/abstracteditorsupport.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2010-02-04 15:16:35 +0100
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>2010-02-04 15:16:35 +0100
commit674486a7fa30c8370a18d8c1ab215080e5692a07 (patch)
tree5b5743019238b178a9ae77e20c3b0b0b6189b29d /src/plugins/cpptools/abstracteditorsupport.cpp
parent870e99120d5d8dbbd8f603588ba6e686dcaf02aa (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.cpp19
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();
}