]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Enable dragging of tracks in playlist
authorterencehill <piuntn@gmail.com>
Wed, 16 May 2012 23:09:14 +0000 (01:09 +0200)
committerterencehill <piuntn@gmail.com>
Wed, 16 May 2012 23:09:14 +0000 (01:09 +0200)
qcsrc/menu/xonotic/playlist.c

index c9d1824d2a5618b57a7a309b35b99d82dfb89d4a..b7edaa38963f0371fb312a39568d40549c8fdea7 100644 (file)
@@ -10,6 +10,7 @@ CLASS(XonoticPlayList) EXTENDS(XonoticListBox)
        METHOD(XonoticPlayList, pauseSound, void(entity))
        METHOD(XonoticPlayList, clickListBoxItem, void(entity, float, vector))
        METHOD(XonoticPlayList, keyDown, float(entity, float, float, float))
+       METHOD(XonoticPlayList, mouseDrag, float(entity, vector))
 
        METHOD(XonoticPlayList, addToPlayList, void(entity, string))
        METHOD(XonoticPlayList, removeFromPlayList, void(entity, string))
@@ -82,6 +83,28 @@ void XonoticPlayList_removeFromPlayList(entity me, string track)
                cvar_set("music_playlist_current0", ftos(cvar("music_playlist_current0") - 1));
 }
 
+float XonoticPlayList_mouseDrag(entity me, vector pos)
+{
+       float f, i;
+       i = me.selectedItem;
+       f = SUPER(XonoticPlayList).mouseDrag(me, pos);
+
+       if(me.pressed != 1) // don't change priority if the person is just scrolling
+       {
+               if(me.selectedItem != i)
+               {
+                       cvar_set("music_playlist_list0", swapInPriorityList(cvar_string("music_playlist_list0"), me.selectedItem, i));
+                       float c = cvar("music_playlist_current0");
+                       if(c == i)
+                               cvar_set("music_playlist_current0", ftos(me.selectedItem));
+                       else if(c == me.selectedItem)
+                               cvar_set("music_playlist_current0", ftos(i));
+               }
+       }
+
+       return f;
+}
+
 void XonoticPlayList_draw(entity me)
 {
        me.nItems = tokenize_console(cvar_string("music_playlist_list0"));