Add "press enter to search" option (#12263)

* Also increase auto-search timeout to 500 ms to improve user experience, especially with large databases. The previous value of 100ms guaranteed a search was performed after every character entered, even when typing relatively fast. 

---------

Co-authored-by: Jonathan White <support@dmapps.us>
This commit is contained in:
Jessy LANGE
2025-07-06 20:16:25 +02:00
committed by GitHub
parent 76b2f377df
commit 7ec0f1f5a8
5 changed files with 79 additions and 14 deletions

View File

@@ -1126,6 +1126,7 @@ void TestGui::testSearch()
auto* searchWidget = toolBar->findChild<SearchWidget*>("SearchWidget");
QVERIFY(searchWidget->isEnabled());
auto* searchTextEdit = searchWidget->findChild<QLineEdit*>("searchEdit");
auto* waitForEnterAction = searchWidget->findChild<QAction*>("actionSearchWaitForEnter");
auto* entryView = m_dbWidget->findChild<EntryView*>("entryView");
QVERIFY(entryView->isVisible());
@@ -1137,6 +1138,50 @@ void TestGui::testSearch()
QVERIFY(helpButton->isVisible());
QVERIFY(!helpPanel->isVisible());
// Test "wait for enter" toggle
QVERIFY(waitForEnterAction->isVisible());
QVERIFY(waitForEnterAction->isCheckable());
// Test search with "wait for enter" disabled (default)
searchTextEdit->clear();
QTest::keyClicks(searchTextEdit, "ZZZ");
QTRY_COMPARE(searchTextEdit->text(), QString("ZZZ"));
QTRY_VERIFY(m_dbWidget->isSearchActive());
QTRY_COMPARE(entryView->model()->rowCount(), 0);
// Clear search
searchTextEdit->clear();
QTRY_VERIFY(!m_dbWidget->isSearchActive());
// Enable "wait for enter" mode
waitForEnterAction->trigger();
QVERIFY(waitForEnterAction->isChecked());
// Test search with "wait for enter" enabled
QTest::keyClicks(searchTextEdit, "ZZZ");
QTRY_VERIFY(!m_dbWidget->isSearchActive());
// Press Enter to execute search
QTest::keyClick(searchTextEdit, Qt::Key_Return);
QTRY_VERIFY(m_dbWidget->isSearchActive());
QTRY_COMPARE(entryView->model()->rowCount(), 0);
// Check that search remains active even after clearing
searchTextEdit->clear();
QTRY_VERIFY(m_dbWidget->isSearchActive());
// Disable "wait for enter" mode
waitForEnterAction->trigger();
QVERIFY(!waitForEnterAction->isChecked());
// Test search with "wait for enter" disabled again
QTest::keyClicks(searchTextEdit, "ZZZ");
QTRY_VERIFY(m_dbWidget->isSearchActive());
QTRY_COMPARE(entryView->model()->rowCount(), 0);
// Clear search
searchTextEdit->clear();
QTRY_VERIFY(!m_dbWidget->isSearchActive());
// Enter search
QTest::mouseClick(searchTextEdit, Qt::LeftButton);
QTRY_VERIFY(searchTextEdit->hasFocus());