From 2c58b81ddee6f64ad307d8e8b6c403d30fb29560 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 9 May 2025 12:22:27 -0700 Subject: [PATCH] parameterize find-code-location by forcing-focus to destination panel; use that in 'switch' command --- src/raddbg/generated/raddbg.meta.c | 3 ++- src/raddbg/generated/raddbg.meta.h | 5 ++++- src/raddbg/raddbg.mdesk | 1 + src/raddbg/raddbg_core.c | 6 +++++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/raddbg/generated/raddbg.meta.c b/src/raddbg/generated/raddbg.meta.c index 063d4e87..55c027df 100644 --- a/src/raddbg/generated/raddbg.meta.c +++ b/src/raddbg/generated/raddbg.meta.c @@ -435,7 +435,7 @@ RD_NameSchemaInfo rd_name_schema_info_table[24] = {str8_lit_comp("thread"), str8_lit_comp("x:{'label':code_string, 'id':u64, @no_expand 'active':bool, 'call_stack':query}")}, }; -Rng1U64 rd_reg_slot_range_table[43] = +Rng1U64 rd_reg_slot_range_table[44] = { {0}, {OffsetOf(RD_Regs, machine), OffsetOf(RD_Regs, machine) + sizeof(CTRL_Handle)}, @@ -470,6 +470,7 @@ Rng1U64 rd_reg_slot_range_table[43] = {OffsetOf(RD_Regs, reg_slot), OffsetOf(RD_Regs, reg_slot) + sizeof(RD_RegSlot)}, {OffsetOf(RD_Regs, pid), OffsetOf(RD_Regs, pid) + sizeof(U32)}, {OffsetOf(RD_Regs, force_confirm), OffsetOf(RD_Regs, force_confirm) + sizeof(B32)}, +{OffsetOf(RD_Regs, force_focus), OffsetOf(RD_Regs, force_focus) + sizeof(B32)}, {OffsetOf(RD_Regs, prefer_disasm), OffsetOf(RD_Regs, prefer_disasm) + sizeof(B32)}, {OffsetOf(RD_Regs, no_rich_tooltip), OffsetOf(RD_Regs, no_rich_tooltip) + sizeof(B32)}, {OffsetOf(RD_Regs, do_implicit_root), OffsetOf(RD_Regs, do_implicit_root) + sizeof(B32)}, diff --git a/src/raddbg/generated/raddbg.meta.h b/src/raddbg/generated/raddbg.meta.h index 3056593d..6473c8bd 100644 --- a/src/raddbg/generated/raddbg.meta.h +++ b/src/raddbg/generated/raddbg.meta.h @@ -41,6 +41,7 @@ RD_RegSlot_OffPx, RD_RegSlot_RegSlot, RD_RegSlot_PID, RD_RegSlot_ForceConfirm, +RD_RegSlot_ForceFocus, RD_RegSlot_PreferDisasm, RD_RegSlot_NoRichTooltip, RD_RegSlot_DoImplicitRoot, @@ -463,6 +464,7 @@ Vec2F32 off_px; RD_RegSlot reg_slot; U32 pid; B32 force_confirm; +B32 force_focus; B32 prefer_disasm; B32 no_rich_tooltip; B32 do_implicit_root; @@ -556,6 +558,7 @@ Z(getting_started)\ .reg_slot = rd_regs()->reg_slot,\ .pid = rd_regs()->pid,\ .force_confirm = rd_regs()->force_confirm,\ +.force_focus = rd_regs()->force_focus,\ .prefer_disasm = rd_regs()->prefer_disasm,\ .no_rich_tooltip = rd_regs()->no_rich_tooltip,\ .do_implicit_root = rd_regs()->do_implicit_root,\ @@ -572,7 +575,7 @@ extern String8 rd_tab_fast_path_view_name_table[24]; extern String8 rd_tab_fast_path_query_name_table[24]; extern RD_VocabInfo rd_vocab_info_table[343]; extern RD_NameSchemaInfo rd_name_schema_info_table[24]; -extern Rng1U64 rd_reg_slot_range_table[43]; +extern Rng1U64 rd_reg_slot_range_table[44]; extern String8 rd_binding_version_remap_old_name_table[8]; extern String8 rd_binding_version_remap_new_name_table[8]; extern String8 rd_icon_kind_text_table[75]; diff --git a/src/raddbg/raddbg.mdesk b/src/raddbg/raddbg.mdesk index 5a457c3c..e67e63b8 100644 --- a/src/raddbg/raddbg.mdesk +++ b/src/raddbg/raddbg.mdesk @@ -732,6 +732,7 @@ RD_RegTable: // rjf: general parameters {U32 pid PID } {B32 force_confirm ForceConfirm } + {B32 force_focus ForceFocus } {B32 prefer_disasm PreferDisasm } {B32 no_rich_tooltip NoRichTooltip } {B32 do_implicit_root DoImplicitRoot} diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 535c8f68..cac4e9f1 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -13923,7 +13923,7 @@ rd_frame(void) RD_Cfg *recent_file = rd_cfg_from_id(rd_regs()->cfg); RD_Cfg *path_root = rd_cfg_child_from_string(recent_file, str8_lit("path")); String8 path = path_root->first->string; - rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = path, .cursor = txt_pt(0, 0), .vaddr = 0); + rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = path, .cursor = txt_pt(0, 0), .vaddr = 0, .force_focus = 1); }break; case RD_CmdKind_SwitchToPartnerFile: { @@ -14842,6 +14842,10 @@ rd_frame(void) .view = dst_tab->id, .tab = dst_tab->id) { + if(rd_regs()->force_focus) + { + rd_cmd(RD_CmdKind_FocusPanel); + } rd_cmd(RD_CmdKind_FocusTab); if(point.line != 0) {