From cdc771255cfab5385b3dae5740db90727efa16ec Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Fri, 21 Aug 2020 20:49:26 +0200 Subject: dropdown bug fix, added shadows --- src/ui.c | 29 +++++++++++------------------ src/ui.h | 4 ++-- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/src/ui.c b/src/ui.c index 94b8cb8..a56e442 100644 --- a/src/ui.c +++ b/src/ui.c @@ -212,8 +212,8 @@ inline void ui_create(platform_window *window, keyboard_input *keyboard, mouse_i global_ui_context.mouse = mouse; global_ui_context.camera = camera; global_ui_context.font_small = font_small; - global_ui_context.active_menus = array_create(sizeof(s32)); global_ui_context.menu_item_count = 0; + global_ui_context.active_menu_id = -1; global_ui_context.active_dropdown = 0; global_ui_context.confirming_button_id = -1; @@ -222,8 +222,6 @@ inline void ui_create(platform_window *window, keyboard_input *keyboard, mouse_i global_ui_context.item_hovered = false; global_ui_context.item_hovered_id = -1; global_ui_context.item_hovered_duration = 0; - - array_reserve(&global_ui_context.active_menus, 100); } static void ui_pop_scissor() @@ -285,12 +283,7 @@ inline void ui_begin_menu_bar() inline bool ui_is_menu_active(u32 id) { - for (int i = 0; i < global_ui_context.active_menus.length; i++) - { - s32 *iid = array_at(&global_ui_context.active_menus, i); - if (*iid == id) return true; - } - return false; + return id == global_ui_context.active_menu_id; } inline u32 ui_get_id() @@ -540,13 +533,18 @@ bool ui_push_menu(char *title) ui_set_cursor(CURSOR_POINTER); if (is_left_clicked(global_ui_context.mouse)) { + printf("---------------------------------\n"); + printf("id %d, open: %d\n", id, is_open); + if (is_open) - array_remove_by(&global_ui_context.active_menus, &id); + global_ui_context.active_menu_id = -1; else - array_push(&global_ui_context.active_menus, &id); + global_ui_context.active_menu_id = id; result = !is_open; is_open = result; + + printf("id %d, open: %d\n", id, is_open); } bg_color = global_ui_context.style.menu_hover_background; @@ -554,12 +552,12 @@ bool ui_push_menu(char *title) else if (is_left_down(global_ui_context.mouse)) { if (is_open) - array_remove_by(&global_ui_context.active_menus, &id); + global_ui_context.active_menu_id = -1; is_open = false; } if (!global_ui_context.layout.active_window->has_focus && is_open) { - array_remove_by(&global_ui_context.active_menus, &id); + global_ui_context.active_menu_id = -1; is_open = false; } @@ -1308,7 +1306,6 @@ void ui_begin_menu_submenu(submenu_state *state, char *title) { bool result = ui_push_menu_item(title, ""); - u32 id = ui_get_id(); s32 w = state->w; s32 h = MENU_BAR_HEIGHT; s32 x = global_ui_context.layout.prev_offset_x + global_ui_context.camera->x; @@ -1386,7 +1383,6 @@ bool ui_push_menu_item(char *title, char *shortcut) set_render_depth(30); - u32 id = ui_get_id(); s32 x = global_ui_context.layout.prev_offset_x + global_ui_context.camera->x; s32 w = MENU_ITEM_WIDTH; s32 text_h = global_ui_context.font_small->px_h; @@ -1436,8 +1432,6 @@ bool ui_push_menu_item(char *title, char *shortcut) ui_set_cursor(CURSOR_POINTER); bg_color = global_ui_context.style.menu_hover_background; - ui_set_hovered(id, x,y,w,h); - if (is_left_clicked(global_ui_context.mouse)) { if (state) state->open = false; @@ -1830,7 +1824,6 @@ inline void ui_end_menu_bar() inline void ui_destroy() { - array_destroy(&global_ui_context.active_menus); } void ui_scroll_begin(scroll_state *state) diff --git a/src/ui.h b/src/ui.h index c4c6d28..8c6dd93 100644 --- a/src/ui.h +++ b/src/ui.h @@ -151,7 +151,7 @@ typedef struct t_submenu_state typedef struct t_submenus { s32 count; - submenu_state *submenu_stack[5]; + submenu_state *submenu_stack[10]; } submenus; typedef struct t_ui_tooltip @@ -171,7 +171,7 @@ typedef struct t_ui_context mouse_input *mouse; camera *camera; font *font_small; - array active_menus; + s32 active_menu_id; u32 next_id; s32 menu_item_count; dropdown_state *active_dropdown; -- cgit v1.2.3-70-g09d2