diff --git a/gui/playlist.c b/gui/playlist.c index ab66c672..af24df7e 100644 --- a/gui/playlist.c +++ b/gui/playlist.c @@ -131,25 +131,6 @@ void __playlist_row_activated(GtkTreeView *treeview, GtkTreePath *path, g_free(name); } -static gboolean __playlist_visible_func(GtkTreeModel *model, GtkTreeIter *iter, - gpointer data) -{ - gchar *name; - bool show; - - if (!p_filter_enable) - return true; - if (gui_sidebar_iter_type(iter) == PL_MAX_TYPE) - return true; - - name = gui_sidebar_iter_name(iter); - show = gui_sidebar_iter_type(iter) == PL_USER || - !playlist_get_queue(gui_sidebar_iter_type(iter), name) || - (playlist_size(gui_sidebar_iter_type(iter), name) > 0); - g_free(name); - return show; -} - static bool __playlist_queue_set_size(struct queue *queue, GtkTreeIter *iter) { struct gui_queue *gq = gui_queue(queue); @@ -286,16 +267,11 @@ bool __gui_playlist_init_idle() void gui_playlist_init() { - GtkTreeModelFilter *filter; GtkTreeView *treeview; GtkTreeIter parent; - filter = gui_sidebar_filter(); treeview = gui_sidebar_treeview(); - gtk_tree_model_filter_set_visible_func(filter, __playlist_visible_func, - NULL, NULL); - gui_sidebar_iter_first(&parent); gui_sidebar_iter_add(&parent, playlist_get(PL_SYSTEM, "Queued Tracks"), "audio-x-generic"); diff --git a/gui/sidebar.c b/gui/sidebar.c index 1b95951b..d66e1023 100644 --- a/gui/sidebar.c +++ b/gui/sidebar.c @@ -74,6 +74,25 @@ static int __gui_sidebar_compare(GtkTreeIter *iter, const gchar *name, return ret; } +static gboolean __gui_sidebar_visible_func(GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) +{ + enum playlist_type_t type = gui_sidebar_iter_type(iter); + gboolean ret = TRUE; + gchar *name; + + if (type == PL_SYSTEM || type == PL_ARTIST) { + name = gui_sidebar_iter_name(iter); + if (name) { + ret = playlist_size(type, name) > 0; + g_free(name); + } + } + + return ret;; +} + void __gui_sidebar_resized(GtkPaned *pane, GParamSpec *pspec, gpointer data) { settings_set(SIDEBAR_SETTING, gtk_paned_get_position(pane)); @@ -84,10 +103,15 @@ void gui_sidebar_init() int pos = settings_get(SIDEBAR_SETTING); GtkTreeIter iter; - gui_sidebar_iter_first(&iter); - __gui_sidebar_add_header(&iter, "Playlists", "emblem-documents"); - __gui_sidebar_add_header(&iter, "Dynamic", "emblem-generic"); - __gui_sidebar_add_header(&iter, "Library", "emblem-system"); + if (!gui_sidebar_iter_first(&iter)) { + __gui_sidebar_add_header(&iter, "Playlists", "emblem-documents"); + __gui_sidebar_add_header(&iter, "Dynamic", "emblem-generic"); + __gui_sidebar_add_header(&iter, "Library", "emblem-system"); + + gtk_tree_model_filter_set_visible_func(gui_sidebar_filter(), + __gui_sidebar_visible_func, + NULL, NULL); + } if (pos > 0) gtk_paned_set_position(gui_sidebar(), pos);