From b6f754c29a7cf3a2365fea4487395a9f9741055c Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Sat, 14 Jan 2017 22:29:16 -0500 Subject: [PATCH] Changed built-in clear search button with custom one to fix pixelation --- src/gui/SearchWidget.cpp | 10 +++++++++- src/gui/SearchWidget.ui | 16 ++++++++++++++++ tests/gui/TestGui.cpp | 6 ++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/gui/SearchWidget.cpp b/src/gui/SearchWidget.cpp index 023948d72..4ac01b3fc 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 a75642e13..46c2699f0 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 45c1a271d..c23226a28 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());