From: terencehill <piuntn@gmail.com>
Date: Wed, 16 May 2012 23:09:14 +0000 (+0200)
Subject: Enable dragging of tracks in playlist
X-Git-Tag: xonotic-v0.8.1~157^2~24
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=cffcdba55228847600b40fd955aa7bd9b37cfdab;p=xonotic%2Fxonotic-data.pk3dir.git

Enable dragging of tracks in playlist
---

diff --git a/qcsrc/menu/xonotic/playlist.c b/qcsrc/menu/xonotic/playlist.c
index c9d1824d2a..b7edaa3896 100644
--- a/qcsrc/menu/xonotic/playlist.c
+++ b/qcsrc/menu/xonotic/playlist.c
@@ -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"));