about summary refs log tree commit diff
path: root/src/game/client/gc_ui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/client/gc_ui.cpp')
-rw-r--r--src/game/client/gc_ui.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/game/client/gc_ui.cpp b/src/game/client/gc_ui.cpp
index 8d47c971..25693d02 100644
--- a/src/game/client/gc_ui.cpp
+++ b/src/game/client/gc_ui.cpp
@@ -27,6 +27,7 @@ void ui_set_hot_item(const void *id) { becomming_hot_item = id; }
 void ui_set_active_item(const void *id) { active_item = id; if (id) last_active_item = id; }
 void ui_clear_last_active_item() { last_active_item = 0; }
 const void *ui_hot_item() { return hot_item; }
+const void *ui_next_hot_item() { return becomming_hot_item; }
 const void *ui_active_item() { return active_item; }
 const void *ui_last_active_item() { return last_active_item; }
 
@@ -234,25 +235,36 @@ void ui_hmargin(const RECT *original, float cut, RECT *other_rect)
     other_rect->h = r.h - 2*cut;
 }
 
+
 int ui_do_button(const void *id, const char *text, int checked, const RECT *r, ui_draw_button_func draw_func, const void *extra)
 {
     /* logic */
     int ret = 0;
     int inside = ui_mouse_inside(r);
+	static int button_used = 0;
 
 	if(ui_active_item() == id)
 	{
-		if(!ui_mouse_button(0))
+		if(!ui_mouse_button(button_used))
 		{
 			if(inside && checked >= 0)
-				ret = 1;
+				ret = 1+button_used;
 			ui_set_active_item(0);
 		}
 	}
 	else if(ui_hot_item() == id)
 	{
 		if(ui_mouse_button(0))
+		{
+			ui_set_active_item(id);
+			button_used = 0;
+		}
+		
+		if(ui_mouse_button(1))
+		{
 			ui_set_active_item(id);
+			button_used = 1;
+		}
 	}
 	
 	if(inside)