From f24db993aa5023aadb6aa90e7f2cbc70dd475e19 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Tue, 24 Mar 2009 19:26:47 +0100 Subject: [PATCH] fix reapplying filter the same as the last one used I was passing Menu::itsFilter by const reference to Menu::ApplyFilter(). however, the function was clearing all filtering related stuff, including itsFilter itself, so passed reference was pointing at previously cleared string. then the function checked if new filter was empty and it obviously was, so exited then. funny bug. --- src/menu.h | 5 +++-- src/status.cpp | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/menu.h b/src/menu.h index 1996513d..4536ba33 100644 --- a/src/menu.h +++ b/src/menu.h @@ -157,7 +157,8 @@ namespace NCurses if (itsOptions.empty()) return; sort(itsOptions.begin()+beginning, itsOptions.end(), InternalSorting()); - ClearFiltered(); + if (isFiltered()) + ApplyFilter(itsFilter); } void SetSelectPrefix(Buffer *b) { itsSelectedPrefix = b; } @@ -533,7 +534,6 @@ template void NCurses::Menu::ClearFiltered() { itsFilteredOptions.clear(); itsFilteredRealPositions.clear(); - itsFilter.clear(); itsOptionsPtr = &itsOptions; } @@ -543,6 +543,7 @@ template void NCurses::Menu::Clear(bool clrscr) delete *it; itsOptions.clear(); itsFound.clear(); + itsFilter.clear(); ClearFiltered(); itsOptionsPtr = &itsOptions; if (clrscr) diff --git a/src/status.cpp b/src/status.cpp index 7bf2b24b..62cde76f 100644 --- a/src/status.cpp +++ b/src/status.cpp @@ -240,7 +240,11 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *) myPlaylist->Main()->Refresh(); } if (was_filtered) + { myPlaylist->ApplyFilter(myPlaylist->Main()->GetFilter()); + if (myPlaylist->Main()->Empty()) + myPlaylist->Main()->ShowAll(); + } FreeSongList(list); }