From bbdbcead163ae329be97b23f3a0ca15a819dbebe Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 9 May 2025 09:05:51 -0700 Subject: [PATCH] correctly allow space keybindings; bind by default to 'accept', along with return; -> allow space for hitting buttons, expansions, etc. --- src/os/gfx/os_gfx.c | 1 + src/raddbg/generated/raddbg.meta.c | 3 ++- src/raddbg/raddbg.mdesk | 1 + src/raddbg/raddbg_core.c | 30 +++++++++++++++--------------- src/raddbg/raddbg_core.h | 2 +- src/raddbg/raddbg_views.c | 2 +- 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/os/gfx/os_gfx.c b/src/os/gfx/os_gfx.c index c5800b57..7523984b 100644 --- a/src/os/gfx/os_gfx.c +++ b/src/os/gfx/os_gfx.c @@ -156,6 +156,7 @@ os_codepoint_from_modifiers_and_key(OS_Modifiers modifiers, OS_Key key) {'X', OS_Key_X, OS_Modifier_Shift}, {'Y', OS_Key_Y, OS_Modifier_Shift}, {'Z', OS_Key_Z, OS_Modifier_Shift}, + {' ', OS_Key_Space, 0}, }; // rjf: check numeric diff --git a/src/raddbg/generated/raddbg.meta.c b/src/raddbg/generated/raddbg.meta.c index a451e20b..0bc62eca 100644 --- a/src/raddbg/generated/raddbg.meta.c +++ b/src/raddbg/generated/raddbg.meta.c @@ -722,7 +722,7 @@ RD_CmdKindInfo rd_cmd_kind_info_table[236] = { str8_lit_comp("geo3d"), str8_lit_comp("Opens a Geometry (3D) tab."), {0}, {0}, RD_CmdKindFlag_ListInUI|RD_CmdKindFlag_ListInIPCDocs|RD_CmdKindFlag_ListInTab}, }; -struct {String8 string; RD_Binding binding;} rd_default_binding_table[115] = +struct {String8 string; RD_Binding binding;} rd_default_binding_table[116] = { {str8_lit_comp("kill_all"), {OS_Key_F5, 0 |OS_Modifier_Shift }}, {str8_lit_comp("step_into_inst"), {OS_Key_F11, 0 |OS_Modifier_Alt}}, @@ -775,6 +775,7 @@ struct {String8 string; RD_Binding binding;} rd_default_binding_table[115] = {str8_lit_comp("save_project"), {OS_Key_S, 0 |OS_Modifier_Ctrl |OS_Modifier_Shift }}, {str8_lit_comp("edit"), {OS_Key_F2, 0 }}, {str8_lit_comp("accept"), {OS_Key_Return, 0 }}, +{str8_lit_comp("accept"), {OS_Key_Space, 0 }}, {str8_lit_comp("cancel"), {OS_Key_Esc, 0 }}, {str8_lit_comp("move_left"), {OS_Key_Left, 0 }}, {str8_lit_comp("move_right"), {OS_Key_Right, 0 }}, diff --git a/src/raddbg/raddbg.mdesk b/src/raddbg/raddbg.mdesk index 0fecea56..e05ce1ea 100644 --- a/src/raddbg/raddbg.mdesk +++ b/src/raddbg/raddbg.mdesk @@ -1169,6 +1169,7 @@ RD_DefaultBindingTable: //- rjf: meta controls { "edit" F2 0 0 0 } { "accept" Return 0 0 0 } + { "accept" Space 0 0 0 } { "cancel" Esc 0 0 0 } //- rjf: directional movement & text controls diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index d7bb2460..4328debc 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -2577,7 +2577,7 @@ rd_view_ui(Rng2F32 rect) RD_Cfg *input_root = rd_cfg_child_from_string(query_root, str8_lit("input")); RD_Cfg *cmd_root = rd_cfg_child_from_string(query_root, str8_lit("cmd")); String8 current_input = input_root->first->string; - B32 search_row_is_open = (vs->query_is_selected); + B32 search_row_is_open = (vs->query_is_open); F32 search_row_open_t = ui_anim(ui_key_from_stringf(ui_key_zero(), "search_row_open_%p", view), (F32)!!search_row_is_open, .initial = (F32)!!search_row_is_open, @@ -2615,7 +2615,7 @@ rd_view_ui(Rng2F32 rect) } //- rjf: build contents - UI_Parent(search_row) UI_WidthFill UI_HeightFill UI_Focus(vs->query_is_selected && !vs->contents_are_focused ? UI_FocusKind_On : UI_FocusKind_Off) + UI_Parent(search_row) UI_WidthFill UI_HeightFill UI_Focus(vs->query_is_open && !vs->contents_are_focused ? UI_FocusKind_On : UI_FocusKind_Off) RD_Font(cmd_kind_info->query.flags & RD_QueryFlag_CodeInput ? RD_FontSlot_Code : RD_FontSlot_Main) { if(cmd_name.size != 0) @@ -2659,7 +2659,7 @@ rd_view_ui(Rng2F32 rect) #endif if(ui_pressed(sig)) { - vs->query_is_selected = 1; + vs->query_is_open = 1; rd_cmd(RD_CmdKind_FocusPanel); } } @@ -3015,7 +3015,7 @@ rd_view_ui(Rng2F32 rect) case RD_CmdKind_Search: case RD_CmdKind_SearchBackwards: { - vs->query_is_selected = 0; + vs->query_is_open = 0; }break; } } @@ -5439,11 +5439,11 @@ rd_view_ui(Rng2F32 rect) //////////////////////////// //- rjf: catchall completion controls // - if(vs->query_is_selected) UI_Focus(UI_FocusKind_On) + if(vs->query_is_open) UI_Focus(UI_FocusKind_On) { if(ui_is_focus_active() && ui_slot_press(UI_EventActionSlot_Cancel)) { - vs->query_is_selected = 0; + vs->query_is_open = 0; vs->query_string_size = 0; } if(ui_is_focus_active() && ui_slot_press(UI_EventActionSlot_Accept)) @@ -7198,8 +7198,8 @@ rd_window_frame(void) if(size_query_by_expr_eval) { F32 search_row_open_t = ui_anim(ui_key_from_stringf(ui_key_zero(), "search_row_open_%p", view), - (F32)!!vs->query_is_selected, - .initial = (F32)!!vs->query_is_selected, + (F32)!!vs->query_is_open, + .initial = (F32)!!vs->query_is_open, .epsilon = 0.01f, .rate = rd_state->menu_animation_rate); query_height_px = row_height_px * (predicted_block_tree.total_row_count - !root_is_explicit) + ui_top_px_height()*search_row_open_t; @@ -7443,8 +7443,8 @@ rd_window_frame(void) // rjf: close queries if(query_floating_view_task->pressed_outside || - (rd_cfg_child_from_string(view, str8_lit("lister")) != &rd_nil_cfg && !vs->query_is_selected) || - (cmd_name.size != 0 && !vs->query_is_selected) || + (rd_cfg_child_from_string(view, str8_lit("lister")) != &rd_nil_cfg && !vs->query_is_open) || + (cmd_name.size != 0 && !vs->query_is_open) || ui_slot_press(UI_EventActionSlot_Cancel)) { rd_cmd(RD_CmdKind_CancelQuery); @@ -14957,7 +14957,7 @@ rd_frame(void) RD_ViewState *vs = rd_view_state_from_cfg(view); if(cmd_name.size != 0) { - if(!vs->query_is_selected && cmd_kind_info->query.flags & RD_QueryFlag_SelectOldInput) + if(!vs->query_is_open && cmd_kind_info->query.flags & RD_QueryFlag_SelectOldInput) { vs->query_cursor = txt_pt(1, 1+input->first->string.size); vs->query_mark = txt_pt(1, 1); @@ -14969,16 +14969,16 @@ rd_frame(void) } if(!str8_match(current_query_cmd_name, cmd_name, 0)) { - vs->query_is_selected = 1; + vs->query_is_open = 1; } else { - vs->query_is_selected ^= 1; + vs->query_is_open ^= 1; } } if(rd_regs()->do_lister) { - vs->query_is_selected = 1; + vs->query_is_open = 1; } } }break; @@ -15013,7 +15013,7 @@ rd_frame(void) else if(!(cmd_kind_info->query.flags & RD_QueryFlag_KeepOldInput)) { RD_ViewState *vs = rd_view_state_from_cfg(view); - vs->query_is_selected = 0; + vs->query_is_open = 0; vs->query_string_size = 0; } }break; diff --git a/src/raddbg/raddbg_core.h b/src/raddbg/raddbg_core.h index 643aa90d..790b9904 100644 --- a/src/raddbg/raddbg_core.h +++ b/src/raddbg/raddbg_core.h @@ -223,7 +223,7 @@ struct RD_ViewState void *user_data; // rjf: query state - B32 query_is_selected; + B32 query_is_open; TxtPt query_cursor; TxtPt query_mark; U8 query_buffer[KB(1)]; diff --git a/src/raddbg/raddbg_views.c b/src/raddbg/raddbg_views.c index b773d990..80e14e9c 100644 --- a/src/raddbg/raddbg_views.c +++ b/src/raddbg/raddbg_views.c @@ -161,7 +161,7 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla { RD_Cfg *view = rd_cfg_from_id(rd_regs()->view); RD_ViewState *vs = rd_view_state_from_cfg(view); - if(!vs->query_is_selected) + if(!vs->query_is_open) { RD_Cfg *query = rd_cfg_child_from_string_or_alloc(view, str8_lit("query")); RD_Cfg *input = rd_cfg_child_from_string_or_alloc(query, str8_lit("input"));