Index: apps/playlist_viewer.c =================================================================== --- apps/playlist_viewer.c (revision 18007) +++ apps/playlist_viewer.c (working copy) @@ -99,6 +99,7 @@ int current_playing_track; /* Index of current playing track */ int selected_track; /* The selected track, relative (first is 0)*/ int move_track; /* Playlist index of track to move or -1 */ + int move_track_displayed; /* Displayed Playlist index of track to move*/ struct playlist_buffer buffer; }; @@ -483,6 +484,7 @@ case 1: /* move track */ viewer.move_track = current_track->index; + viewer.move_track_displayed = index; ret = 0; break; case 2: /* add to catalog */ @@ -532,17 +534,17 @@ { if( local_viewer->selected_track == selected_item ) { - return local_viewer->move_track; + return local_viewer->move_track_displayed; } else if( local_viewer->selected_track > selected_item - && selected_item >= local_viewer->move_track ) + && selected_item >= local_viewer->move_track_displayed ) { - return selected_item+1; + return selected_item+1; /* move down */ } else if( local_viewer->selected_track < selected_item - && selected_item <= local_viewer->move_track ) + && selected_item <= local_viewer->move_track_displayed ) { - return selected_item-1; + return selected_item-1; /* move up */ } } return selected_item; @@ -658,8 +660,8 @@ { if (viewer.move_track >= 0) { - viewer.selected_track = viewer.move_track; - gui_synclist_select_item(&playlist_lists, viewer.move_track); + viewer.selected_track = viewer.move_track_displayed; + gui_synclist_select_item(&playlist_lists, viewer.move_track_displayed); viewer.move_track = -1; gui_synclist_draw(&playlist_lists); }