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); }