diff --git a/src/gui/SearchWidget.cpp b/src/gui/SearchWidget.cpp
index 023948d7..4ac01b3f 100644
--- a/src/gui/SearchWidget.cpp
+++ b/src/gui/SearchWidget.cpp
@@ -34,7 +34,9 @@ SearchWidget::SearchWidget(QWidget *parent)
m_searchTimer->setSingleShot(true);
connect(m_ui->searchEdit, SIGNAL(textChanged(QString)), SLOT(startSearchTimer()));
- connect(m_ui->searchIcon, SIGNAL(triggered(QAction*)), m_ui->searchEdit, SLOT(setFocus()));
+ connect(m_ui->searchIcon, SIGNAL(pressed()), m_ui->searchEdit, SLOT(setFocus()));
+ connect(m_ui->clearIcon, SIGNAL(pressed()), m_ui->searchEdit, SLOT(clear()));
+ connect(m_ui->clearIcon, SIGNAL(pressed()), m_ui->searchEdit, SLOT(setFocus()));
connect(m_searchTimer, SIGNAL(timeout()), this, SLOT(startSearch()));
connect(this, SIGNAL(escapePressed()), m_ui->searchEdit, SLOT(clear()));
@@ -50,6 +52,9 @@ SearchWidget::SearchWidget(QWidget *parent)
m_ui->searchIcon->setIcon(filePath()->icon("actions", "system-search"));
m_ui->searchIcon->setMenu(searchMenu);
m_ui->searchIcon->setPopupMode(QToolButton::MenuButtonPopup);
+
+ m_ui->clearIcon->setIcon(filePath()->icon("actions", "edit-clear-locationbar-rtl"));
+ m_ui->clearIcon->setEnabled(false);
}
SearchWidget::~SearchWidget()
@@ -126,6 +131,9 @@ void SearchWidget::startSearch()
m_searchTimer->stop();
}
+ bool hasText = m_ui->searchEdit->text().length() > 0;
+ m_ui->clearIcon->setEnabled(hasText);
+
search(m_ui->searchEdit->text());
}
diff --git a/src/gui/SearchWidget.ui b/src/gui/SearchWidget.ui
index a75642e1..46c2699f 100644
--- a/src/gui/SearchWidget.ui
+++ b/src/gui/SearchWidget.ui
@@ -54,6 +54,22 @@
Find
+ false
+
+
+
+ -
+
+
+ Qt::ClickFocus
+
+
+ Clear
+
+
+ Qt::ToolButtonIconOnly
+
+
true
diff --git a/tests/gui/TestGui.cpp b/tests/gui/TestGui.cpp
index 45c1a271..c23226a2 100644
--- a/tests/gui/TestGui.cpp
+++ b/tests/gui/TestGui.cpp
@@ -401,7 +401,13 @@ void TestGui::testSearch()
QTRY_COMPARE(searchTextEdit->text(), QString("ZZZ"));
QTRY_VERIFY(m_dbWidget->isInSearchMode());
QTRY_COMPARE(entryView->model()->rowCount(), 0);
+ // Press the search clear button
+ QToolButton* clearButton = searchWidget->findChild("clearIcon");
+ QTest::mouseClick(clearButton, Qt::LeftButton);
+ QTRY_VERIFY(searchTextEdit->text().isEmpty());
+ QTRY_VERIFY(searchTextEdit->hasFocus());
// Escape clears searchedit and retains focus
+ QTest::keyClicks(searchTextEdit, "ZZZ");
QTest::keyClick(searchTextEdit, Qt::Key_Escape);
QTRY_VERIFY(searchTextEdit->text().isEmpty());
QTRY_VERIFY(searchTextEdit->hasFocus());