diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-07-20 22:19:40 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-07-20 22:19:40 +0000 |
| commit | 52c8d980a2b65535df9853d9fcf08cc5e02b0448 (patch) | |
| tree | ba88244a6e0bf80ef2d49730bc0df1e40b97da9d /src | |
| parent | 9c56ddd5fae42f49c8a73e5c0b5d9c7d81a43066 (diff) | |
| download | zcatch-52c8d980a2b65535df9853d9fcf08cc5e02b0448.tar.gz zcatch-52c8d980a2b65535df9853d9fcf08cc5e02b0448.zip | |
fixed bugs in the ui code
Diffstat (limited to 'src')
| -rw-r--r-- | src/engine/client/ui.cpp | 32 | ||||
| -rw-r--r-- | src/game/client/menu.cpp | 55 |
2 files changed, 37 insertions, 50 deletions
diff --git a/src/engine/client/ui.cpp b/src/engine/client/ui.cpp index a28f44dc..8c8dba2c 100644 --- a/src/engine/client/ui.cpp +++ b/src/engine/client/ui.cpp @@ -44,6 +44,8 @@ int ui_update(float mx, float my, float mwx, float mwy, int buttons) mouse_wy = mwy; mouse_buttons = buttons; hot_item = becomming_hot_item; + if(active_item) + hot_item = active_item; becomming_hot_item = 0; return 0; } @@ -89,29 +91,25 @@ int ui_do_button(void *id, const char *text, int checked, float x, float y, floa int r = 0; int inside = ui_mouse_inside(x,y,w,h); - if(inside) + if(ui_active_item() == id) { - ui_set_hot_item(id); - - if(ui_mouse_button(0)) - ui_set_active_item(id); + if(!ui_mouse_button(0)) + { + if(inside) + r = 1; + ui_set_active_item(0); + } } - - // this gets rid of an annoying bug :< (but it creates another annoying bug :O) - if (!inside && ui_active_item() == id && !ui_mouse_button(0)) - ui_set_active_item(0); - - if(ui_active_item() == id && ui_hot_item() == id && !ui_mouse_button(0)) + else if(ui_hot_item() == id) { - ui_set_active_item(0); - r = 1; + if(ui_mouse_button(0)) + ui_set_active_item(id); } - - if (!inside && ui_hot_item() == id) - ui_set_hot_item(0); + + if(inside) + ui_set_hot_item(id); draw_func(id, text, checked, x, y, w, h, extra); - return r; } diff --git a/src/game/client/menu.cpp b/src/game/client/menu.cpp index eabe5352..1a6243c9 100644 --- a/src/game/client/menu.cpp +++ b/src/game/client/menu.cpp @@ -206,7 +206,7 @@ void draw_teewars_button(void *id, const char *text, int checked, float x, float float text_width = gfx_pretty_text_width(46.f, text); gui_tileset_enum tileset; - if (ui_active_item() == id && ui_hot_item() == id) + if (ui_active_item() == id) tileset = tileset_active; else if (ui_hot_item() == id) tileset = tileset_hot; @@ -246,37 +246,26 @@ int ui_do_key_reader(void *id, float x, float y, float w, float h, int key) static bool can_be_selected = true; int inside = ui_mouse_inside(x, y, w, h); int new_key = key; - - if (!ui_mouse_button(0) && !can_be_selected) - can_be_selected = true; - if (can_be_selected) + if(ui_active_item() == id) { - if (inside) + int k = input::last_key(); + if (k) { - ui_set_hot_item(id); - - if (ui_mouse_button(0) && ui_active_item() != id) - { - ui_set_active_item(id); - can_be_selected = false; - } + new_key = k; + ui_set_active_item(0); + can_be_selected = false; } } - - if (can_be_selected) + else if(ui_hot_item() == id) { - if (ui_active_item() == id) - { - int k = input::last_key(); - if (k) - { - new_key = k; - ui_set_active_item(0); - can_be_selected = false; - } - } + if(ui_mouse_button(0)) + ui_set_active_item(id); } + + if(inside) + ui_set_hot_item(id); + // draw draw_box(GUI_BOX_SCREEN_INFO, tileset_regular, x, y, w, h); @@ -340,14 +329,6 @@ int ui_do_edit_box(void *id, float x, float y, float w, float h, char *str, int int inside = ui_mouse_inside(x, y, w, h); int r = 0; - if(inside) - { - ui_set_hot_item(id); - - if(ui_mouse_button(0)) - ui_set_active_item(id); - } - if (ui_active_item() == id) { int c = input::last_char(); @@ -370,6 +351,14 @@ int ui_do_edit_box(void *id, float x, float y, float w, float h, char *str, int } r = 1; } + else if(ui_hot_item() == id) + { + if(ui_mouse_button(0)) + ui_set_active_item(id); + } + + if(inside) + ui_set_hot_item(id); draw_box(GUI_BOX_SCREEN_TEXTBOX, tileset_regular, x, y, w, h); |