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.
master
Andrzej Rybczak 17 years ago
parent 5b36fda511
commit f24db993aa
  1. 5
      src/menu.h
  2. 4
      src/status.cpp

@ -157,7 +157,8 @@ namespace NCurses
if (itsOptions.empty())
return;
sort(itsOptions.begin()+beginning, itsOptions.end(), InternalSorting<Comparison>());
ClearFiltered();
if (isFiltered())
ApplyFilter(itsFilter);
}
void SetSelectPrefix(Buffer *b) { itsSelectedPrefix = b; }
@ -533,7 +534,6 @@ template <typename T> void NCurses::Menu<T>::ClearFiltered()
{
itsFilteredOptions.clear();
itsFilteredRealPositions.clear();
itsFilter.clear();
itsOptionsPtr = &itsOptions;
}
@ -543,6 +543,7 @@ template <typename T> void NCurses::Menu<T>::Clear(bool clrscr)
delete *it;
itsOptions.clear();
itsFound.clear();
itsFilter.clear();
ClearFiltered();
itsOptionsPtr = &itsOptions;
if (clrscr)

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

Loading…
Cancel
Save