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