diff --git a/src/plugins/cpptools/cppfunctionsfilter.cpp b/src/plugins/cpptools/cppfunctionsfilter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..61bb8e2d00d2f66e55a0ce350b82fd6a70bd18e2
--- /dev/null
+++ b/src/plugins/cpptools/cppfunctionsfilter.cpp
@@ -0,0 +1,50 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact:  Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.2, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#include "cppfunctionsfilter.h"
+
+using namespace CppTools::Internal;
+
+CppFunctionsFilter::CppFunctionsFilter(CppModelManager *manager, Core::EditorManager *editorManager)
+    : CppQuickOpenFilter(manager, editorManager)
+{
+    setShortcutString("m");
+    setIncludedByDefault(false);
+
+    search.setSymbolsToSearchFor(SearchSymbols::Functions);
+    search.setSeparateScope(true);
+}
+
+CppFunctionsFilter::~CppFunctionsFilter()
+{
+}
diff --git a/src/plugins/cpptools/cppfunctionsfilter.h b/src/plugins/cpptools/cppfunctionsfilter.h
new file mode 100644
index 0000000000000000000000000000000000000000..6e48d65b26ff0fb3307e2fe645741c2d924c1e97
--- /dev/null
+++ b/src/plugins/cpptools/cppfunctionsfilter.h
@@ -0,0 +1,58 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact:  Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.2, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#ifndef CPPFUNCTIONSFILTER_H
+#define CPPFUNCTIONSFILTER_H
+
+#include <cppquickopenfilter.h>
+
+namespace CppTools {
+namespace Internal {
+
+class CppFunctionsFilter : public CppQuickOpenFilter
+{
+    Q_OBJECT
+
+public:
+    CppFunctionsFilter(CppModelManager *manager, Core::EditorManager *editorManager);
+    ~CppFunctionsFilter();
+
+    QString trName() const { return tr("Methods"); }
+    QString name() const { return QLatin1String("Methods"); }
+    Priority priority() const { return Medium; }
+};
+
+} // namespace Internal
+} // namespace CppTools
+
+#endif // CPPFUNCTIONSFILTER_H
diff --git a/src/plugins/cpptools/cpptools.cpp b/src/plugins/cpptools/cpptools.cpp
index 957f0cae9b07ed7bf97842baaf316c2dd7bd53a2..5e9f6dca45f2ab3fd333099d4e59822c85bf265c 100644
--- a/src/plugins/cpptools/cpptools.cpp
+++ b/src/plugins/cpptools/cpptools.cpp
@@ -34,6 +34,7 @@
 #include "cpptools.h"
 #include "cppclassesfilter.h"
 #include "cppcodecompletion.h"
+#include "cppfunctionsfilter.h"
 #include "cpphoverhandler.h"
 #include "cppmodelmanager.h"
 #include "cpptoolsconstants.h"
@@ -89,6 +90,7 @@ bool CppToolsPlugin::initialize(const QStringList & /*arguments*/, QString *)
                                                                  m_core->editorManager());
     addAutoReleasedObject(quickOpenFilter);
     addAutoReleasedObject(new CppClassesFilter(m_modelManager, m_core->editorManager()));
+    addAutoReleasedObject(new CppFunctionsFilter(m_modelManager, m_core->editorManager()));
 
     // Menus
     Core::IActionContainer *mtools = am->actionContainer(Core::Constants::M_TOOLS);
diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro
index 92905e42ef9af7659dd58358a3fd7c7d50694b3d..74112379e3904c195bdc5431077e08c6ec32a9b2 100644
--- a/src/plugins/cpptools/cpptools.pro
+++ b/src/plugins/cpptools/cpptools.pro
@@ -10,15 +10,16 @@ unix:QMAKE_CXXFLAGS_DEBUG += -O3
 INCLUDEPATH += .
 DEFINES += CPPTOOLS_LIBRARY
 CONFIG += help
-
 HEADERS += cpptools_global.h \
     cppquickopenfilter.h \
     cppclassesfilter.h \
-    searchsymbols.h
+    searchsymbols.h \
+    cppfunctionsfilter.h
 SOURCES += cppquickopenfilter.cpp \
     cpptoolseditorsupport.cpp \
     cppclassesfilter.cpp \
-    searchsymbols.cpp
+    searchsymbols.cpp \
+    cppfunctionsfilter.cpp
 
 # Input
 SOURCES += cpptools.cpp \
diff --git a/src/plugins/cpptools/searchsymbols.cpp b/src/plugins/cpptools/searchsymbols.cpp
index 47f540c6ddb153db91555e3aa09bae760337df48..2669ea7bc79b70c72f37942faa65d57636a243ac 100644
--- a/src/plugins/cpptools/searchsymbols.cpp
+++ b/src/plugins/cpptools/searchsymbols.cpp
@@ -35,6 +35,7 @@
 
 #include <Literals.h>
 #include <Scope.h>
+#include <Names.h>
 
 using namespace CPlusPlus;
 using namespace CppTools::Internal;
@@ -97,12 +98,24 @@ bool SearchSymbols::visit(Function *symbol)
     if (!(symbolsToSearchFor & Functions))
         return false;
 
+    QString extraScope;
+    if (Name *name = symbol->name()) {
+        if (QualifiedNameId *nameId = name->asQualifiedNameId()) {
+            if (nameId->nameCount() > 1) {
+                extraScope = overview.prettyName(nameId->nameAt(nameId->nameCount() - 2));
+            }
+        }
+    }
+    QString fullScope = _scope;
+    if (!_scope.isEmpty() && !extraScope.isEmpty())
+        fullScope += QLatin1String("::");
+    fullScope += extraScope;
     QString name = symbolName(symbol);
     QString scopedName = scopedSymbolName(name);
     QString type = overview.prettyType(symbol->type(),
-                                       separateScope ? symbol->name() : 0);
+                                       separateScope ? symbol->identity() : 0);
     appendItem(separateScope ? type : scopedName,
-               separateScope ? _scope : type,
+               separateScope ? fullScope : type,
                ModelItemInfo::Method, symbol);
     return false;
 }