static void shift_rows (void * user, gint row, gint before) { gint list = ((PlaylistWidgetData *) user)->list; /* Adjust the shift amount so that the selected entry closest to the * destination ends up at the destination. */ if (before > row) before -= playlist_count_selected_in_range (list, row, before - row); else before += playlist_count_selected_in_range (list, before, row - before); aud_playlist_shift (list, row, before - row); }
void playlist_delete_selected (void) { gint list = aud_playlist_get_active (); gint focus = playlist_get_focus (list); focus -= playlist_count_selected_in_range (list, 0, focus); aud_drct_pl_delete_selected (list); if (aud_playlist_selected_count (list)) /* song changed? */ return; if (focus == aud_playlist_entry_count (list)) focus --; if (focus >= 0) { aud_playlist_entry_set_selected (list, focus, TRUE); playlist_set_focus (list, focus); } }