adjust force-contain on tooltips; we don't want it for drag/drop, we do for tooltips, so use active interaction as a proxy

This commit is contained in:
Ryan Fleury
2024-05-29 10:43:04 -07:00
parent 8f446d1f9a
commit f808e8ae29
+9 -4
View File
@@ -1155,7 +1155,13 @@ ui_end_build(void)
//- rjf: ensure special floating roots are within screen bounds
UI_Box *floating_roots[] = {ui_state->tooltip_root, ui_state->ctx_menu_root};
B32 force_contain[] = {0, 1};
B32 force_contain[] =
{
(ui_key_match(ui_active_key(UI_MouseButtonKind_Left), ui_key_zero()) &&
ui_key_match(ui_active_key(UI_MouseButtonKind_Right), ui_key_zero()) &&
ui_key_match(ui_active_key(UI_MouseButtonKind_Middle), ui_key_zero())),
1,
};
for(U64 idx = 0; idx < ArrayCount(floating_roots); idx += 1)
{
UI_Box *root = floating_roots[idx];
@@ -1164,11 +1170,10 @@ ui_end_build(void)
Rng2F32 window_rect = os_client_rect_from_window(ui_window());
Vec2F32 window_dim = dim_2f32(window_rect);
Rng2F32 root_rect = root->rect;
Vec2F32 root_rect_dim = dim_2f32(root_rect);
Vec2F32 shift =
{
-ClampBot(0, root_rect.x1 - window_rect.x1) * (root_rect_dim.x < root->font_size*15.f || force_contain[idx]),
-ClampBot(0, root_rect.y1 - window_rect.y1) * (root_rect_dim.y < root->font_size*15.f || force_contain[idx]),
-ClampBot(0, root_rect.x1 - window_rect.x1) * (force_contain[idx]),
-ClampBot(0, root_rect.y1 - window_rect.y1) * (force_contain[idx]),
};
Rng2F32 new_root_rect = shift_2f32(root_rect, shift);
root->fixed_position = new_root_rect.p0;