diff options
| author | iamcheeseman <[email protected]> | 2026-05-22 19:23:02 -0400 |
|---|---|---|
| committer | iamcheeseman <[email protected]> | 2026-05-22 19:23:02 -0400 |
| commit | a2faeeb893dd64cbf59726c25df3ede0be412793 (patch) | |
| tree | 66223aa5956939d59252ff9eae798d1841338c1e /teensy | |
| parent | 77d193cdd127714ce4eab73d7a11a155655b7678 (diff) | |
make a down/pressed distinction in tyui
Diffstat (limited to 'teensy')
| -rw-r--r-- | teensy/teensy_ui.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/teensy/teensy_ui.c b/teensy/teensy_ui.c index 13993f0..8ee35fb 100644 --- a/teensy/teensy_ui.c +++ b/teensy/teensy_ui.c @@ -53,8 +53,10 @@ typedef struct { ty_Recti rect; uint32_t flags; bool focused; - bool has_lmb; - bool has_rmb; + bool lmb_down; + bool rmb_down; + bool lmb_pressed; + bool rmb_pressed; } Window; typedef struct { @@ -347,7 +349,7 @@ bool tyui_begin_window_ex(tyui_Window_Conf conf, bool *closed_ptr) ty_pointi_in_recti(mouse_pos, resize_rect) || ty_pointi_in_recti(ty_mouse_pos(), resize_rect); - if (win->has_lmb && hovering_resizer) { + if (win->lmb_down && hovering_resizer) { win->rect.w += md.x; win->rect.h += md.y; @@ -362,7 +364,7 @@ bool tyui_begin_window_ex(tyui_Window_Conf conf, bool *closed_ptr) // Grabbing title bar? { if ( - win->has_lmb && + win->lmb_down && (ty_pointi_in_recti(mouse_pos, title_rect) || ty_pointi_in_recti(ty_mouse_pos(), title_rect)) ) { @@ -437,8 +439,8 @@ bool tyui_button(const char *text) bool clicked = false; if (is_hovered(rect)) { - clicked = window()->has_lmb; - bg_col = ty_button_down(TY_BTN_DB_LMB) + clicked = window()->lmb_pressed; + bg_col = window()->lmb_down ? uictx.style.bg_pressed : uictx.style.bg_hover; } @@ -466,8 +468,8 @@ void tyui_slider_ex( bool clicked = false; if (is_hovered(rect)) { - clicked = window()->has_lmb; - if (ty_button_down(TY_BTN_DB_LMB)) { + clicked = window()->lmb_down; + if (window()->lmb_down) { bg_col = uictx.style.bg_pressed; fg_col = uictx.style.fg_pressed; } else { @@ -570,8 +572,10 @@ void update_windows(void) { for (int i = 0; i < uictx.window_count; i++) { Window *win = &uictx.windows[i]; - win->has_lmb = false; - win->has_rmb = false; + win->lmb_down = false; + win->rmb_down = false; + win->lmb_pressed = false; + win->rmb_pressed = false; win->focused = false; } @@ -581,10 +585,12 @@ void update_windows(void) if (!is_hovered(win->rect)) continue; - win->has_lmb = ty_button_down(TY_BTN_DB_LMB); - win->has_rmb = ty_button_down(TY_BTN_DB_RMB); + win->lmb_down = ty_button_down(TY_BTN_DB_LMB); + win->rmb_down = ty_button_down(TY_BTN_DB_RMB); + win->lmb_pressed = ty_button_pressed(TY_BTN_DB_LMB); + win->rmb_pressed = ty_button_pressed(TY_BTN_DB_RMB); - if (win->has_lmb || win->has_rmb) + if (win->lmb_down || win->rmb_down) focus_window(win_id); break; |
