diff --git a/gui/playlist.c b/gui/playlist.c index 3f354088..b9b75f8d 100644 --- a/gui/playlist.c +++ b/gui/playlist.c @@ -43,38 +43,6 @@ static void __playlist_set_size(GtkTreeIter *iter, const gchar *name) g_free(text); } -bool __playlist_keypress(GtkTreeView *treeview, GdkEventKey *event, - gpointer data) -{ - GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview); - GtkTreeModel *model = gui_sidebar_model(); - GtkTreeIter iter, child; - gchar *name = NULL; - GtkTreePath *path; - GList *rows; - - if (event->keyval != GDK_KEY_Delete) - return false; - - rows = gtk_tree_selection_get_selected_rows(selection, &model); - path = rows->data; - - if (!gtk_tree_model_get_iter(model, &iter, path)) - return false; - - __playlist_filter_get_iter(&iter, &child); - name = gui_sidebar_iter_name(&child); - if (!name) - goto out; - - if (playlist_delete(gui_sidebar_iter_type(&child), name)) - gtk_tree_store_remove(gui_sidebar_store(), &child); - g_free(name); -out: - g_list_free_full(rows, (GDestroyNotify)gtk_tree_path_free); - return true; -} - void __playlist_row_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) { diff --git a/gui/sidebar.c b/gui/sidebar.c index 934efea4..9a638500 100644 --- a/gui/sidebar.c +++ b/gui/sidebar.c @@ -141,6 +141,25 @@ void __gui_sidebar_selection_changed(GtkTreeSelection *selection, gpointer data) gui_treeview_set_playlist(playlist); } +bool __gui_sidebar_keypress(GtkTreeView *treeview, GdkEventKey *event, + gpointer data) +{ + GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview); + struct playlist *playlist = gui_model_get_playlist(); + GtkTreeModel *model = GTK_TREE_MODEL(gui_sidebar_filter()); + GtkTreeIter iter, child; + + if (!playlist || event->keyval != GDK_KEY_Delete) + return false; + if (!gtk_tree_selection_get_selected(selection, &model, &iter)) + return false; + + __gui_sidebar_filter_iter_convert(&iter, &child); + if (playlist_delete(playlist->pl_type, playlist->pl_name)) + gtk_tree_store_remove(gui_sidebar_store(), &child); + return true; +} + void __gui_sidebar_resized(GtkPaned *pane, GParamSpec *pspec, gpointer data) { settings_set(SIDEBAR_SETTING, gtk_paned_get_position(pane)); diff --git a/share/ocarina/ocarina.ui b/share/ocarina/ocarina.ui index 1cae4a0b..fd805735 100644 --- a/share/ocarina/ocarina.ui +++ b/share/ocarina/ocarina.ui @@ -747,7 +747,7 @@ audio-volume-medium False 1 True - +