From d242f5c395384cf34bf04dd365eed1b3d73b0171 Mon Sep 17 00:00:00 2001 From: Alec Murphy Date: Wed, 9 Apr 2025 09:07:50 -0400 Subject: [PATCH] Media/Themes/Umami/Theme: Separate focus/hover logic from repaint We shouldn't be doing this in the Theme routines to begin with, but that's another issue altogether. --- Media/Themes/Umami/Theme.HC | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/Media/Themes/Umami/Theme.HC b/Media/Themes/Umami/Theme.HC index f650e69..f86a828 100644 --- a/Media/Themes/Umami/Theme.HC +++ b/Media/Themes/Umami/Theme.HC @@ -1245,16 +1245,22 @@ U0 @umami_vert_scrollbar_repaint(Window* win, I64 event, widget->change = TRUE; } -U0 @umami_widgets_repaint(Window* win, I64 event, I64 origin_x, I64 origin_y) +U0 @umami_set_focused_and_hovered_widget(Window* win, I64 event) { + I64 title_bar_height = 0; + if (@gui_window_flag_is_set(win, WIN_FLAGS_TITLE_BAR)) { + title_bar_height = 17; + } + I64 x, y; + + I64 origin_x = 4; + I64 origin_y = 4; + if (title_bar_height) + origin_y = 7 + title_bar_height; + @window_widgets_list* widgets_list; Widget* widget; - Context2D* ctx; - Bool widget_is_hovered; - I64 x, y; - F64 ttf_point_to_size; - no_warn ctx; - no_warn ttf_point_to_size; + Bool widget_is_hovered = FALSE; if (event == CPZ_MSG_WIN_LEFT_BTN_DOWN) win->focused_widget = NULL; @@ -1320,6 +1326,18 @@ U0 @umami_widgets_repaint(Window* win, I64 event, I64 origin_x, I64 origin_y) } win->mouse_down_widget = NULL; } +} + +U0 @umami_widgets_repaint(Window* win, I64 event, I64 origin_x, I64 origin_y) +{ + @window_widgets_list* widgets_list; + Widget* widget; + Context2D* ctx; + // Bool widget_is_hovered; + I64 x, y; + F64 ttf_point_to_size; + no_warn ctx; + no_warn ttf_point_to_size; widgets_list = win->widget; while (widgets_list) { @@ -1671,4 +1689,4 @@ U0 @umami_pointer_wait_anim_init() } @umami_pointer_wait_anim_init; -Compositor.theme.pointer.wait = Animation2D.NewFromFrames(umami_pointer_wait_frames, 18, 50); \ No newline at end of file +Compositor.theme.pointer.wait = Animation2D.NewFromFrames(umami_pointer_wait_frames, 18, 50);