diff --git a/gui/filter.c b/gui/filter.c index 9a089cf1..df486d32 100644 --- a/gui/filter.c +++ b/gui/filter.c @@ -134,3 +134,9 @@ GtkTreePath *gui_filter_path_from_index(unsigned int index) gtk_tree_path_free(real); return path; } + +void gui_filter_refilter(struct playlist *playlist) +{ + if (!playlist || playlist == gui_model_get_playlist()) + gtk_tree_model_filter_refilter(gui_filter_get()); +} diff --git a/gui/playlist.c b/gui/playlist.c index 51315dd7..c7e2af37 100644 --- a/gui/playlist.c +++ b/gui/playlist.c @@ -37,6 +37,7 @@ static void __gui_playlist_alloc(struct playlist *playlist) static void __gui_playlist_added(struct playlist *playlist, struct track *track) { gui_model_add(playlist, track); + gui_filter_refilter(playlist); __gui_playlist_update_size(playlist); } diff --git a/include/gui/filter.h b/include/gui/filter.h index f7722085..2f9f38a1 100644 --- a/include/gui/filter.h +++ b/include/gui/filter.h @@ -38,6 +38,9 @@ unsigned int gui_filter_path_get_index(GtkTreePath *); /* Called to convert a playlist iterator index into a path. */ GtkTreePath *gui_filter_path_from_index(unsigned int); +/* Called to refilter a playlist. Pass NULL to refilter the current playlist */ +void gui_filter_refilter(struct playlist *); + /* Called to access the filter search-entry. */ static inline GtkSearchEntry *gui_filter_search(void) {