about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-18 21:13:09 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-18 21:13:09 +0000
commit5abbc0bce7ce376f6a63629aaaf2ee2515d20652 (patch)
tree8e8d920adaec8713b250db5e4b94ea874783b84f /src
parent0c078f11b7a798df8faf5fcb6a8ab33379186329 (diff)
downloadzcatch-5abbc0bce7ce376f6a63629aaaf2ee2515d20652.tar.gz
zcatch-5abbc0bce7ce376f6a63629aaaf2ee2515d20652.zip
fixed bugs with the server browser
Diffstat (limited to 'src')
-rw-r--r--src/game/client/gc_menu.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/game/client/gc_menu.cpp b/src/game/client/gc_menu.cpp
index e6c9f833..d34d1a2a 100644
--- a/src/game/client/gc_menu.cpp
+++ b/src/game/client/gc_menu.cpp
@@ -1019,7 +1019,8 @@ static void menu2_render_serverbrowser(RECT main_view)
 	int start = (int)(scrollnum*scrollvalue);
 	if(start < 0)
 		start = 0;
-	//float extra = (scrollvalue - start/(float)(num_servers-num)) / (1.0f/scrollnum);
+	
+	RECT original_view = view;
 	view.y -= scrollvalue*scrollnum*cols[0].rect.h;
 	
 	//int r = -1;
@@ -1077,14 +1078,22 @@ static void menu2_render_serverbrowser(RECT main_view)
 		else
 			ui2_hsplit_t(&view, 20.0f, &row, &view);
 
-		if(ui2_do_button(item, "", l, &row, 0, 0))
+		// make sure that only those in view can be selected
+		if(row.y > original_view.y)
 		{
-			new_selected = item_index;
-			dbg_msg("dbg", "addr = %s", item->address);
-			strncpy(config.ui_server_address, item->address, sizeof(config.ui_server_address));
-			if(inp_mouse_doubleclick())
-				client_connect(config.ui_server_address);
+			if(ui2_do_button(item, "", l, &row, 0, 0))
+			{
+				new_selected = item_index;
+				dbg_msg("dbg", "addr = %s", item->address);
+				strncpy(config.ui_server_address, item->address, sizeof(config.ui_server_address));
+				if(inp_mouse_doubleclick())
+					client_connect(config.ui_server_address);
+			}
 		}
+		
+		// check if we need to do more
+		if(row.y > original_view.y+original_view.h)
+			break;
 
 		for(int c = 0; c < num_cols; c++)
 		{