From ceb2cd2b674a14df7b0e2de4fc48ee686b1cef9a Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Mon, 24 Oct 2022 23:19:31 -0400 Subject: [PATCH] Prevent expired entries search if no results returned * Fixes #8626 * Also remove old feature to set the title of a new entry to the current search text. This only made sense before advanced searching was made available. --- src/gui/DatabaseWidget.cpp | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 751aa884..76191fd2 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -391,10 +391,6 @@ void DatabaseWidget::createEntry() m_newEntry.reset(new Entry()); - if (isSearchActive()) { - m_newEntry->setTitle(getCurrentSearch()); - endSearch(); - } m_newEntry->setUuid(QUuid::createUuid()); m_newEntry->setUsername(m_db->metadata()->defaultUserName()); m_newParent = m_groupView->currentGroup(); @@ -1414,25 +1410,33 @@ void DatabaseWidget::search(const QString& searchtext) return; } - emit searchModeAboutToActivate(); + auto searchGroup = m_db->rootGroup(); + if (m_searchLimitGroup && m_nextSearchLabelText.isEmpty()) { + searchGroup = currentGroup(); + } - Group* searchGroup = m_searchLimitGroup ? currentGroup() : m_db->rootGroup(); - - QList searchResult = m_entrySearcher->search(searchtext, searchGroup); - - m_entryView->displaySearch(searchResult); - m_lastSearchText = searchtext; + auto results = m_entrySearcher->search(searchtext, searchGroup); // Display a label detailing our search results if (!m_nextSearchLabelText.isEmpty()) { + // Custom searches don't display if there are no results + if (results.isEmpty()) { + endSearch(); + return; + } m_searchingLabel->setText(m_nextSearchLabelText); m_nextSearchLabelText.clear(); - } else if (!searchResult.isEmpty()) { - m_searchingLabel->setText(tr("Search Results (%1)").arg(searchResult.size())); + } else if (!results.isEmpty()) { + m_searchingLabel->setText(tr("Search Results (%1)").arg(results.size())); } else { m_searchingLabel->setText(tr("No Results")); } + emit searchModeAboutToActivate(); + + m_entryView->displaySearch(results); + m_lastSearchText = searchtext; + m_searchingLabel->setVisible(true); #ifdef WITH_XC_KEESHARE m_shareLabel->setVisible(false);