preserve per-event mouse coordinates; prefer in ui signal producing codepath

This commit is contained in:
Ryan Fleury
2024-01-23 20:17:50 -08:00
parent be252406bd
commit 959550151a
3 changed files with 11 additions and 2 deletions
+1
View File
@@ -71,6 +71,7 @@ struct OS_Event
B32 right_sided;
U32 character;
U32 repeat_count;
Vec2F32 pos;
Vec2F32 delta;
String8List strings;
};
+2
View File
@@ -416,6 +416,8 @@ w32_wnd_proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
event->key = OS_Key_RightMouseButton;
}break;
}
event->pos.x = (F32)LOWORD(lParam);
event->pos.y = (F32)HIWORD(lParam);
if(release)
{
ReleaseCapture();
+8 -2
View File
@@ -2215,8 +2215,6 @@ ui_signal_from_box(UI_Box *box)
UI_Signal result = {0};
result.box = box;
result.event_flags = os_get_event_flags();
Vec2F32 mouse = ui_state->mouse;
B32 mouse_is_over = contains_2f32(box->rect, mouse);
B32 disabled = !!(box->flags & UI_BoxFlag_Disabled);
B32 is_focused = !!(box->flags & UI_BoxFlag_FocusHot) && !(box->flags & UI_BoxFlag_FocusHotDisabled);
@@ -2248,6 +2246,14 @@ ui_signal_from_box(UI_Box *box)
}
}
//- rjf: unpack mouse position info
Vec2F32 mouse = ui_state->mouse;
if(left_press != 0) { mouse = left_press->pos; }
if(left_release != 0) { mouse = left_release->pos; }
if(right_press != 0) { mouse = right_press->pos; }
if(right_release != 0) { mouse = right_release->pos; }
B32 mouse_is_over = contains_2f32(box->rect, mouse);
//- rjf: check for parent that is clipping
if(box->flags & (UI_BoxFlag_Clickable|UI_BoxFlag_ViewScroll) && mouse_is_over)
{