From 42e50da1266f97adf7826420c66d22f7043687f5 Mon Sep 17 00:00:00 2001 From: div0 Date: Fri, 9 Nov 2007 09:49:15 +0000 Subject: [PATCH] fix selection bugs when enabling/disabling the checkboxes git-svn-id: svn://svn.icculus.org/nexuiz/trunk@2924 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/menu-div0test/nexuiz/serverlist.c | 32 +++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/data/qcsrc/menu-div0test/nexuiz/serverlist.c b/data/qcsrc/menu-div0test/nexuiz/serverlist.c index 5db477857..6df6aab0f 100644 --- a/data/qcsrc/menu-div0test/nexuiz/serverlist.c +++ b/data/qcsrc/menu-div0test/nexuiz/serverlist.c @@ -145,7 +145,7 @@ void focusEnterNexuizServerList(entity me) } void drawNexuizServerList(entity me) { - float i; + float i, found; if(me.currentSortField == -1) { @@ -164,16 +164,32 @@ void drawNexuizServerList(entity me) 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) -- 2.39.2