diff options
| author | Aldrik Ramaekers <aldrik.ramaekers@protonmail.com> | 2020-08-21 20:49:26 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik.ramaekers@protonmail.com> | 2020-08-21 20:49:26 +0200 |
| commit | cdc771255cfab5385b3dae5740db90727efa16ec (patch) | |
| tree | 3340dac1d2ab387f1dee6d25ecb04f7b7e03c6a6 /src | |
| parent | 8b15c2484287fbf4c6a2b3bbdfb00de211d6e7c4 (diff) | |
dropdown bug fix, added shadows
Diffstat (limited to 'src')
| -rw-r--r-- | src/ui.c | 29 | ||||
| -rw-r--r-- | src/ui.h | 4 |
2 files changed, 13 insertions, 20 deletions
@@ -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)
@@ -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;
|
