r2924 - trunk/data/qcsrc/menu-div0test/nexuiz

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Nov 9 04:49:24 EST 2007


Author: div0
Date: 2007-11-09 04:49:15 -0500 (Fri, 09 Nov 2007)
New Revision: 2924

Modified:
   trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c
Log:
fix selection bugs when enabling/disabling the checkboxes


Modified: trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c	2007-11-09 09:26:34 UTC (rev 2923)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c	2007-11-09 09:49:15 UTC (rev 2924)
@@ -145,7 +145,7 @@
 }
 void drawNexuizServerList(entity me)
 {
-	float i;
+	float i, found;
 
 	if(me.currentSortField == -1)
 	{
@@ -164,16 +164,32 @@
 
 	me.nItems = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
 	me.connectButton.disabled = (me.nItems == 0);
-	for(i = 0; i < me.nItems; ++i)
-		if(gethostcachestring(SLIST_FIELD_CNAME, i) == me.selectedServer)
-		{
-			if(i != me.selectedItem)
+
+	found = 0;
+	if(me.selectedServer)
+	{
+		for(i = 0; i < me.nItems; ++i)
+			if(gethostcachestring(SLIST_FIELD_CNAME, i) == me.selectedServer)
 			{
-				me.lastClickedServer = -1;
-				me.selectedItem = i;
+				if(i != me.selectedItem)
+				{
+					me.lastClickedServer = -1;
+					me.selectedItem = i;
+				}
+				found = 1;
+				break;
 			}
-			break;
+	}
+	if(!found)
+		if(me.nItems > 0)
+		{
+			if(me.selectedItem >= me.nItems)
+				me.selectedItem = me.nItems - 1;
+			if(me.selectedServer)
+				strunzone(me.selectedServer);
+			me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem));
 		}
+
 	drawListBox(me);
 }
 void ServerList_PingSort_Click(entity btn, entity me)




More information about the nexuiz-commits mailing list