@@ -13515,7 +13515,7 @@ rd_frame(void)
1351513515 {
1351613516 path = rd_regs()->file_path;
1351713517 }
13518- rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = path, .cursor = txt_pt(0, 0), .vaddr = 0, .force_focus = 1);
13518+ rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = path, .cursor = txt_pt(0, 0), .vaddr = 0, .force_focus = 1, .prefer_new_tab = 1 );
1351913519 }break;
1352013520 case RD_CmdKind_SwitchToPartnerFile:
1352113521 {
@@ -13542,7 +13542,7 @@ rd_frame(void)
1354213542 FileProperties candidate_props = os_properties_from_file_path(candidate_path);
1354313543 if(candidate_props.modified != 0)
1354413544 {
13545- rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = candidate_path, .cursor = txt_pt(0, 0), .vaddr = 0);
13545+ rd_cmd(RD_CmdKind_FindCodeLocation, .file_path = candidate_path, .cursor = txt_pt(0, 0), .vaddr = 0, .prefer_new_tab = 1 );
1354613546 break;
1354713547 }
1354813548 }
@@ -14124,12 +14124,14 @@ rd_frame(void)
1412414124 CTRL_Entity *process = &ctrl_entity_nil;
1412514125 U64 vaddr = 0;
1412614126 B32 require_disasm_snap = 0;
14127- {
14128- file_path = rd_mapped_from_file_path(scratch.arena, rd_regs()->file_path);
14129- point = rd_regs()->cursor;
14130- thread = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->thread);
14131- process = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->process);
14132- vaddr = rd_regs()->vaddr;
14127+ B32 prefer_new_tab = 0;
14128+ {
14129+ file_path = rd_mapped_from_file_path(scratch.arena, rd_regs()->file_path);
14130+ point = rd_regs()->cursor;
14131+ thread = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->thread);
14132+ process = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, rd_regs()->process);
14133+ vaddr = rd_regs()->vaddr;
14134+ prefer_new_tab = rd_regs()->prefer_new_tab;
1413314135 if(file_path.size == 0)
1413414136 {
1413514137 require_disasm_snap = 1;
@@ -14236,25 +14238,28 @@ rd_frame(void)
1423614238 // rjf: try to find panel/view pair that has any *auto* source code tab open
1423714239 info->panel_w_auto = &cfg_nil_panel_node;
1423814240 info->view_w_auto = &cfg_nil_node;
14239- for(CFG_PanelNode *panel = panel_tree.root;
14240- panel != &cfg_nil_panel_node;
14241- panel = cfg_panel_node_rec__depth_first_pre(panel_tree.root, panel).next)
14241+ if(!prefer_new_tab)
1424214242 {
14243- if(panel->first != &cfg_nil_panel_node)
14244- {
14245- continue;
14246- }
14247- for(CFG_NodePtrNode *tab_n = panel->tabs.first; tab_n != 0; tab_n = tab_n->next)
14243+ for(CFG_PanelNode *panel = panel_tree.root;
14244+ panel != &cfg_nil_panel_node;
14245+ panel = cfg_panel_node_rec__depth_first_pre(panel_tree.root, panel).next)
1424814246 {
14249- CFG_Node *tab = tab_n->v;
14250- if(rd_cfg_is_project_filtered(tab)) { continue; }
14251- RD_RegsScope(.tab = tab->id, .view = tab->id)
14247+ if(panel->first != &cfg_nil_panel_node)
14248+ {
14249+ continue;
14250+ }
14251+ for(CFG_NodePtrNode *tab_n = panel->tabs.first; tab_n != 0; tab_n = tab_n->next)
1425214252 {
14253- if(str8_match(tab->string, str8_lit("text"), 0) &&
14254- rd_view_setting_b32_from_name(str8_lit("auto")))
14253+ CFG_Node *tab = tab_n->v;
14254+ if(rd_cfg_is_project_filtered(tab)) { continue; }
14255+ RD_RegsScope(.tab = tab->id, .view = tab->id)
1425514256 {
14256- info->panel_w_auto = panel;
14257- info->view_w_auto = tab;
14257+ if(str8_match(tab->string, str8_lit("text"), 0) &&
14258+ rd_view_setting_b32_from_name(str8_lit("auto")))
14259+ {
14260+ info->panel_w_auto = panel;
14261+ info->view_w_auto = tab;
14262+ }
1425814263 }
1425914264 }
1426014265 }
@@ -14616,8 +14621,11 @@ rd_frame(void)
1461614621 dst_tab = cfg_node_new(rd_state->cfg, dst_panel->cfg, str8_lit("text"));
1461714622 CFG_Node *expr = cfg_node_new(rd_state->cfg, dst_tab, str8_lit("expression"));
1461814623 cfg_node_new(rd_state->cfg, expr, rd_eval_string_from_file_path(scratch.arena, file_path));
14619- CFG_Node *auto_root = cfg_node_new(rd_state->cfg, dst_tab, str8_lit("auto"));
14620- cfg_node_new(rd_state->cfg, auto_root, str8_lit("1"));
14624+ if(!prefer_new_tab)
14625+ {
14626+ CFG_Node *auto_root = cfg_node_new(rd_state->cfg, dst_tab, str8_lit("auto"));
14627+ cfg_node_new(rd_state->cfg, auto_root, str8_lit("1"));
14628+ }
1462114629 }
1462214630
1462314631 // rjf: determine if we need a contain or center
0 commit comments