diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 75232ac1ea173f8f31401f0332994694a14431b9..52b0066fa05a25787b275e3b369d3059e19209aa 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -228,7 +228,8 @@ static void find_helper(QFutureInterface<Usage> &future,
 void CppFindReferences::findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context)
 {
     m_currentSearch = Find::SearchResultWindow::instance()->startNewSearch(Find::SearchResultWindow::SearchOnly);
-
+    Overview overview;
+    m_currentSearch->setInfo(tr("C++ Usages:"), QString(), overview(context.fullyQualifiedName(symbol)));
     connect(m_currentSearch, SIGNAL(activated(Find::SearchResultItem)),
             this, SLOT(openEditor(Find::SearchResultItem)));
 
@@ -244,6 +245,8 @@ void CppFindReferences::renameUsages(CPlusPlus::Symbol *symbol, const CPlusPlus:
 
         m_currentSearch = Find::SearchResultWindow::instance()->startNewSearch(
                 Find::SearchResultWindow::SearchAndReplace, QLatin1String("CppEditor"));
+        Overview overview;
+        m_currentSearch->setInfo(tr("C++ Usages:"), QString(), overview(context.fullyQualifiedName(symbol)));
         m_currentSearch->setTextToReplace(textToReplace);
 
         connect(m_currentSearch, SIGNAL(activated(Find::SearchResultItem)),
@@ -415,6 +418,7 @@ static void findMacroUses_helper(QFutureInterface<Usage> &future,
 void CppFindReferences::findMacroUses(const Macro &macro)
 {
     m_currentSearch = Find::SearchResultWindow::instance()->startNewSearch(Find::SearchResultWindow::SearchOnly);
+    m_currentSearch->setInfo(tr("C++ Macro Usages:"), QString(), QString::fromLocal8Bit(macro.name()));
 
     Find::SearchResultWindow::instance()->popup(true);
 
diff --git a/src/plugins/cpptools/cppfindreferences.h b/src/plugins/cpptools/cppfindreferences.h
index 6d6c3c855842d07318cfe7ba3ef7c0f9b445815b..810b1760a6a165ba3e14dd2294aeafe918b5853e 100644
--- a/src/plugins/cpptools/cppfindreferences.h
+++ b/src/plugins/cpptools/cppfindreferences.h
@@ -33,15 +33,16 @@
 #ifndef CPPFINDREFERENCES_H
 #define CPPFINDREFERENCES_H
 
+#include <utils/filesearch.h>
+#include <cplusplus/CppDocument.h>
+#include <cplusplus/DependencyTable.h>
+#include <cplusplus/FindUsages.h>
+
 #include <QtCore/QMutex>
 #include <QtCore/QObject>
 #include <QtCore/QPointer>
 #include <QtCore/QFuture>
 #include <QtCore/QFutureWatcher>
-#include <utils/filesearch.h>
-#include <cplusplus/CppDocument.h>
-#include <cplusplus/DependencyTable.h>
-#include <cplusplus/FindUsages.h>
 
 QT_FORWARD_DECLARE_CLASS(QTimer)
 
diff --git a/src/plugins/cpptools/symbolsfindfilter.cpp b/src/plugins/cpptools/symbolsfindfilter.cpp
index f14ef8d1431a860ae07fce787ad4fcf953c5b44b..470900f90708f2115c75f4d8d68e86cff91f2ec6 100644
--- a/src/plugins/cpptools/symbolsfindfilter.cpp
+++ b/src/plugins/cpptools/symbolsfindfilter.cpp
@@ -156,6 +156,7 @@ void SymbolsFindFilter::findAll(const QString &txt, Find::FindFlags findFlags)
     emit changed();
     Find::SearchResultWindow *window = Find::SearchResultWindow::instance();
     m_currentSearch = window->startNewSearch();
+    m_currentSearch->setInfo(label(), toolTip(findFlags), txt);
     connect(m_currentSearch, SIGNAL(activated(Find::SearchResultItem)), this, SLOT(openEditor(Find::SearchResultItem)));
     window->popup(true);
 
@@ -244,6 +245,28 @@ void SymbolsFindFilter::onAllTasksFinished(const QString &type)
     }
 }
 
+QString SymbolsFindFilter::label() const
+{
+    return tr("C++ Symbols:");
+}
+
+QString SymbolsFindFilter::toolTip(Find::FindFlags findFlags) const
+{
+    QStringList types;
+    if (m_symbolsToSearch & SearchSymbols::Classes)
+        types.append(tr("Classes"));
+    if (m_symbolsToSearch & SearchSymbols::Functions)
+        types.append(tr("Methods"));
+    if (m_symbolsToSearch & SearchSymbols::Enums)
+        types.append(tr("Enums"));
+    if (m_symbolsToSearch & SearchSymbols::Declarations)
+        types.append(tr("Declarations"));
+    return tr("Scope: %1\nTypes: %2\nFlags: %3")
+            .arg(searchScope() == SearchGlobal ? tr("All") : tr("Projects"))
+            .arg(types.join(tr(", ")))
+            .arg(Find::IFindFilter::descriptionForFindFlags(findFlags));
+}
+
 // #pragma mark -- SymbolsFindFilterConfigWidget
 
 SymbolsFindFilterConfigWidget::SymbolsFindFilterConfigWidget(SymbolsFindFilter *filter)
diff --git a/src/plugins/cpptools/symbolsfindfilter.h b/src/plugins/cpptools/symbolsfindfilter.h
index fee3e5bf29a886f5949260c41e62326bd63ba6da..dd8e7dcb3616c6a6035439b73d7fe0298e3958c8 100644
--- a/src/plugins/cpptools/symbolsfindfilter.h
+++ b/src/plugins/cpptools/symbolsfindfilter.h
@@ -91,6 +91,9 @@ private slots:
     void onAllTasksFinished(const QString &type);
 
 private:
+    QString label() const;
+    QString toolTip(Find::FindFlags findFlags) const;
+
     CppModelManager *m_manager;
     bool m_isRunning;
     bool m_enabled;
diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp
index 64a4da2b3495adc9c3f21a1b985904ace34c9773..cd45ed0fc0f3b0cb83014d15a66d866296b3e358 100644
--- a/src/plugins/find/findtoolbar.cpp
+++ b/src/plugins/find/findtoolbar.cpp
@@ -33,6 +33,7 @@
 #include "findtoolbar.h"
 #include "findplugin.h"
 #include "textfindconstants.h"
+#include "ifindfilter.h"
 
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icontext.h>
@@ -79,9 +80,6 @@ FindToolBar::FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumen
       m_replaceAction(0),
       m_replaceNextAction(0),
       m_replacePreviousAction(0),
-      m_casesensitiveIcon(":/find/images/casesensitively.png"),
-      m_regexpIcon(":/find/images/regexp.png"),
-      m_wholewordsIcon(":/find/images/wholewords.png"),
       m_findIncrementalTimer(this), m_findStepTimer(this),
       m_useFakeVim(false),
       m_eventFiltersInstalled(false)
@@ -539,33 +537,17 @@ void FindToolBar::updateIcons()
     bool casesensitive = effectiveFlags & Find::FindCaseSensitively;
     bool wholewords = effectiveFlags & Find::FindWholeWords;
     bool regexp = effectiveFlags & Find::FindRegularExpression;
-    int width = 0;
-    if (casesensitive) width += 6;
-    if (wholewords) width += 6;
-    if (regexp) width += 6;
-    if (width == 0) width = 18;
-    --width;
-    QPixmap pixmap(width, 17);
-    pixmap.fill(Qt::transparent);
-    QPainter painter(&pixmap);
-    int x = 0;
-
-    if (casesensitive) {
-        painter.drawPixmap(x - 6, 0, m_casesensitiveIcon);
-        x += 6;
-    }
-    if (wholewords) {
-        painter.drawPixmap(x - 6, 0, m_wholewordsIcon);
-        x += 6;
-    }
-    if (regexp) {
-        painter.drawPixmap(x - 6, 0, m_regexpIcon);
-    }
     if (!casesensitive && !wholewords && !regexp) {
+        QPixmap pixmap(17, 17);
+        pixmap.fill(Qt::transparent);
+        QPainter painter(&pixmap);
         QPixmap mag(Core::Constants::ICON_MAGNIFIER);
         painter.drawPixmap(0, (pixmap.height() - mag.height()) / 2, mag);
+        m_ui.findEdit->setButtonPixmap(Utils::FancyLineEdit::Left, pixmap);
+    } else {
+        m_ui.findEdit->setButtonPixmap(Utils::FancyLineEdit::Left,
+                                       IFindFilter::pixmapForFindFlags(effectiveFlags));
     }
-    m_ui.findEdit->setButtonPixmap(Utils::FancyLineEdit::Left, pixmap);
 }
 
 Find::FindFlags FindToolBar::effectiveFindFlags()
diff --git a/src/plugins/find/findtoolbar.h b/src/plugins/find/findtoolbar.h
index 04180a712aa746b2662149253721d2c3547692b7..21c53d8f35ec4636108d4adf43773802389d538f 100644
--- a/src/plugins/find/findtoolbar.h
+++ b/src/plugins/find/findtoolbar.h
@@ -133,10 +133,6 @@ private:
     QAction *m_regularExpressionAction;
     Find::FindFlags m_findFlags;
 
-    QPixmap m_casesensitiveIcon;
-    QPixmap m_regexpIcon;
-    QPixmap m_wholewordsIcon;
-
     QTimer m_findIncrementalTimer;
     QTimer m_findStepTimer;
     bool m_useFakeVim;
diff --git a/src/plugins/find/ifindfilter.cpp b/src/plugins/find/ifindfilter.cpp
index 0e2daffe523bff6bd7a923827427ae2daa6eedd9..f94def2f0f67e1439dca871eaa31c6644f519285 100644
--- a/src/plugins/find/ifindfilter.cpp
+++ b/src/plugins/find/ifindfilter.cpp
@@ -32,6 +32,8 @@
 
 #include "ifindfilter.h"
 
+#include <QtGui/QPainter>
+
 /*!
     \class Find::IFindFilter
     \brief The IFindFilter class is the base class for find implementations
@@ -220,3 +222,52 @@ Find::FindFlags Find::IFindFilter::supportedFindFlags() const
     return Find::FindCaseSensitively
             | Find::FindRegularExpression | Find::FindWholeWords;
 }
+
+QPixmap Find::IFindFilter::pixmapForFindFlags(Find::FindFlags flags)
+{
+    static const QPixmap casesensitiveIcon(":/find/images/casesensitively.png");
+    static const QPixmap regexpIcon(":/find/images/regexp.png");
+    static const QPixmap wholewordsIcon(":/find/images/wholewords.png");
+    bool casesensitive = flags & Find::FindCaseSensitively;
+    bool wholewords = flags & Find::FindWholeWords;
+    bool regexp = flags & Find::FindRegularExpression;
+    int width = 0;
+    if (casesensitive) width += 6;
+    if (wholewords) width += 6;
+    if (regexp) width += 6;
+    if (width > 0) --width;
+    QPixmap pixmap(width, 17);
+    pixmap.fill(Qt::transparent);
+    QPainter painter(&pixmap);
+    int x = 0;
+
+    if (casesensitive) {
+        painter.drawPixmap(x - 6, 0, casesensitiveIcon);
+        x += 6;
+    }
+    if (wholewords) {
+        painter.drawPixmap(x - 6, 0, wholewordsIcon);
+        x += 6;
+    }
+    if (regexp) {
+        painter.drawPixmap(x - 6, 0, regexpIcon);
+    }
+    return pixmap;
+}
+
+QString Find::IFindFilter::descriptionForFindFlags(Find::FindFlags flags)
+{
+    QStringList flagStrings;
+    if (flags & Find::FindCaseSensitively)
+        flagStrings.append(tr("Case sensitive"));
+    if (flags & Find::FindWholeWords)
+        flagStrings.append(tr("Whole words"));
+    if (flags & Find::FindRegularExpression)
+        flagStrings.append(tr("Regular expressions"));
+    QString description = tr("Flags: %1");
+    if (flagStrings.isEmpty())
+        description = description.arg(tr("None"));
+    else
+        description = description.arg(flagStrings.join(tr(", ")));
+    return description;
+}
diff --git a/src/plugins/find/ifindfilter.h b/src/plugins/find/ifindfilter.h
index b174a919af2b72931e5ff03cc8f58721692468ec..e5b7a8b7fc52bbd1aab3c2b6f6672179be630548 100644
--- a/src/plugins/find/ifindfilter.h
+++ b/src/plugins/find/ifindfilter.h
@@ -36,6 +36,8 @@
 #include "find_global.h"
 #include "textfindconstants.h"
 
+#include <QtGui/QPixmap>
+
 QT_BEGIN_NAMESPACE
 class QWidget;
 class QSettings;
@@ -69,6 +71,8 @@ public:
     virtual void writeSettings(QSettings *settings) { Q_UNUSED(settings) }
     virtual void readSettings(QSettings *settings) { Q_UNUSED(settings) }
 
+    static QPixmap pixmapForFindFlags(FindFlags flags);
+    static QString descriptionForFindFlags(FindFlags flags);
 signals:
     void changed();
 };
diff --git a/src/plugins/find/searchresultwidget.cpp b/src/plugins/find/searchresultwidget.cpp
index 8bd7f0c0324c50b1f163b523def6a8d24ca2231b..e50108b7ec9e8d9434739b301fce246a0d0f1d3d 100644
--- a/src/plugins/find/searchresultwidget.cpp
+++ b/src/plugins/find/searchresultwidget.cpp
@@ -43,6 +43,7 @@
 #include <QtCore/QDir>
 #include <QtCore/QSettings>
 #include <QtGui/QVBoxLayout>
+#include <QtGui/QHBoxLayout>
 
 namespace Find {
 namespace Internal {
@@ -214,10 +215,17 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) :
     layout->setSpacing(0);
     setLayout(layout);
 
-    m_noMatchesFoundDisplay = new QListWidget(this);
-    m_noMatchesFoundDisplay->addItem(tr("No matches found!"));
-    m_noMatchesFoundDisplay->setFrameStyle(QFrame::NoFrame);
-    m_noMatchesFoundDisplay->hide();
+    QFrame *topWidget = new QFrame;
+    QPalette pal = topWidget->palette();
+    pal.setColor(QPalette::Window, QColor(255, 255, 225));
+    pal.setColor(QPalette::WindowText, Qt::black);
+    topWidget->setPalette(pal);
+    topWidget->setFrameStyle(QFrame::Panel | QFrame::Raised);
+    topWidget->setLineWidth(1);
+    topWidget->setAutoFillBackground(true);
+    QHBoxLayout *topLayout = new QHBoxLayout(topWidget);
+    topLayout->setMargin(2);
+    topWidget->setLayout(topLayout);
 
     m_searchResultTreeView = new Internal::SearchResultTreeView(this);
     m_searchResultTreeView->setFrameStyle(QFrame::NoFrame);
@@ -226,21 +234,41 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) :
     agg->add(m_searchResultTreeView);
     agg->add(new SearchResultFindSupport(m_searchResultTreeView));
 
-    layout->addWidget(m_noMatchesFoundDisplay);
+    layout->addWidget(topWidget);
     layout->addWidget(m_searchResultTreeView);
 
-    m_infoBarDisplay.setTarget(layout, 0);
+    m_infoBarDisplay.setTarget(layout, 1);
     m_infoBarDisplay.setInfoBar(&m_infoBar);
 
-    m_replaceLabel = new QLabel(tr("Replace with:"), parent);
-    m_replaceLabel->setContentsMargins(12, 0, 5, 0);
-    m_replaceTextEdit = new WideEnoughLineEdit(parent);
-    m_replaceButton = new QToolButton(parent);
+    m_descriptionContainer = new QWidget(topWidget);
+    QHBoxLayout *descriptionLayout = new QHBoxLayout(m_descriptionContainer);
+    m_descriptionContainer->setLayout(descriptionLayout);
+    descriptionLayout->setMargin(0);
+    m_label = new QLabel(m_descriptionContainer);
+    m_label->setVisible(false);
+    m_searchTerm = new QLabel(m_descriptionContainer);
+    m_searchTerm->setVisible(false);
+    descriptionLayout->addWidget(m_label);
+    descriptionLayout->addWidget(m_searchTerm);
+
+    m_replaceLabel = new QLabel(tr("Replace with:"), topWidget);
+    m_replaceTextEdit = new WideEnoughLineEdit(topWidget);
+    m_replaceButton = new QToolButton(topWidget);
     m_replaceButton->setToolTip(tr("Replace all occurrences"));
     m_replaceButton->setText(tr("Replace"));
     m_replaceButton->setToolButtonStyle(Qt::ToolButtonTextOnly);
     m_replaceButton->setAutoRaise(true);
     m_replaceTextEdit->setTabOrder(m_replaceTextEdit, m_searchResultTreeView);
+
+    m_matchesFoundLabel = new QLabel(topWidget);
+    updateMatchesFoundLabel();
+
+    topLayout->addWidget(m_descriptionContainer);
+    topLayout->addWidget(m_replaceLabel);
+    topLayout->addWidget(m_replaceTextEdit);
+    topLayout->addWidget(m_replaceButton);
+    topLayout->addStretch(2);
+    topLayout->addWidget(m_matchesFoundLabel);
     setShowReplaceUI(false);
 
     connect(m_searchResultTreeView, SIGNAL(jumpToSearchResult(SearchResultItem)),
@@ -249,6 +277,15 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) :
     connect(m_replaceButton, SIGNAL(clicked()), this, SLOT(handleReplaceButton()));
 }
 
+void SearchResultWidget::setInfo(const QString &label, const QString &toolTip, const QString &term)
+{
+    m_label->setText(label);
+    m_label->setVisible(!label.isEmpty());
+    m_descriptionContainer->setToolTip(toolTip);
+    m_searchTerm->setText(term);
+    m_searchTerm->setVisible(!term.isEmpty());
+}
+
 void SearchResultWidget::addResult(const QString &fileName, int lineNumber, const QString &rowText,
     int searchTermStart, int searchTermLength, const QVariant &userData)
 {
@@ -286,6 +323,7 @@ void SearchResultWidget::addResults(const QList<SearchResultItem> &items, Search
         m_searchResultTreeView->selectionModel()->select(m_searchResultTreeView->model()->index(0, 0, QModelIndex()), QItemSelectionModel::Select);
         emit navigateStateChanged();
     }
+    updateMatchesFoundLabel();
 }
 
 int SearchResultWidget::count() const
@@ -398,11 +436,8 @@ void SearchResultWidget::goToPrevious()
 
 void SearchResultWidget::finishSearch()
 {
-    if (m_count > 0) {
-        m_replaceButton->setEnabled(true);
-    } else {
-        showNoMatchesFound();
-    }
+    m_replaceTextEdit->setEnabled(m_count > 0);
+    m_replaceButton->setEnabled(m_count > 0);
 }
 
 void SearchResultWidget::clear()
@@ -412,17 +447,12 @@ void SearchResultWidget::clear()
     m_replaceTextEdit->clear();
     m_searchResultTreeView->clear();
     m_count = 0;
-    m_noMatchesFoundDisplay->hide();
+    m_label->setVisible(false);
+    m_searchTerm->setVisible(false);
+    updateMatchesFoundLabel();
     m_infoBar.clear();
 }
 
-void SearchResultWidget::showNoMatchesFound()
-{
-    m_replaceTextEdit->setEnabled(false);
-    m_replaceButton->setEnabled(false);
-    m_noMatchesFoundDisplay->show();
-}
-
 void SearchResultWidget::hideNoUndoWarning()
 {
     setShowWarningMessage(false);
@@ -486,4 +516,12 @@ QList<SearchResultItem> SearchResultWidget::checkedItems() const
     return result;
 }
 
+void SearchResultWidget::updateMatchesFoundLabel()
+{
+    if (m_count == 0)
+        m_matchesFoundLabel->setText(tr("No matches found."));
+    else
+        m_matchesFoundLabel->setText(tr("%n matches found.", 0, m_count));
+}
+
 #include "searchresultwidget.moc"
diff --git a/src/plugins/find/searchresultwidget.h b/src/plugins/find/searchresultwidget.h
index bd6f1df952a1aba6ad07b33aeeea3e6377079f38..636d220e4849cd2105e8a39a16b5a49430979f25 100644
--- a/src/plugins/find/searchresultwidget.h
+++ b/src/plugins/find/searchresultwidget.h
@@ -39,7 +39,6 @@
 
 #include <QtGui/QLabel>
 #include <QtGui/QLineEdit>
-#include <QtGui/QListWidget>
 #include <QtGui/QToolButton>
 #include <QtGui/QWidget>
 
@@ -54,6 +53,8 @@ class SearchResultWidget : public QWidget
 public:
     explicit SearchResultWidget(QWidget *parent = 0);
 
+    void setInfo(const QString &label, const QString &toolTip, const QString &term);
+
     void addResult(const QString &fileName, int lineNumber, const QString &lineText,
                    int searchTermStart, int searchTermLength, const QVariant &userData = QVariant());
     void addResults(const QList<SearchResultItem> &items, SearchResult::AddMode mode);
@@ -82,13 +83,9 @@ public:
     void goToNext();
     void goToPrevious();
 
-    // TODO: temporary
-    QList<QWidget*> toolBarWidgets() const { return QList<QWidget*>() << m_replaceLabel << m_replaceTextEdit << m_replaceButton; }
-
 public slots:
     void finishSearch();
     void clear();
-    void showNoMatchesFound();
 
 signals:
     void activated(const Find::SearchResultItem &item);
@@ -106,17 +103,21 @@ private:
     bool showWarningMessage() const;
     void setShowWarningMessage(bool showWarningMessage);
     QList<SearchResultItem> checkedItems() const;
+    void updateMatchesFoundLabel();
 
     SearchResultTreeView *m_searchResultTreeView;
     int m_count;
     QString m_dontAskAgainGroup;
     Core::InfoBar m_infoBar;
     Core::InfoBarDisplay m_infoBarDisplay;
-    QListWidget *m_noMatchesFoundDisplay;
     bool m_isShowingReplaceUI;
     QLabel *m_replaceLabel;
     QLineEdit *m_replaceTextEdit;
     QToolButton *m_replaceButton;
+    QWidget *m_descriptionContainer;
+    QLabel *m_label;
+    QLabel *m_searchTerm;
+    QLabel *m_matchesFoundLabel;
 };
 
 } // Internal
diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp
index 0bba9a8bc0dff92b42ee3c161d8c52508b18bcd6..abe62395043ef7a7525a896211f94ce06a85fe2a 100644
--- a/src/plugins/find/searchresultwindow.cpp
+++ b/src/plugins/find/searchresultwindow.cpp
@@ -230,7 +230,7 @@ QWidget *SearchResultWindow::outputWidget(QWidget *)
 */
 QList<QWidget*> SearchResultWindow::toolBarWidgets() const
 {
-    return QList<QWidget*>() << d->m_expandCollapseButton << d->m_searchResultWidget->toolBarWidgets();
+    return QList<QWidget*>() << d->m_expandCollapseButton;
 }
 
 /*!
@@ -445,6 +445,23 @@ QString SearchResult::textToReplace() const
     return m_widget->textToReplace();
 }
 
+/*!
+    \fn void SearchResult::setInfo(const QString &label, const QString &toolTip, const QString &term)
+    \brief Set the information about the search that is show in the top-left corner of
+    the search result window.
+
+    The \a label should be a string that shortly describes the
+    search, i.e. search filter and a most relevant search options, followed by a colon ':'.
+    E.g. \code{Project 'myproject':}
+    The search \a term will be shown behind the colon.
+    The \a toolTip should elaborate on the search parameters, like file patterns that are searched and
+    find flags.
+*/
+void SearchResult::setInfo(const QString &label, const QString &toolTip, const QString &term)
+{
+    m_widget->setInfo(label, toolTip, term);
+}
+
 /*!
     \fn void SearchResult::addResult(const QString &fileName, int lineNumber, const QString &rowText, int searchTermStart, int searchTermLength, const QVariant &userData)
     \brief Adds a single result line to the search results.
diff --git a/src/plugins/find/searchresultwindow.h b/src/plugins/find/searchresultwindow.h
index 6a17ec5987c07359aa822ace10346fb094bc6197..a3be1133b97a06f6d3938fabb3182bde910ee2a3 100644
--- a/src/plugins/find/searchresultwindow.h
+++ b/src/plugins/find/searchresultwindow.h
@@ -98,6 +98,7 @@ public:
     void setUserData(const QVariant &data);
     QVariant userData() const;
     QString textToReplace() const;
+    void setInfo(const QString &label, const QString &toolTip, const QString &term);
 
 public slots:
     void addResult(const QString &fileName, int lineNumber, const QString &lineText,
diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp
index 12bbf71481dd1f732b68f48cb4c38b2bce3881c7..63cc3588014cf4378d053e56d80b040f416933c1 100644
--- a/src/plugins/projectexplorer/allprojectsfind.cpp
+++ b/src/plugins/projectexplorer/allprojectsfind.cpp
@@ -46,6 +46,7 @@
 
 #include <QtGui/QGridLayout>
 #include <QtGui/QLabel>
+#include <QtGui/QHBoxLayout>
 
 using namespace Find;
 using namespace ProjectExplorer;
@@ -116,6 +117,16 @@ Utils::FileIterator *AllProjectsFind::files() const
     return new Utils::FileIterator(encodings.keys(), encodings.values());
 }
 
+QString AllProjectsFind::label() const
+{
+    return tr("All Projects:");
+}
+
+QString AllProjectsFind::toolTip() const
+{
+    return tr("Filter: %1\n%2").arg(fileNameFilters().join(QLatin1String(",")));
+}
+
 QWidget *AllProjectsFind::createConfigWidget()
 {
     if (!m_configWidget) {
diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h
index a00b6bd3da5b51de8e2ea1bd3e69f6b6ae50bfbe..8979eabb0d4eb651d06dc1ba721727e56d2502ef 100644
--- a/src/plugins/projectexplorer/allprojectsfind.h
+++ b/src/plugins/projectexplorer/allprojectsfind.h
@@ -63,6 +63,9 @@ public:
 protected:
     virtual QList<Project *> projects() const;
     Utils::FileIterator *files() const;
+    QString label() const;
+    QString toolTip() const;
+
 
 private:
     ProjectExplorerPlugin *m_plugin;
diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp
index 8754a4403db0d079c78ccbf4e4b15c7818f7d43b..9d5c93083744427a98612c853ff43e1b14c6ac91 100644
--- a/src/plugins/projectexplorer/currentprojectfind.cpp
+++ b/src/plugins/projectexplorer/currentprojectfind.cpp
@@ -33,11 +33,14 @@
 #include "currentprojectfind.h"
 
 #include "projectexplorer.h"
+#include "project.h"
 
 #include <utils/qtcassert.h>
 
 #include <QtCore/QDebug>
 #include <QtCore/QSettings>
+#include <QtGui/QLabel>
+#include <QtGui/QHBoxLayout>
 
 using namespace Find;
 using namespace ProjectExplorer;
@@ -72,6 +75,11 @@ QList<Project *> CurrentProjectFind::projects() const
     return QList<Project *>() << m_plugin->currentProject();
 }
 
+QString CurrentProjectFind::label() const
+{
+    return tr("Project '%1':").arg(projects().first()->displayName());
+}
+
 void CurrentProjectFind::writeSettings(QSettings *settings)
 {
     settings->beginGroup(QLatin1String("CurrentProjectFind"));
diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h
index 1da22d9be6df0bdbc47a1c9f6c69e4b822631225..3759697c9b0ea9fe1b6ddab76a279acfdcb4f55a 100644
--- a/src/plugins/projectexplorer/currentprojectfind.h
+++ b/src/plugins/projectexplorer/currentprojectfind.h
@@ -63,6 +63,7 @@ public:
 
 protected:
     QList<Project *> projects() const;
+    QString label() const;
 
 private:
     ProjectExplorerPlugin *m_plugin;
diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp
index 85812558431b5fc33d7e8f638f82575bfea5dd80..3a2005c22d33ad65772e40c021f1f0bc7eb5228b 100644
--- a/src/plugins/qmljseditor/qmljsfindreferences.cpp
+++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp
@@ -61,6 +61,7 @@
 #include <QtCore/QtConcurrentMap>
 #include <QtCore/QDir>
 #include <QtGui/QApplication>
+#include <QtGui/QLabel>
 #include <qtconcurrent/runextensions.h>
 
 #include <functional>
@@ -849,7 +850,7 @@ static void find_helper(QFutureInterface<FindReferences::Usage> &future,
     future.setProgressRange(0, files.size());
 
     // report a dummy usage to indicate the search is starting
-    FindReferences::Usage searchStarting(replacement, QString(), 0, 0, 0);
+    FindReferences::Usage searchStarting(replacement, name, 0, 0, 0);
 
     if (findTarget.typeKind() == findTarget.TypeKind){
         const ObjectValue *typeValue = value_cast<const ObjectValue*>(findTarget.targetValue());
@@ -868,6 +869,8 @@ static void find_helper(QFutureInterface<FindReferences::Usage> &future,
         scope->lookupMember(name, context, &scope);
         if (!scope)
             return;
+        if (!scope->className().isEmpty())
+            searchStarting.lineText.prepend(scope->className() + QLatin1Char('.'));
         future.reportResult(searchStarting);
 
         ProcessFile process(context, name, scope);
@@ -912,6 +915,7 @@ void FindReferences::displayResults(int first, int last)
     if (first == 0) {
         Usage dummy = m_watcher.future().resultAt(0);
         QString replacement = dummy.path;
+        QString symbolName = dummy.lineText;
 
         if (replacement.isEmpty()) {
             m_currentSearch = Find::SearchResultWindow::instance()->startNewSearch(Find::SearchResultWindow::SearchOnly);
@@ -921,6 +925,7 @@ void FindReferences::displayResults(int first, int last)
             connect(m_currentSearch, SIGNAL(replaceButtonClicked(QString,QList<Find::SearchResultItem>)),
                     SLOT(onReplaceButtonClicked(QString,QList<Find::SearchResultItem>)));
         }
+        m_currentSearch->setInfo(tr("Usages:"), QString(), symbolName);
         connect(m_currentSearch, SIGNAL(activated(Find::SearchResultItem)),
                 this, SLOT(openEditor(Find::SearchResultItem)));
         Find::SearchResultWindow::instance()->popup(true);
diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp
index 7ede1725c05ea775c8c4e136e04aa9b5da7aa133..1f58df1423bf18739896593757e99a3167bead5f 100644
--- a/src/plugins/texteditor/basefilefind.cpp
+++ b/src/plugins/texteditor/basefilefind.cpp
@@ -52,6 +52,7 @@
 #include <QtGui/QFileDialog>
 #include <QtGui/QCheckBox>
 #include <QtGui/QComboBox>
+#include <QtGui/QHBoxLayout>
 #include <QtGui/QLabel>
 #include <QtGui/QMainWindow>
 #include <QtGui/QPushButton>
@@ -122,6 +123,9 @@ void BaseFileFind::runNewSearch(const QString &txt, Find::FindFlags findFlags,
                                                      ? QString::fromLatin1("TextEditor")
                                                      : QString());
     m_currentSearch->setTextToReplace(txt);
+    m_currentSearch->setInfo(label(),
+                             toolTip().arg(Find::IFindFilter::descriptionForFindFlags(findFlags)),
+                             txt);
     QVariantList searchParameters;
     searchParameters << qVariantFromValue(txt) << qVariantFromValue(findFlags);
     m_currentSearch->setUserData(searchParameters);
diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h
index 093381a807b68b9ea3cfa1e485a6c90ec9df4672..97086b46ea34633df946c126b744bf99db18f66a 100644
--- a/src/plugins/texteditor/basefilefind.h
+++ b/src/plugins/texteditor/basefilefind.h
@@ -80,6 +80,10 @@ public:
 
 protected:
     virtual Utils::FileIterator *files() const = 0;
+    virtual QString label() const = 0; // see Find::SearchResult::setInfo
+    virtual QString toolTip() const = 0; // see Find::SearchResult::setInfo,
+                                         // add %1 placeholder where the find flags should be put
+
     void writeCommonSettings(QSettings *settings);
     void readCommonSettings(QSettings *settings, const QString &defaultFilter);
     QWidget *createPatternWidget();
diff --git a/src/plugins/texteditor/findincurrentfile.cpp b/src/plugins/texteditor/findincurrentfile.cpp
index def69e03fc2ffa79fcb73f62f0f7187c65da5537..7da08853f290f734a3a93d264b772da2692cd876 100644
--- a/src/plugins/texteditor/findincurrentfile.cpp
+++ b/src/plugins/texteditor/findincurrentfile.cpp
@@ -77,6 +77,16 @@ Utils::FileIterator *FindInCurrentFile::files() const
     return new Utils::FileIterator(QStringList() << fileName, QList<QTextCodec *>() << codec);
 }
 
+QString FindInCurrentFile::label() const
+{
+    return tr("File '%1':").arg(QFileInfo(m_currentFile->fileName()).fileName());
+}
+
+QString FindInCurrentFile::toolTip() const
+{
+    return tr("File path: %1\n%2").arg(QDir::toNativeSeparators(m_currentFile->fileName()));
+}
+
 bool FindInCurrentFile::isEnabled() const
 {
     return m_currentFile && !m_currentFile->fileName().isEmpty();
diff --git a/src/plugins/texteditor/findincurrentfile.h b/src/plugins/texteditor/findincurrentfile.h
index f19e2013e183a90455151135f21aafd9ad326b7d..30010efeccfbf2a3c253dd1e0963bae0194db952 100644
--- a/src/plugins/texteditor/findincurrentfile.h
+++ b/src/plugins/texteditor/findincurrentfile.h
@@ -64,6 +64,8 @@ public:
 
 protected:
     Utils::FileIterator *files() const;
+    QString label() const;
+    QString toolTip() const;
 
 private slots:
     void handleFileChange(Core::IEditor *editor);
diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp
index 42b894915b483e0a9e41d8d5dea2f17468a551bc..ff1f9c980cbd6795dc8bef9c815fdd7b7308d7bc 100644
--- a/src/plugins/texteditor/findinfiles.cpp
+++ b/src/plugins/texteditor/findinfiles.cpp
@@ -40,6 +40,7 @@
 #include <QtCore/QDirIterator>
 #include <QtGui/QPushButton>
 #include <QtGui/QFileDialog>
+#include <QtGui/QHBoxLayout>
 #include <QtGui/QVBoxLayout>
 
 using namespace Find;
@@ -74,6 +75,17 @@ Utils::FileIterator *FindInFiles::files() const
                                          Core::EditorManager::instance()->defaultTextCodec());
 }
 
+QString FindInFiles::label() const
+{
+    return tr("Directory '%1':").arg(QFileInfo(m_directory->currentText()).fileName());
+}
+
+QString FindInFiles::toolTip() const
+{
+    return tr("Path: %1\nFilter: %2\n%3").arg(QFileInfo(m_directory->currentText()).absoluteFilePath())
+            .arg(fileNameFilters().join(QLatin1String(",")));
+}
+
 QWidget *FindInFiles::createConfigWidget()
 {
     if (!m_configWidget) {
diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h
index e99fe0543dea3b6e783cab92f16e6ff0025764b6..87dfbfc4dfe867c6cb7f534e14bac7b940426454 100644
--- a/src/plugins/texteditor/findinfiles.h
+++ b/src/plugins/texteditor/findinfiles.h
@@ -63,6 +63,8 @@ public:
 
 protected:
     Utils::FileIterator *files() const;
+    QString label() const;
+    QString toolTip() const;
 
 private slots:
     void openFileBrowser();