From 6be91a8216fae1026191b7e023288425657014e9 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sun, 8 Mar 2009 17:45:28 +0100 Subject: [PATCH] improve searching a bit / fix going to previous found position --- src/menu.h | 7 ++----- src/ncmpcpp.cpp | 12 +++++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/menu.h b/src/menu.h index 5527f247..2c73a786 100644 --- a/src/menu.h +++ b/src/menu.h @@ -599,6 +599,7 @@ template size_t NCurses::Menu::RealChoice() const template bool NCurses::Menu::Search(const std::string &constraint, size_t beginning, bool case_sensitive) { itsFound.clear(); + itsSearchConstraint.clear(); if (constraint.empty()) return false; itsSearchConstraint = constraint; @@ -631,11 +632,7 @@ template void NCurses::Menu::PrevFound(bool wrap) return; std::set::iterator prev = itsFound.lower_bound(itsHighlight); if (prev != itsFound.begin()) - { - if (*prev == size_t(itsHighlight)) - prev--; - Highlight(*prev); - } + Highlight(*--prev); else if (wrap) Highlight(*itsFound.rbegin()); } diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 68815df6..8cb34856 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -1489,14 +1489,16 @@ int main(int argc, char *argv[]) string findme = wFooter->GetString(mList->GetSearchConstraint()); UnlockStatusbar(); time(&Timer); + + if (!findme.empty()) + ShowMessage("Searching..."); + + bool success = mList->Search(findme, myScreen == mySearcher ? SearchEngine::StaticOptions : 0); + if (findme.empty()) continue; - ShowMessage("Searching..."); - if (mList->Search(findme, myScreen == mySearcher ? SearchEngine::StaticOptions : 0)) - ShowMessage("Searching finished!"); - else - ShowMessage("Unable to find \"%s\"", findme.c_str()); + success ? ShowMessage("Searching finished!") : ShowMessage("Unable to find \"%s\"", findme.c_str()); if (Keypressed(input, Key.FindForward)) mList->NextFound(Config.wrapped_search);