Media/Themes/Umami/Theme: Check hovered/focused/mouse_down widget in reverse z-order
This commit is contained in:
parent
20021f844f
commit
040307bd92
1 changed files with 18 additions and 15 deletions
|
@ -1267,24 +1267,27 @@ U0 @umami_set_focused_and_hovered_widget(Window* win, I64 event)
|
|||
|
||||
widget_is_hovered = FALSE;
|
||||
widgets_list = win->widget;
|
||||
while (widgets_list) {
|
||||
if (widgets_list->widget) {
|
||||
if (widgets_list) {
|
||||
// Skip to most recently created
|
||||
while (widgets_list->next)
|
||||
widgets_list = widgets_list->next;
|
||||
// Check hovered/focused, front-to-back
|
||||
while (widgets_list && !widget_is_hovered) {
|
||||
widget = widgets_list->widget;
|
||||
x = win->x + origin_x + widget->x;
|
||||
y = win->y + origin_y + widget->y;
|
||||
|
||||
if (@gui_window_is_hovered(win) && @widget_is_hovered(x, y, widget)) {
|
||||
win->hovered_widget = widget;
|
||||
widget_is_hovered = TRUE;
|
||||
}
|
||||
|
||||
if (@widget_is_hovered(x, y, widget) && event == CPZ_MSG_WIN_LEFT_BTN_DOWN) {
|
||||
win->focused_widget = widget;
|
||||
win->mouse_down_widget = widget;
|
||||
break;
|
||||
if (widget) {
|
||||
x = win->x + origin_x + widget->x;
|
||||
y = win->y + origin_y + widget->y;
|
||||
if (@gui_window_is_hovered(win) && @widget_is_hovered(x, y, widget)) {
|
||||
widget_is_hovered = TRUE;
|
||||
win->hovered_widget = widget;
|
||||
if (widget_is_hovered && event == CPZ_MSG_WIN_LEFT_BTN_DOWN) {
|
||||
win->focused_widget = widget;
|
||||
win->mouse_down_widget = widget;
|
||||
}
|
||||
}
|
||||
}
|
||||
widgets_list = widgets_list->prev;
|
||||
}
|
||||
widgets_list = widgets_list->next;
|
||||
}
|
||||
|
||||
if (!widget_is_hovered)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue