add support in ui layer for re-rooting keyboard focus stack, which short-circuits the focus-off search through the focus stack

This commit is contained in:
Ryan Fleury
2024-01-23 13:08:00 -08:00
parent 87cd790f70
commit fa981597ea
2 changed files with 13 additions and 0 deletions
+12
View File
@@ -1668,12 +1668,16 @@ ui_begin_ctx_menu(UI_Key key)
}
ui_push_pref_width(ui_bottom_pref_width());
ui_push_pref_height(ui_bottom_pref_height());
ui_push_focus_hot(UI_FocusKind_Root);
ui_push_focus_active(UI_FocusKind_Root);
return result;
}
internal void
ui_end_ctx_menu(void)
{
ui_pop_focus_active();
ui_pop_focus_hot();
ui_pop_pref_width();
ui_pop_pref_height();
ui_pop_parent();
@@ -1702,6 +1706,10 @@ ui_is_focus_hot(void)
{
for(UI_FocusHotNode *n = ui_state->focus_hot_stack.top; n != 0; n = n->next)
{
if(n->v == UI_FocusKind_Root)
{
break;
}
if(n->v == UI_FocusKind_Off)
{
result = 0;
@@ -1720,6 +1728,10 @@ ui_is_focus_active(void)
{
for(UI_FocusActiveNode *n = ui_state->focus_active_stack.top; n != 0; n = n->next)
{
if(n->v == UI_FocusKind_Root)
{
break;
}
if(n->v == UI_FocusKind_Off)
{
result = 0;
+1
View File
@@ -39,6 +39,7 @@ typedef enum UI_FocusKind
UI_FocusKind_Null,
UI_FocusKind_Off,
UI_FocusKind_On,
UI_FocusKind_Root,
UI_FocusKind_COUNT
}
UI_FocusKind;