From a74de6af81b659ef0dcbbbe25f94d9b527c2be98 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Thu, 13 Feb 2014 13:54:39 +0100
Subject: [PATCH] Utils: Merge FilterLineEdit into FancyLineEdit

Change-Id: Ic53836dade3985c36b0f6767e43b5af0ddb80d72
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
---
 src/libs/utils/fancylineedit.cpp              | 44 +++++++++++-
 src/libs/utils/fancylineedit.h                |  5 ++
 src/libs/utils/filterlineedit.cpp             | 72 -------------------
 src/libs/utils/filterlineedit.h               | 55 --------------
 src/libs/utils/utils-lib.pri                  |  2 -
 src/libs/utils/utils.qbs                      |  2 -
 .../actionmanager/commandmappings.cpp         |  3 +
 .../actionmanager/commandmappings.ui          |  9 +--
 .../coreplugin/dialogs/settingsdialog.cpp     |  5 +-
 .../coreplugin/dialogs/settingsdialog.h       |  4 +-
 src/plugins/coreplugin/find/finddialog.ui     |  7 +-
 src/plugins/coreplugin/find/findtoolbar.cpp   |  1 +
 src/plugins/coreplugin/find/findwidget.ui     |  9 +--
 .../coreplugin/locator/locatorwidget.cpp      |  5 +-
 .../coreplugin/locator/locatorwidget.h        |  4 +-
 src/plugins/git/gerrit/gerritdialog.cpp       |  6 +-
 src/plugins/git/gerrit/gerritdialog.h         |  6 +-
 .../git/gitorious/gitoriousprojectwidget.ui   |  7 +-
 .../gitoriousrepositorywizardpage.ui          |  7 +-
 src/plugins/git/stashdialog.cpp               |  1 +
 src/plugins/git/stashdialog.ui                |  7 +-
 .../devicesupport/deviceprocessesdialog.cpp   |  7 +-
 .../itemlibrary/itemlibrarywidget.cpp         |  3 +-
 .../itemlibrary/itemlibrarywidget.h           |  4 +-
 src/plugins/vcsbase/nicknamedialog.ui         |  7 +-
 src/shared/help/bookmarkmanager.cpp           |  5 +-
 src/shared/help/bookmarkmanager.h             |  6 +-
 src/shared/help/indexwindow.cpp               | 10 ++-
 src/shared/help/indexwindow.h                 | 12 ++--
 src/shared/help/topicchooser.ui               |  6 +-
 src/tools/qtcreatorwidgets/customwidgets.cpp  | 12 ----
 src/tools/qtcreatorwidgets/customwidgets.h    | 12 +---
 32 files changed, 109 insertions(+), 236 deletions(-)
 delete mode 100644 src/libs/utils/filterlineedit.cpp
 delete mode 100644 src/libs/utils/filterlineedit.h

diff --git a/src/libs/utils/fancylineedit.cpp b/src/libs/utils/fancylineedit.cpp
index 5956884f9a4..f6ae4d0e222 100644
--- a/src/libs/utils/fancylineedit.cpp
+++ b/src/libs/utils/fancylineedit.cpp
@@ -77,11 +77,14 @@ public:
     bool m_iconEnabled[2];
 
     HistoryCompleter *m_historyCompleter;
+
+    bool m_isFiltering;
+    QString m_lastFilterText;
 };
 
 
 FancyLineEditPrivate::FancyLineEditPrivate(FancyLineEdit *parent) :
-    QObject(parent), m_lineEdit(parent),  m_historyCompleter(0)
+    QObject(parent), m_lineEdit(parent),  m_historyCompleter(0), m_isFiltering(false)
 {
     for (int i = 0; i < 2; ++i) {
         m_menu[i] = 0;
@@ -297,6 +300,45 @@ void FancyLineEdit::setButtonFocusPolicy(Side side, Qt::FocusPolicy policy)
     d->m_iconbutton[side]->setFocusPolicy(policy);
 }
 
+void FancyLineEdit::setFiltering(bool on)
+{
+    if (on == d->m_isFiltering)
+        return;
+
+    d->m_isFiltering = on;
+    if (on) {
+        d->m_lastFilterText = text();
+        // KDE has custom icons for this. Notice that icon namings are counter intuitive.
+        // If these icons are not available we use the freedesktop standard name before
+        // falling back to a bundled resource.
+        QIcon icon = QIcon::fromTheme(layoutDirection() == Qt::LeftToRight ?
+                         QLatin1String("edit-clear-locationbar-rtl") :
+                         QLatin1String("edit-clear-locationbar-ltr"),
+                         QIcon::fromTheme(QLatin1String("edit-clear"), QIcon(QLatin1String(":/core/images/editclear.png"))));
+
+        setButtonPixmap(Right, icon.pixmap(16));
+        setButtonVisible(Right, true);
+        setPlaceholderText(tr("Filter"));
+        setButtonToolTip(Right, tr("Clear text"));
+        setAutoHideButton(Right, true);
+        connect(this, SIGNAL(rightButtonClicked()), this, SLOT(clear()));
+        connect(this, SIGNAL(textChanged(QString)), this, SLOT(slotTextChanged()));
+    } else {
+        disconnect(this, SIGNAL(rightButtonClicked()), this, SLOT(clear()));
+        disconnect(this, SIGNAL(textChanged(QString)), this, SLOT(slotTextChanged()));
+    }
+}
+
+void FancyLineEdit::slotTextChanged()
+{
+    const QString newlyTypedText = text();
+    if (newlyTypedText != d->m_lastFilterText) {
+        d->m_lastFilterText = newlyTypedText;
+        emit filterChanged(d->m_lastFilterText);
+    }
+}
+
+
 // IconButton - helper class to represent a clickable icon
 
 IconButton::IconButton(QWidget *parent)
diff --git a/src/libs/utils/fancylineedit.h b/src/libs/utils/fancylineedit.h
index 23571c51fcb..d1432573cc6 100644
--- a/src/libs/utils/fancylineedit.h
+++ b/src/libs/utils/fancylineedit.h
@@ -103,14 +103,19 @@ public:
     // Sets a completer that is not a history completer.
     void setSpecialCompleter(QCompleter *completer);
 
+    // Enables fitering
+    void setFiltering(bool on);
+
 signals:
     void buttonClicked(Utils::FancyLineEdit::Side side);
     void leftButtonClicked();
     void rightButtonClicked();
+    void filterChanged(const QString &);
 
 private slots:
     void checkButtons(const QString &);
     void iconClicked();
+    void slotTextChanged(); // For filtering.
 
 protected:
     void resizeEvent(QResizeEvent *e);
diff --git a/src/libs/utils/filterlineedit.cpp b/src/libs/utils/filterlineedit.cpp
deleted file mode 100644
index beb2670f887..00000000000
--- a/src/libs/utils/filterlineedit.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights.  These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "filterlineedit.h"
-
-/*!
-    \class Utils::FilterLineEdit
-
-    \brief The FilterLineEdit class is a fancy line edit customized for
-    filtering purposes with a clear button.
-*/
-
-namespace Utils {
-
-FilterLineEdit::FilterLineEdit(QWidget *parent) :
-   FancyLineEdit(parent),
-   m_lastFilterText(text())
-{
-    // KDE has custom icons for this. Notice that icon namings are counter intuitive.
-    // If these icons are not available we use the freedesktop standard name before
-    // falling back to a bundled resource.
-    QIcon icon = QIcon::fromTheme(layoutDirection() == Qt::LeftToRight ?
-                     QLatin1String("edit-clear-locationbar-rtl") :
-                     QLatin1String("edit-clear-locationbar-ltr"),
-                     QIcon::fromTheme(QLatin1String("edit-clear"), QIcon(QLatin1String(":/core/images/editclear.png"))));
-
-    setButtonPixmap(Right, icon.pixmap(16));
-    setButtonVisible(Right, true);
-    setPlaceholderText(tr("Filter"));
-    setButtonToolTip(Right, tr("Clear text"));
-    setAutoHideButton(Right, true);
-    connect(this, SIGNAL(rightButtonClicked()), this, SLOT(clear()));
-    connect(this, SIGNAL(textChanged(QString)), this, SLOT(slotTextChanged()));
-}
-
-void FilterLineEdit::slotTextChanged()
-{
-    const QString newlyTypedText = text();
-    if (newlyTypedText != m_lastFilterText) {
-        m_lastFilterText = newlyTypedText;
-        emit filterChanged(m_lastFilterText);
-    }
-}
-
-
-} // namespace Utils
diff --git a/src/libs/utils/filterlineedit.h b/src/libs/utils/filterlineedit.h
deleted file mode 100644
index 37eff4c42b5..00000000000
--- a/src/libs/utils/filterlineedit.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights.  These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef FILTERLINEEDIT_H
-#define FILTERLINEEDIT_H
-
-#include "fancylineedit.h"
-
-namespace Utils {
-
-class QTCREATOR_UTILS_EXPORT FilterLineEdit : public FancyLineEdit
-{
-    Q_OBJECT
-public:
-    explicit FilterLineEdit(QWidget *parent = 0);
-
-signals:
-    void filterChanged(const QString &);
-
-private slots:
-    void slotTextChanged();
-
-private:
-    QString m_lastFilterText;
-};
-
-} // namespace Utils
-
-#endif // FILTERLINEEDIT_H
diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri
index 297241a3d36..6d158ea49eb 100644
--- a/src/libs/utils/utils-lib.pri
+++ b/src/libs/utils/utils-lib.pri
@@ -53,7 +53,6 @@ SOURCES += $$PWD/environment.cpp \
     $$PWD/detailsbutton.cpp \
     $$PWD/detailswidget.cpp \
     $$PWD/changeset.cpp \
-    $$PWD/filterlineedit.cpp \
     $$PWD/faketooltip.cpp \
     $$PWD/htmldocextractor.cpp \
     $$PWD/navigationtreeview.cpp \
@@ -143,7 +142,6 @@ HEADERS += \
     $$PWD/detailsbutton.h \
     $$PWD/detailswidget.h \
     $$PWD/changeset.h \
-    $$PWD/filterlineedit.h \
     $$PWD/faketooltip.h \
     $$PWD/htmldocextractor.h \
     $$PWD/navigationtreeview.h \
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index 2a415a3f238..550f1b3f3db 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -89,8 +89,6 @@ QtcLibrary {
         "filewizardpage.cpp",
         "filewizardpage.h",
         "filewizardpage.ui",
-        "filterlineedit.cpp",
-        "filterlineedit.h",
         "flowlayout.cpp",
         "flowlayout.h",
         "function.cpp",
diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.cpp b/src/plugins/coreplugin/actionmanager/commandmappings.cpp
index 53a96cbab46..0b31e5cfb30 100644
--- a/src/plugins/coreplugin/actionmanager/commandmappings.cpp
+++ b/src/plugins/coreplugin/actionmanager/commandmappings.cpp
@@ -59,6 +59,9 @@ QWidget *CommandMappings::widget()
         m_page->targetEdit->setAutoHideButton(Utils::FancyLineEdit::Right, true);
         m_page->targetEdit->setPlaceholderText(QString());
         m_page->targetEdit->installEventFilter(this);
+        m_page->targetEdit->setFiltering(true);
+
+        m_page->filterEdit->setFiltering(true);
 
         connect(m_page->targetEdit, SIGNAL(buttonClicked(Utils::FancyLineEdit::Side)),
             this, SLOT(removeTargetIdentifier()));
diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.ui b/src/plugins/coreplugin/actionmanager/commandmappings.ui
index ee4f1119cda..3eabb66bdf0 100644
--- a/src/plugins/coreplugin/actionmanager/commandmappings.ui
+++ b/src/plugins/coreplugin/actionmanager/commandmappings.ui
@@ -20,7 +20,7 @@
       <item>
        <layout class="QHBoxLayout">
         <item>
-         <widget class="Utils::FilterLineEdit" name="filterEdit"/>
+         <widget class="Utils::FancyLineEdit" name="filterEdit"/>
         </item>
        </layout>
       </item>
@@ -115,7 +115,7 @@
          </widget>
         </item>
         <item>
-         <widget class="Utils::FilterLineEdit" name="targetEdit"/>
+         <widget class="Utils::FancyLineEdit" name="targetEdit"/>
         </item>
         <item>
          <widget class="QPushButton" name="resetButton">
@@ -159,11 +159,6 @@
    <extends>QLineEdit</extends>
    <header location="global">utils/fancylineedit.h</header>
   </customwidget>
-  <customwidget>
-   <class>Utils::FilterLineEdit</class>
-   <extends>Utils::FancyLineEdit</extends>
-   <header location="global">utils/filterlineedit.h</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
index e2de47cf983..c28f3907667 100644
--- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
@@ -33,7 +33,7 @@
 
 #include <extensionsystem/pluginmanager.h>
 #include <utils/hostosinfo.h>
-#include <utils/filterlineedit.h>
+#include <utils/fancylineedit.h>
 
 #include <QApplication>
 #include <QDialogButtonBox>
@@ -304,7 +304,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
     m_proxyModel(new CategoryFilterModel(this)),
     m_model(new CategoryModel(this)),
     m_stackedLayout(new QStackedLayout),
-    m_filterLineEdit(new Utils::FilterLineEdit),
+    m_filterLineEdit(new Utils::FancyLineEdit),
     m_categoryList(new CategoryListView),
     m_headerLabel(new QLabel),
     m_running(false),
@@ -312,6 +312,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
     m_finished(false)
 {
     m_applied = false;
+    m_filterLineEdit->setFiltering(true);
 
     createGui();
     setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.h b/src/plugins/coreplugin/dialogs/settingsdialog.h
index ce0d62de401..0809f25b200 100644
--- a/src/plugins/coreplugin/dialogs/settingsdialog.h
+++ b/src/plugins/coreplugin/dialogs/settingsdialog.h
@@ -45,7 +45,7 @@ class QLabel;
 class QListView;
 QT_END_NAMESPACE
 
-namespace Utils { class FilterLineEdit; }
+namespace Utils { class FancyLineEdit; }
 
 namespace Core {
 namespace Internal {
@@ -99,7 +99,7 @@ private:
     Id m_currentCategory;
     Id m_currentPage;
     QStackedLayout *m_stackedLayout;
-    Utils::FilterLineEdit *m_filterLineEdit;
+    Utils::FancyLineEdit *m_filterLineEdit;
     QListView *m_categoryList;
     QLabel *m_headerLabel;
     bool m_running;
diff --git a/src/plugins/coreplugin/find/finddialog.ui b/src/plugins/coreplugin/find/finddialog.ui
index 19d41c938cf..1f3c900b3ff 100644
--- a/src/plugins/coreplugin/find/finddialog.ui
+++ b/src/plugins/coreplugin/find/finddialog.ui
@@ -171,7 +171,7 @@
     </widget>
    </item>
    <item row="1" column="1">
-    <widget class="Utils::FilterLineEdit" name="searchTerm"/>
+    <widget class="Utils::FancyLineEdit" name="searchTerm"/>
    </item>
    <item row="3" column="0" colspan="2">
     <widget class="QWidget" name="configWidget" native="true">
@@ -191,11 +191,6 @@
    <extends>QLineEdit</extends>
    <header location="global">utils/fancylineedit.h</header>
   </customwidget>
-  <customwidget>
-   <class>Utils::FilterLineEdit</class>
-   <extends>Utils::FancyLineEdit</extends>
-   <header location="global">utils/filterlineedit.h</header>
-  </customwidget>
  </customwidgets>
  <tabstops>
   <tabstop>filterList</tabstop>
diff --git a/src/plugins/coreplugin/find/findtoolbar.cpp b/src/plugins/coreplugin/find/findtoolbar.cpp
index e686c3fd481..69861b648f6 100644
--- a/src/plugins/coreplugin/find/findtoolbar.cpp
+++ b/src/plugins/coreplugin/find/findtoolbar.cpp
@@ -104,6 +104,7 @@ FindToolBar::FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumen
     m_ui.findEdit->setButtonMenu(Utils::FancyLineEdit::Left, lineEditMenu);
     m_ui.findEdit->setButtonVisible(Utils::FancyLineEdit::Left, true);
     m_ui.findEdit->setPlaceholderText(QString());
+    m_ui.findEdit->setFiltering(true);
     m_ui.replaceEdit->setPlaceholderText(QString());
 
     connect(m_ui.findEdit, SIGNAL(textChanged(QString)), this, SLOT(invokeFindIncremental()));
diff --git a/src/plugins/coreplugin/find/findwidget.ui b/src/plugins/coreplugin/find/findwidget.ui
index 4472102781f..1278a8f8d7a 100644
--- a/src/plugins/coreplugin/find/findwidget.ui
+++ b/src/plugins/coreplugin/find/findwidget.ui
@@ -40,7 +40,7 @@
     </widget>
    </item>
    <item row="0" column="1">
-    <widget class="Utils::FilterLineEdit" name="findEdit">
+    <widget class="Utils::FancyLineEdit" name="findEdit">
      <property name="minimumSize">
       <size>
        <width>100</width>
@@ -137,7 +137,7 @@
       <number>0</number>
      </property>
      <item>
-      <widget class="Utils::FilterLineEdit" name="replaceEdit">
+      <widget class="Utils::FancyLineEdit" name="replaceEdit">
        <property name="minimumSize">
         <size>
          <width>100</width>
@@ -275,11 +275,6 @@
    <extends>QLineEdit</extends>
    <header location="global">utils/fancylineedit.h</header>
   </customwidget>
-  <customwidget>
-   <class>Utils::FilterLineEdit</class>
-   <extends>Utils::FancyLineEdit</extends>
-   <header location="global">utils/filterlineedit.h</header>
-  </customwidget>
  </customwidgets>
  <tabstops>
   <tabstop>findEdit</tabstop>
diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp
index 19a5cd38b1f..66ee96094ad 100644
--- a/src/plugins/coreplugin/locator/locatorwidget.cpp
+++ b/src/plugins/coreplugin/locator/locatorwidget.cpp
@@ -40,7 +40,7 @@
 #include <coreplugin/fileiconprovider.h>
 #include <coreplugin/icontext.h>
 #include <utils/appmainwindow.h>
-#include <utils/filterlineedit.h>
+#include <utils/fancylineedit.h>
 #include <utils/hostosinfo.h>
 #include <utils/qtcassert.h>
 #include <utils/runextensions.h>
@@ -224,7 +224,7 @@ LocatorWidget::LocatorWidget(Locator *qop) :
     m_filterMenu(new QMenu(this)),
     m_refreshAction(new QAction(tr("Refresh"), this)),
     m_configureAction(new QAction(tr("Configure..."), this)),
-    m_fileLineEdit(new Utils::FilterLineEdit),
+    m_fileLineEdit(new Utils::FancyLineEdit),
     m_updateRequested(false),
     m_acceptRequested(false),
     m_possibleToolTipRequest(false)
@@ -248,6 +248,7 @@ LocatorWidget::LocatorWidget(Locator *qop) :
 
     setWindowIcon(QIcon(QLatin1String(":/locator/images/locator.png")));
     const QPixmap image = QPixmap(QLatin1String(Core::Constants::ICON_MAGNIFIER));
+    m_fileLineEdit->setFiltering(true);
     m_fileLineEdit->setButtonPixmap(Utils::FancyLineEdit::Left, image);
     m_fileLineEdit->setButtonToolTip(Utils::FancyLineEdit::Left, tr("Options"));
     m_fileLineEdit->setFocusPolicy(Qt::ClickFocus);
diff --git a/src/plugins/coreplugin/locator/locatorwidget.h b/src/plugins/coreplugin/locator/locatorwidget.h
index 491d5a112f0..a7e6021f6b1 100644
--- a/src/plugins/coreplugin/locator/locatorwidget.h
+++ b/src/plugins/coreplugin/locator/locatorwidget.h
@@ -42,7 +42,7 @@ class QMenu;
 class QTreeView;
 QT_END_NAMESPACE
 
-namespace Utils { class FilterLineEdit; }
+namespace Utils { class FancyLineEdit; }
 
 namespace Core {
 namespace Internal {
@@ -90,7 +90,7 @@ private:
     QMenu *m_filterMenu;
     QAction *m_refreshAction;
     QAction *m_configureAction;
-    Utils::FilterLineEdit *m_fileLineEdit;
+    Utils::FancyLineEdit *m_fileLineEdit;
     QTimer *m_showPopupTimer;
     QFutureWatcher<LocatorFilterEntry> *m_entriesWatcher;
     QMap<Core::Id, QAction *> m_filterActionMap;
diff --git a/src/plugins/git/gerrit/gerritdialog.cpp b/src/plugins/git/gerrit/gerritdialog.cpp
index 58e402bc5a6..2cf712dc567 100644
--- a/src/plugins/git/gerrit/gerritdialog.cpp
+++ b/src/plugins/git/gerrit/gerritdialog.cpp
@@ -57,11 +57,12 @@ static const int layoutSpacing  = 5;
 static const int maxTitleWidth = 350;
 
 QueryValidatingLineEdit::QueryValidatingLineEdit(QWidget *parent)
-    : Utils::FilterLineEdit(parent)
+    : Utils::FancyLineEdit(parent)
     , m_valid(true)
     , m_okTextColor(palette().color(QPalette::Active, QPalette::Text))
     , m_errorTextColor(Qt::red)
 {
+    setFiltering(true);
     connect(this, SIGNAL(textChanged(QString)), this, SLOT(setValid()));
 }
 
@@ -98,7 +99,7 @@ GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p,
     , m_treeView(new QTreeView)
     , m_detailsBrowser(new QTextBrowser)
     , m_queryLineEdit(new QueryValidatingLineEdit)
-    , m_filterLineEdit(new Utils::FilterLineEdit)
+    , m_filterLineEdit(new Utils::FancyLineEdit)
     , m_repositoryChooser(new Utils::PathChooser)
     , m_buttonBox(new QDialogButtonBox(QDialogButtonBox::Close))
     , m_repositoryChooserLabel(new QLabel(tr("Apply in:") + QLatin1Char(' '), this))
@@ -123,6 +124,7 @@ GerritDialog::GerritDialog(const QSharedPointer<GerritParameters> &p,
     filterLayout->addWidget(m_queryLineEdit);
     filterLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Ignored));
     m_filterLineEdit->setFixedWidth(300);
+    m_filterLineEdit->setFiltering(true);
     filterLayout->addWidget(m_filterLineEdit);
     connect(m_filterLineEdit, SIGNAL(filterChanged(QString)),
             m_filterModel, SLOT(setFilterFixedString(QString)));
diff --git a/src/plugins/git/gerrit/gerritdialog.h b/src/plugins/git/gerrit/gerritdialog.h
index 1a7fc3d5321..ebb1fcf0b55 100644
--- a/src/plugins/git/gerrit/gerritdialog.h
+++ b/src/plugins/git/gerrit/gerritdialog.h
@@ -30,7 +30,7 @@
 #ifndef GERRIT_INTERNAL_GERRITDIALOG_H
 #define GERRIT_INTERNAL_GERRITDIALOG_H
 
-#include <utils/filterlineedit.h>
+#include <utils/fancylineedit.h>
 #include <utils/pathchooser.h>
 
 #include <QDialog>
@@ -54,7 +54,7 @@ class GerritParameters;
 class GerritModel;
 class GerritChange;
 
-class QueryValidatingLineEdit : public Utils::FilterLineEdit
+class QueryValidatingLineEdit : public Utils::FancyLineEdit
 {
     Q_OBJECT
 
@@ -117,7 +117,7 @@ private:
     QTreeView *m_treeView;
     QTextBrowser *m_detailsBrowser;
     QueryValidatingLineEdit *m_queryLineEdit;
-    Utils::FilterLineEdit *m_filterLineEdit;
+    Utils::FancyLineEdit *m_filterLineEdit;
     Utils::PathChooser *m_repositoryChooser;
     QDialogButtonBox *m_buttonBox;
     QPushButton *m_displayButton;
diff --git a/src/plugins/git/gitorious/gitoriousprojectwidget.ui b/src/plugins/git/gitorious/gitoriousprojectwidget.ui
index 822cd5993c9..b72c1bf6105 100644
--- a/src/plugins/git/gitorious/gitoriousprojectwidget.ui
+++ b/src/plugins/git/gitorious/gitoriousprojectwidget.ui
@@ -49,7 +49,7 @@
     </widget>
    </item>
    <item row="0" column="0">
-    <widget class="Utils::FilterLineEdit" name="filterLineEdit"/>
+    <widget class="Utils::FancyLineEdit" name="filterLineEdit"/>
    </item>
   </layout>
  </widget>
@@ -59,11 +59,6 @@
    <extends>QLineEdit</extends>
    <header location="global">utils/fancylineedit.h</header>
   </customwidget>
-  <customwidget>
-   <class>Utils::FilterLineEdit</class>
-   <extends>Utils::FancyLineEdit</extends>
-   <header location="global">utils/filterlineedit.h</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
diff --git a/src/plugins/git/gitorious/gitoriousrepositorywizardpage.ui b/src/plugins/git/gitorious/gitoriousrepositorywizardpage.ui
index 057f513c8f0..f1d46bc02ca 100644
--- a/src/plugins/git/gitorious/gitoriousrepositorywizardpage.ui
+++ b/src/plugins/git/gitorious/gitoriousrepositorywizardpage.ui
@@ -15,7 +15,7 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="Utils::FilterLineEdit" name="filterLineEdit">
+    <widget class="Utils::FancyLineEdit" name="filterLineEdit">
      <property name="focusPolicy">
       <enum>Qt::ClickFocus</enum>
      </property>
@@ -32,11 +32,6 @@
    <extends>QLineEdit</extends>
    <header location="global">utils/fancylineedit.h</header>
   </customwidget>
-  <customwidget>
-   <class>Utils::FilterLineEdit</class>
-   <extends>Utils::FancyLineEdit</extends>
-   <header location="global">utils/filterlineedit.h</header>
-  </customwidget>
  </customwidgets>
  <tabstops>
   <tabstop>filterLineEdit</tabstop>
diff --git a/src/plugins/git/stashdialog.cpp b/src/plugins/git/stashdialog.cpp
index 644e0001cd5..f0df45edf62 100644
--- a/src/plugins/git/stashdialog.cpp
+++ b/src/plugins/git/stashdialog.cpp
@@ -115,6 +115,7 @@ StashDialog::StashDialog(QWidget *parent) :
     setAttribute(Qt::WA_DeleteOnClose, true);  // Do not update unnecessarily
 
     ui->setupUi(this);
+    ui->filterLineEdit->setFiltering(true);
     // Buttons
     ui->buttonBox->addButton(m_showCurrentButton, QDialogButtonBox::ActionRole);
     connect(m_showCurrentButton, SIGNAL(clicked()), this, SLOT(showCurrent()));
diff --git a/src/plugins/git/stashdialog.ui b/src/plugins/git/stashdialog.ui
index 32317557010..cbece9c6c67 100644
--- a/src/plugins/git/stashdialog.ui
+++ b/src/plugins/git/stashdialog.ui
@@ -24,7 +24,7 @@
       </widget>
      </item>
      <item>
-      <widget class="Utils::FilterLineEdit" name="filterLineEdit"/>
+      <widget class="Utils::FancyLineEdit" name="filterLineEdit"/>
      </item>
      <item>
       <widget class="QTreeView" name="stashView"/>
@@ -49,11 +49,6 @@
    <extends>QLineEdit</extends>
    <header location="global">utils/fancylineedit.h</header>
   </customwidget>
-  <customwidget>
-   <class>Utils::FilterLineEdit</class>
-   <extends>Utils::FancyLineEdit</extends>
-   <header location="global">utils/filterlineedit.h</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections>
diff --git a/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp b/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp
index c31a8fb7a5c..f6105e41b84 100644
--- a/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp
+++ b/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp
@@ -32,7 +32,7 @@
 #include <projectexplorer/kitchooser.h>
 #include <projectexplorer/kitinformation.h>
 
-#include <utils/filterlineedit.h>
+#include <utils/fancylineedit.h>
 #include <utils/qtcassert.h>
 
 #include <QDialogButtonBox>
@@ -115,7 +115,7 @@ public:
 
     QTreeView *procView;
     QTextBrowser *errorText;
-    FilterLineEdit *processFilterLineEdit;
+    FancyLineEdit *processFilterLineEdit;
     QPushButton *updateListButton;
     QPushButton *killProcessButton;
     QPushButton *acceptButton;
@@ -135,10 +135,11 @@ DeviceProcessesDialogPrivate::DeviceProcessesDialogPrivate(KitChooser *chooser,
 
     processList = 0;
 
-    processFilterLineEdit = new FilterLineEdit(q);
+    processFilterLineEdit = new FancyLineEdit(q);
     processFilterLineEdit->setPlaceholderText(DeviceProcessesDialog::tr("Filter"));
     processFilterLineEdit->setFocus(Qt::TabFocusReason);
     processFilterLineEdit->setHistoryCompleter(QLatin1String("DeviceProcessDialogFilter"));
+    processFilterLineEdit->setFiltering(true);
 
     kitChooser->populate();
 
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp
index 4f73ead353d..d3e15e01cda 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp
@@ -115,12 +115,13 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
     connect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(setCurrentIndexOfStackedWidget(int)));
     connect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(updateSearch()));
 
-    m_filterLineEdit = new Utils::FilterLineEdit(this);
+    m_filterLineEdit = new Utils::FancyLineEdit(this);
     m_filterLineEdit->setObjectName(QLatin1String("itemLibrarySearchInput"));
     m_filterLineEdit->setPlaceholderText(tr("<Filter>", "Library search input hint text"));
     m_filterLineEdit->setDragEnabled(false);
     m_filterLineEdit->setMinimumWidth(75);
     m_filterLineEdit->setTextMargins(0, 0, 20, 0);
+    m_filterLineEdit->setFiltering(true);
     QWidget *lineEditFrame = new QWidget(this);
     lineEditFrame->setObjectName(QLatin1String("itemLibrarySearchInputFrame"));
     QGridLayout *lineEditLayout = new QGridLayout(lineEditFrame);
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h
index 44ef45139e1..bbbb7f19561 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h
@@ -33,7 +33,7 @@
 #include "itemlibraryinfo.h"
 #include "itemlibrarycomponents.h"
 
-#include <utils/filterlineedit.h>
+#include <utils/fancylineedit.h>
 
 #include <QFrame>
 #include <QToolButton>
@@ -132,7 +132,7 @@ private:
 
     QWeakPointer<QStackedWidget> m_stackedWidget;
 
-    QWeakPointer<Utils::FilterLineEdit> m_filterLineEdit;
+    QWeakPointer<Utils::FancyLineEdit> m_filterLineEdit;
     QScopedPointer<QQuickView> m_itemsView;
     QScopedPointer<Internal::ItemLibraryTreeView> m_resourcesView;
 
diff --git a/src/plugins/vcsbase/nicknamedialog.ui b/src/plugins/vcsbase/nicknamedialog.ui
index 8cc4b2af45e..35293e1bcfd 100644
--- a/src/plugins/vcsbase/nicknamedialog.ui
+++ b/src/plugins/vcsbase/nicknamedialog.ui
@@ -15,7 +15,7 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="Utils::FilterLineEdit" name="filterLineEdit"/>
+    <widget class="Utils::FancyLineEdit" name="filterLineEdit"/>
    </item>
    <item>
     <widget class="QTreeView" name="filterTreeView"/>
@@ -38,11 +38,6 @@
    <extends>QLineEdit</extends>
    <header location="global">utils/fancylineedit.h</header>
   </customwidget>
-  <customwidget>
-   <class>Utils::FilterLineEdit</class>
-   <extends>Utils::FancyLineEdit</extends>
-   <header location="global">utils/filterlineedit.h</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections>
diff --git a/src/shared/help/bookmarkmanager.cpp b/src/shared/help/bookmarkmanager.cpp
index ff1170ce5aa..5089cf09bf4 100644
--- a/src/shared/help/bookmarkmanager.cpp
+++ b/src/shared/help/bookmarkmanager.cpp
@@ -31,7 +31,7 @@
 
 #include <localhelpmanager.h>
 
-#include <utils/filterlineedit.h>
+#include <utils/fancylineedit.h>
 #include <utils/styledbar.h>
 
 #include <QMenu>
@@ -424,7 +424,8 @@ void BookmarkWidget::setup(bool showButtons)
     vlayout->setMargin(0);
     vlayout->setSpacing(0);
 
-    searchField = new Utils::FilterLineEdit(this);
+    searchField = new Utils::FancyLineEdit(this);
+    searchField->setFiltering(true);
     setFocusProxy(searchField);
 
     Utils::StyledBar *toolbar = new Utils::StyledBar(this);
diff --git a/src/shared/help/bookmarkmanager.h b/src/shared/help/bookmarkmanager.h
index f069a9d0210..d2e5424940f 100644
--- a/src/shared/help/bookmarkmanager.h
+++ b/src/shared/help/bookmarkmanager.h
@@ -45,7 +45,6 @@
 #include <QStandardItemModel>
 
 QT_BEGIN_NAMESPACE
-
 class QEvent;
 class QLineEdit;
 class QTreeView;
@@ -53,9 +52,10 @@ class QToolButton;
 class QStandardItem;
 class QAbstractItemModel;
 class QSortFilterProxyModel;
-
 QT_END_NAMESPACE
 
+namespace Utils { class FancyLineEdit; }
+
 class BookmarkManager;
 
 class BookmarkDialog : public QDialog
@@ -133,7 +133,7 @@ private:
 private:
     QRegExp regExp;
     TreeView *treeView;
-    QLineEdit *searchField;
+    Utils::FancyLineEdit *searchField;
     QToolButton *addButton;
     QToolButton *removeButton;
     BookmarkManager *bookmarkManager;
diff --git a/src/shared/help/indexwindow.cpp b/src/shared/help/indexwindow.cpp
index 39ead89708c..529bfb2e836 100644
--- a/src/shared/help/indexwindow.cpp
+++ b/src/shared/help/indexwindow.cpp
@@ -36,7 +36,7 @@
 #include <localhelpmanager.h>
 #include <openpagesmanager.h>
 
-#include <utils/filterlineedit.h>
+#include <utils/fancylineedit.h>
 #include <utils/hostosinfo.h>
 #include <utils/styledbar.h>
 
@@ -59,8 +59,9 @@ IndexWindow::IndexWindow()
 {
     QVBoxLayout *layout = new QVBoxLayout(this);
 
-    m_searchLineEdit = new Utils::FilterLineEdit();
+    m_searchLineEdit = new Utils::FancyLineEdit();
     m_searchLineEdit->setPlaceholderText(QString());
+    m_searchLineEdit->setFiltering(true);
     setFocusProxy(m_searchLineEdit);
     connect(m_searchLineEdit, SIGNAL(textChanged(QString)), this,
         SLOT(filterIndices(QString)));
@@ -191,6 +192,11 @@ void IndexWindow::setSearchLineEditText(const QString &text)
     m_searchLineEdit->setText(text);
 }
 
+QString IndexWindow::searchLineEditText() const
+{
+    return m_searchLineEdit->text();
+}
+
 void IndexWindow::open(QHelpIndexWidget* indexWidget, const QModelIndex &index)
 {
     QHelpIndexModel *model = qobject_cast<QHelpIndexModel*>(indexWidget->model());
diff --git a/src/shared/help/indexwindow.h b/src/shared/help/indexwindow.h
index 3ca06868951..1e5f17d53b9 100644
--- a/src/shared/help/indexwindow.h
+++ b/src/shared/help/indexwindow.h
@@ -32,15 +32,14 @@
 
 #include <QUrl>
 #include <QWidget>
-#include <QLineEdit>
 
 QT_BEGIN_NAMESPACE
-
 class QHelpIndexWidget;
 class QModelIndex;
-
 QT_END_NAMESPACE
 
+namespace Utils { class FancyLineEdit; }
+
 class IndexWindow : public QWidget
 {
     Q_OBJECT
@@ -50,10 +49,7 @@ public:
     ~IndexWindow();
 
     void setSearchLineEditText(const QString &text);
-    QString searchLineEditText() const
-    {
-        return m_searchLineEdit->text();
-    }
+    QString searchLineEditText() const;
 
 signals:
     void linkActivated(const QUrl &link);
@@ -69,7 +65,7 @@ private:
     bool eventFilter(QObject *obj, QEvent *e);
     void open(QHelpIndexWidget* indexWidget, const QModelIndex &index);
 
-    QLineEdit *m_searchLineEdit;
+    Utils::FancyLineEdit *m_searchLineEdit;
     QHelpIndexWidget *m_indexWidget;
 };
 
diff --git a/src/shared/help/topicchooser.ui b/src/shared/help/topicchooser.ui
index 120cb2ee34e..57ab39b3945 100644
--- a/src/shared/help/topicchooser.ui
+++ b/src/shared/help/topicchooser.ui
@@ -28,7 +28,7 @@
     </widget>
    </item>
    <item>
-    <widget class="Utils::FilterLineEdit" name="lineEdit"/>
+    <widget class="Utils::FancyLineEdit" name="lineEdit"/>
    </item>
    <item>
     <widget class="QListView" name="listWidget"/>
@@ -86,9 +86,9 @@
  </widget>
  <customwidgets>
   <customwidget>
-   <class>Utils::FilterLineEdit</class>
+   <class>Utils::FancyLineEdit</class>
    <extends>QLineEdit</extends>
-   <header location="global">utils/filterlineedit.h</header>
+   <header location="global">utils/fancylineedit.h</header>
   </customwidget>
  </customwidgets>
  <resources/>
diff --git a/src/tools/qtcreatorwidgets/customwidgets.cpp b/src/tools/qtcreatorwidgets/customwidgets.cpp
index 653487f4664..d63e63368ec 100644
--- a/src/tools/qtcreatorwidgets/customwidgets.cpp
+++ b/src/tools/qtcreatorwidgets/customwidgets.cpp
@@ -125,18 +125,6 @@ FancyLineEdit_CW::FancyLineEdit_CW(QObject *parent) :
 {
 }
 
-FilterLineEdit_CW::FilterLineEdit_CW(QObject *parent) :
-   QObject(parent),
-   CustomWidget<Utils::FilterLineEdit>
-       (QLatin1String("<utils/filterlineedit.h>"),
-        false,
-        QLatin1String(groupC),
-        QIcon(),
-        QLatin1String("A Line edit customized for filtering"))
-{
-}
-
-
 QtColorButton_CW::QtColorButton_CW(QObject *parent) :
    QObject(parent),
    CustomWidget<Utils::QtColorButton>
diff --git a/src/tools/qtcreatorwidgets/customwidgets.h b/src/tools/qtcreatorwidgets/customwidgets.h
index b43846162d0..d36f63a788c 100644
--- a/src/tools/qtcreatorwidgets/customwidgets.h
+++ b/src/tools/qtcreatorwidgets/customwidgets.h
@@ -38,7 +38,7 @@
 #include <utils/linecolumnlabel.h>
 #include <utils/pathchooser.h>
 #include <utils/projectnamevalidatinglineedit.h>
-#include <utils/filterlineedit.h>
+#include <utils/fancylineedit.h>
 #include <utils/qtcolorbutton.h>
 #include <utils/submiteditorwidget.h>
 #include <utils/submitfieldwidget.h>
@@ -144,16 +144,6 @@ public:
     virtual QWidget *createWidget(QWidget *parent);
 };
 
-class FilterLineEdit_CW :
-    public QObject,
-    public CustomWidget<Utils::FilterLineEdit>
-{
-    Q_OBJECT
-    Q_INTERFACES(QDesignerCustomWidgetInterface)
-public:
-    explicit FilterLineEdit_CW(QObject *parent = 0);
-};
-
 class QtColorButton_CW :
     public QObject,
     public CustomWidget<Utils::QtColorButton>
-- 
GitLab