diff --git a/src/screen_queue.c b/src/screen_queue.c
index 67df4b53655b7f3603cf174ae48c1a88c724b266..31c4dcc8a93ad0801cf84e01c8dc9afd7022702e 100644 (file)
--- a/src/screen_queue.c
+++ b/src/screen_queue.c
/* send save command to mpd */
connection = mpdclient_get_connection(c);
- if (connection == NULL)
+ if (connection == NULL) {
+ g_free(filename);
return -1;
+ }
filename_utf8 = locale_to_utf8(filename);
if (!mpd_run_save(connection, filename_utf8)) {
screen_queue_restore_selection();
else
/* the queue size may have changed, even if we havn't
- revceived the QUEUE idle event yet */
+ received the QUEUE idle event yet */
list_window_set_length(lw, playlist_length(playlist));
if (((c->events & MPD_IDLE_PLAYER) != 0 &&
lw->selected--;
lw->range_base--;
+ if (lw->range_selection)
+ list_window_scroll_to(lw, lw->range_base);
+ list_window_scroll_to(lw, lw->selected);
+
screen_queue_save_selection();
return true;
lw->selected++;
lw->range_base++;
+ if (lw->range_selection)
+ list_window_scroll_to(lw, lw->range_base);
+ list_window_scroll_to(lw, lw->selected);
+
screen_queue_save_selection();
return true;