From d9b141ccfc04ffa52f6f8d2c22eaf09bb82fdb90 Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Mon, 23 Nov 2009 09:34:18 +0000 Subject: [PATCH] Fix playlist deletion and some update logic Organization: Straylight/Edgeware From: Richard Kettlewell --- disobedience/playlists.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/disobedience/playlists.c b/disobedience/playlists.c index fea6d31..4aacfb9 100644 --- a/disobedience/playlists.c +++ b/disobedience/playlists.c @@ -481,7 +481,8 @@ static void playlists_selection_changed(GtkTreeSelection attribute((unused)) *tr g_free(gselected); } else selected = 0; - if(playlists_selected) + /* Set button sensitivity according to the new state */ + if(selected) gtk_widget_set_sensitive(playlists_delete_button, 1); else gtk_widget_set_sensitive(playlists_delete_button, 0); @@ -490,7 +491,8 @@ static void playlists_selection_changed(GtkTreeSelection attribute((unused)) *tr return; if(selected && playlists_selected && !strcmp(selected, playlists_selected)) return; - /* There's been a change */ + /* Record the new state */ + playlists_selected = selected; } /** @brief Called when the 'add' button is pressed */ @@ -501,6 +503,13 @@ static void playlists_add(GtkButton attribute((unused)) *button, playlist_new(); } +/** @brief Called when playlist deletion completes */ +static void playlists_delete_completed(void attribute((unused)) *v, + const char *err) { + if(err) + popup_protocol_error(0, err); +} + /** @brief Called when the 'Delete' button is pressed */ static void playlists_delete(GtkButton attribute((unused)) *button, gpointer attribute((unused)) userdata) { @@ -521,7 +530,7 @@ static void playlists_delete(GtkButton attribute((unused)) *button, gtk_widget_destroy(yesno); if(res == GTK_RESPONSE_YES) { disorder_eclient_playlist_delete(client, - NULL/*playlists_delete_completed*/, + playlists_delete_completed, playlists_selected, NULL); } @@ -667,6 +676,8 @@ void playlists_init(void) { event_register("playlists-updated", menu_playlists_changed, 0); /* Update the new-playlist OK button when the set of playlists changes */ event_register("playlists-updated", playlist_new_changed, 0); + /* Update the list of playlists in the edit window when the set changes */ + event_register("playlists-updated", playlists_fill, 0); playlists_update(0, 0, 0); } -- [mdw]