From e876f8125f416abedf09fde1674d36f39865e76d Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Tue, 4 Apr 2017 10:23:12 -0400 Subject: [PATCH] gui/sidebar: Restore expanded rows on startup Fixes #94: Playlist heading not open by default Signed-off-by: Anna Schumaker --- gui/playlist.c | 4 ++++ gui/sidebar.c | 18 ++++++++++++++++++ include/gui/sidebar.h | 3 +++ 3 files changed, 25 insertions(+) diff --git a/gui/playlist.c b/gui/playlist.c index 35a928e3..13985094 100644 --- a/gui/playlist.c +++ b/gui/playlist.c @@ -110,6 +110,10 @@ bool __gui_playlist_init_idle() gtk_tree_model_get_iter_first(filter, &iter); gtk_tree_selection_select_iter(selection, &iter); + do { + gui_sidebar_filter_set_expand(&iter); + } while (gtk_tree_model_iter_next(filter, &iter)); + return true; } diff --git a/gui/sidebar.c b/gui/sidebar.c index f9d8e90e..3dca1391 100644 --- a/gui/sidebar.c +++ b/gui/sidebar.c @@ -325,6 +325,24 @@ void gui_sidebar_filter_path_select(GtkTreePath *path) g_free(name); } +void gui_sidebar_filter_set_expand(GtkTreeIter *iter) +{ + gchar *name = __gui_sidebar_filter_iter_name(iter); + gchar *setting = g_strdup_printf("gui.sidebar.expand.%s", name); + GtkTreePath *path; + + if (settings_get(setting) == true) { + path = gtk_tree_model_get_path( + GTK_TREE_MODEL(gui_sidebar_filter()), iter); + + gtk_tree_view_expand_row(gui_sidebar_treeview(), path, false); + gtk_tree_path_free(path); + } + + g_free(setting); + g_free(name); +} + void gui_sidebar_filter_row_expanded(GtkTreeIter *iter, bool expanded) { gchar *name = __gui_sidebar_filter_iter_name(iter); diff --git a/include/gui/sidebar.h b/include/gui/sidebar.h index de03efae..e7339dae 100644 --- a/include/gui/sidebar.h +++ b/include/gui/sidebar.h @@ -44,6 +44,9 @@ void gui_sidebar_iter_update(GtkTreeIter *); /* Called to set the playlist at the given iterator as the default. */ void gui_sidebar_filter_path_select(GtkTreePath *); +/* Called to expand or collapse sidebar rows from the user's settings. */ +void gui_sidebar_filter_set_expand(GtkTreeIter *); + /* Called when a playlist treeview row is expanded or collapsed. */ void gui_sidebar_filter_row_expanded(GtkTreeIter *, bool);