mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-14 08:02:23 -07:00
distinguish tabs vs. views in rd_regs
This commit is contained in:
@@ -241,7 +241,7 @@ RD_VocabInfo rd_vocab_info_table[319] =
|
||||
{str8_lit_comp("build_tab"), str8_lit_comp(""), str8_lit_comp("Build Tab"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("duplicate_tab"), str8_lit_comp(""), str8_lit_comp("Duplicate Tab"), str8_lit_comp(""), RD_IconKind_Duplicate},
|
||||
{str8_lit_comp("close_tab"), str8_lit_comp(""), str8_lit_comp("Close Tab"), str8_lit_comp(""), RD_IconKind_X},
|
||||
{str8_lit_comp("move_tab"), str8_lit_comp(""), str8_lit_comp("Move Tab"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("move_view"), str8_lit_comp(""), str8_lit_comp("Move View"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("tab_bar_top"), str8_lit_comp(""), str8_lit_comp("Anchor Tab Bar To Top"), str8_lit_comp(""), RD_IconKind_UpArrow},
|
||||
{str8_lit_comp("tab_bar_bottom"), str8_lit_comp(""), str8_lit_comp("Anchor Tab Bar To Bottom"), str8_lit_comp(""), RD_IconKind_DownArrow},
|
||||
{str8_lit_comp("tab_settings"), str8_lit_comp(""), str8_lit_comp("Tab Settings"), str8_lit_comp(""), RD_IconKind_Gear},
|
||||
@@ -401,7 +401,7 @@ RD_NameSchemaInfo rd_name_schema_info_table[22] =
|
||||
{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[42] =
|
||||
Rng1U64 rd_reg_slot_range_table[43] =
|
||||
{
|
||||
{0},
|
||||
{OffsetOf(RD_Regs, machine), OffsetOf(RD_Regs, machine) + sizeof(CTRL_Handle)},
|
||||
@@ -411,6 +411,7 @@ Rng1U64 rd_reg_slot_range_table[42] =
|
||||
{OffsetOf(RD_Regs, ctrl_entity), OffsetOf(RD_Regs, ctrl_entity) + sizeof(CTRL_Handle)},
|
||||
{OffsetOf(RD_Regs, window), OffsetOf(RD_Regs, window) + sizeof(RD_CfgID)},
|
||||
{OffsetOf(RD_Regs, panel), OffsetOf(RD_Regs, panel) + sizeof(RD_CfgID)},
|
||||
{OffsetOf(RD_Regs, tab), OffsetOf(RD_Regs, tab) + sizeof(RD_CfgID)},
|
||||
{OffsetOf(RD_Regs, view), OffsetOf(RD_Regs, view) + sizeof(RD_CfgID)},
|
||||
{OffsetOf(RD_Regs, prev_tab), OffsetOf(RD_Regs, prev_tab) + sizeof(RD_CfgID)},
|
||||
{OffsetOf(RD_Regs, dst_panel), OffsetOf(RD_Regs, dst_panel) + sizeof(RD_CfgID)},
|
||||
@@ -529,9 +530,9 @@ RD_CmdKindInfo rd_cmd_kind_info_table[214] =
|
||||
{ str8_lit_comp("move_tab_left"), str8_lit_comp("Moves the selected tab left one slot."), str8_lit_comp(""), str8_lit_comp("$tab,"), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("open_tab"), str8_lit_comp("Opens a new tab."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*1)|(RD_QueryFlag_Required*1), RD_RegSlot_CmdName, str8_lit_comp("query:tab_commands"), str8_lit_comp("commands"), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("build_tab"), str8_lit_comp("Opens a new tab with the parameterized view specification."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("duplicate_tab"), str8_lit_comp("Duplicates a tab."), str8_lit_comp(""), str8_lit_comp("$tab,"), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_View, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("close_tab"), str8_lit_comp("Closes the currently opened tab."), str8_lit_comp(""), str8_lit_comp("$tab,"), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_View, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("move_tab"), str8_lit_comp("Moves a tab to a new panel."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("duplicate_tab"), str8_lit_comp("Duplicates a tab."), str8_lit_comp(""), str8_lit_comp("$tab,"), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Tab, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("close_tab"), str8_lit_comp("Closes the currently opened tab."), str8_lit_comp(""), str8_lit_comp("$tab,"), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Tab, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("move_view"), str8_lit_comp("Moves a view to a new panel."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("tab_bar_top"), str8_lit_comp("Anchors a panel's tab bar to the top of the panel."), str8_lit_comp(""), str8_lit_comp("$tab,"), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("tab_bar_bottom"), str8_lit_comp("Anchors a panel's tab bar to the bottom of the panel."), str8_lit_comp(""), str8_lit_comp("$tab,"), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("tab_settings"), str8_lit_comp("Opens settings for a tab."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1)|(RD_CmdKindFlag_ListInTextPt*0)|(RD_CmdKindFlag_ListInTextRng*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
|
||||
@@ -16,6 +16,7 @@ RD_RegSlot_Thread,
|
||||
RD_RegSlot_CtrlEntity,
|
||||
RD_RegSlot_Window,
|
||||
RD_RegSlot_Panel,
|
||||
RD_RegSlot_Tab,
|
||||
RD_RegSlot_View,
|
||||
RD_RegSlot_PrevTab,
|
||||
RD_RegSlot_DstPanel,
|
||||
@@ -137,7 +138,7 @@ RD_CmdKind_OpenTab,
|
||||
RD_CmdKind_BuildTab,
|
||||
RD_CmdKind_DuplicateTab,
|
||||
RD_CmdKind_CloseTab,
|
||||
RD_CmdKind_MoveTab,
|
||||
RD_CmdKind_MoveView,
|
||||
RD_CmdKind_TabBarTop,
|
||||
RD_CmdKind_TabBarBottom,
|
||||
RD_CmdKind_TabSettings,
|
||||
@@ -544,6 +545,7 @@ CTRL_Handle thread;
|
||||
CTRL_Handle ctrl_entity;
|
||||
RD_CfgID window;
|
||||
RD_CfgID panel;
|
||||
RD_CfgID tab;
|
||||
RD_CfgID view;
|
||||
RD_CfgID prev_tab;
|
||||
RD_CfgID dst_panel;
|
||||
@@ -632,6 +634,7 @@ Z(getting_started)\
|
||||
.ctrl_entity = rd_regs()->ctrl_entity,\
|
||||
.window = rd_regs()->window,\
|
||||
.panel = rd_regs()->panel,\
|
||||
.tab = rd_regs()->tab,\
|
||||
.view = rd_regs()->view,\
|
||||
.prev_tab = rd_regs()->prev_tab,\
|
||||
.dst_panel = rd_regs()->dst_panel,\
|
||||
@@ -672,7 +675,7 @@ extern String8 rd_tab_fast_path_view_name_table[20];
|
||||
extern String8 rd_tab_fast_path_query_name_table[20];
|
||||
extern RD_VocabInfo rd_vocab_info_table[319];
|
||||
extern RD_NameSchemaInfo rd_name_schema_info_table[22];
|
||||
extern Rng1U64 rd_reg_slot_range_table[42];
|
||||
extern Rng1U64 rd_reg_slot_range_table[43];
|
||||
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];
|
||||
|
||||
@@ -637,6 +637,7 @@ RD_RegTable:
|
||||
// rjf: cfgs
|
||||
{RD_CfgID window Window }
|
||||
{RD_CfgID panel Panel }
|
||||
{RD_CfgID tab Tab }
|
||||
{RD_CfgID view View }
|
||||
{RD_CfgID prev_tab PrevTab }
|
||||
{RD_CfgID dst_panel DstPanel }
|
||||
@@ -792,9 +793,9 @@ RD_CmdTable: // | | | |
|
||||
{MoveTabLeft 1 1 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 LeftArrow "move_tab_left" "Move Tab Left" "Moves the selected tab left one slot." "" "$tab," }
|
||||
{OpenTab 1 1 0 0 "query:tab_commands" CmdName commands Nil Null 0 0 0 0 0 1 1 Null "open_tab" "Open New Tab" "Opens a new tab." "" "" }
|
||||
{BuildTab 0 0 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Null "build_tab" "Build Tab" "Opens a new tab with the parameterized view specification." "" "" }
|
||||
{DuplicateTab 1 1 0 0 "" View null Nil Null 0 0 0 0 0 0 0 Duplicate "duplicate_tab" "Duplicate Tab" "Duplicates a tab." "" "$tab," }
|
||||
{CloseTab 1 1 0 0 "" View null Nil Null 0 0 0 0 0 0 0 X "close_tab" "Close Tab" "Closes the currently opened tab." "" "$tab," }
|
||||
{MoveTab 0 0 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Null "move_tab" "Move Tab" "Moves a tab to a new panel." "" "" }
|
||||
{DuplicateTab 1 1 0 0 "" Tab null Nil Null 0 0 0 0 0 0 0 Duplicate "duplicate_tab" "Duplicate Tab" "Duplicates a tab." "" "$tab," }
|
||||
{CloseTab 1 1 0 0 "" Tab null Nil Null 0 0 0 0 0 0 0 X "close_tab" "Close Tab" "Closes the currently opened tab." "" "$tab," }
|
||||
{MoveView 0 0 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Null "move_view" "Move View" "Moves a view to a new panel." "" "" }
|
||||
{TabBarTop 1 1 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 UpArrow "tab_bar_top" "Anchor Tab Bar To Top" "Anchors a panel's tab bar to the top of the panel." "" "$tab," }
|
||||
{TabBarBottom 1 1 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 DownArrow "tab_bar_bottom" "Anchor Tab Bar To Bottom" "Anchors a panel's tab bar to the bottom of the panel." "" "$tab," }
|
||||
{TabSettings 1 1 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Gear "tab_settings" "Tab Settings" "Opens settings for a tab." "" "" }
|
||||
|
||||
+53
-43
@@ -1229,6 +1229,10 @@ rd_setting_from_name(String8 name)
|
||||
B32 allow_bucket_chains;
|
||||
};
|
||||
RD_Cfg *view_cfg = rd_cfg_from_id(rd_regs()->view);
|
||||
if(view_cfg == &rd_nil_cfg)
|
||||
{
|
||||
view_cfg = rd_cfg_from_id(rd_regs()->tab);
|
||||
}
|
||||
CfgSeedTask panel_task = {0, &rd_nil_cfg, 1};
|
||||
if(panel_task.cfg == &rd_nil_cfg) { panel_task.cfg = rd_cfg_from_id(rd_regs()->panel); }
|
||||
if(panel_task.cfg == &rd_nil_cfg) { panel_task.cfg = rd_cfg_from_id(rd_regs()->window); }
|
||||
@@ -5777,7 +5781,8 @@ rd_window_frame(void)
|
||||
//- rjf: @window_frame_part fill panel/view interaction registers
|
||||
//
|
||||
rd_regs()->panel = panel_tree.focused->cfg->id;
|
||||
rd_regs()->view = panel_tree.focused->selected_tab->id;
|
||||
rd_regs()->tab = panel_tree.focused->selected_tab->id;
|
||||
rd_regs()->view = panel_tree.focused->selected_tab->id;
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: @window_frame_part build UI
|
||||
@@ -5791,7 +5796,7 @@ rd_window_frame(void)
|
||||
{
|
||||
// rjf: get top-level font size info
|
||||
F32 top_level_font_size = 0;
|
||||
RD_RegsScope(.view = 0) top_level_font_size = rd_setting_f32_from_name(str8_lit("font_size"));
|
||||
RD_RegsScope(.view = 0, .tab = 0) top_level_font_size = rd_setting_f32_from_name(str8_lit("font_size"));
|
||||
|
||||
// rjf: build icon info
|
||||
UI_IconInfo icon_info = {0};
|
||||
@@ -6046,6 +6051,7 @@ rd_window_frame(void)
|
||||
if(rd_drag_is_active() && window_is_focused)
|
||||
RD_RegsScope(.window = rd_state->drag_drop_regs->window,
|
||||
.panel = rd_state->drag_drop_regs->panel,
|
||||
.tab = 0,
|
||||
.view = rd_state->drag_drop_regs->view)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
@@ -6458,7 +6464,7 @@ rd_window_frame(void)
|
||||
|
||||
// rjf: determine size of hover evaluation container
|
||||
EV_BlockTree predicted_block_tree = {0};
|
||||
RD_RegsScope(.view = view->id)
|
||||
RD_RegsScope(.view = view->id, .tab = 0)
|
||||
{
|
||||
predicted_block_tree = ev_block_tree_from_eval(scratch.arena, rd_view_eval_view(), str8_zero(), hover_eval);
|
||||
}
|
||||
@@ -6601,7 +6607,7 @@ rd_window_frame(void)
|
||||
|
||||
// rjf: compute query view's top-level rectangle
|
||||
Rng2F32 rect = {0};
|
||||
RD_RegsScope(.view = view->id)
|
||||
RD_RegsScope(.view = view->id, .tab = 0)
|
||||
{
|
||||
F32 row_height_px = ui_top_font_size() * rd_setting_f32_from_name(str8_lit("row_height"));
|
||||
Vec2F32 content_rect_center = center_2f32(content_rect);
|
||||
@@ -7781,7 +7787,7 @@ rd_window_frame(void)
|
||||
rd_cmd(RD_CmdKind_SplitPanel,
|
||||
.dst_panel = split_panel->cfg->id,
|
||||
.panel = rd_state->drag_drop_regs->panel,
|
||||
.view = rd_state->drag_drop_regs->view,
|
||||
.view = rd_state->drag_drop_regs->view,
|
||||
.dir2 = dir);
|
||||
}
|
||||
}
|
||||
@@ -7873,7 +7879,7 @@ rd_window_frame(void)
|
||||
rd_cmd(RD_CmdKind_SplitPanel,
|
||||
.dst_panel = split_panel->cfg->id,
|
||||
.panel = rd_state->drag_drop_regs->panel,
|
||||
.view = rd_state->drag_drop_regs->view,
|
||||
.view = rd_state->drag_drop_regs->view,
|
||||
.dir2 = dir);
|
||||
}
|
||||
|
||||
@@ -8184,7 +8190,7 @@ rd_window_frame(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
rd_cmd(RD_CmdKind_MoveTab,
|
||||
rd_cmd(RD_CmdKind_MoveView,
|
||||
.dst_panel = panel->cfg->id,
|
||||
.panel = rd_state->drag_drop_regs->panel,
|
||||
.view = rd_state->drag_drop_regs->view,
|
||||
@@ -8276,7 +8282,8 @@ rd_window_frame(void)
|
||||
{
|
||||
//- rjf: push interaction registers, fill with per-view states
|
||||
rd_push_regs(.panel = panel->cfg->id,
|
||||
.view = selected_tab->id);
|
||||
.tab = selected_tab->id,
|
||||
.view = selected_tab->id);
|
||||
{
|
||||
String8 view_expr = rd_expr_from_cfg(selected_tab);
|
||||
String8 view_file_path = rd_file_path_from_eval_string(rd_frame_arena(), view_expr);
|
||||
@@ -8480,7 +8487,7 @@ rd_window_frame(void)
|
||||
//- rjf: build tab
|
||||
DR_FStrList tab_fstrs = tab_task->fstrs;
|
||||
F32 tab_width_px = tab_task->tab_width;
|
||||
if(tab != &rd_nil_cfg) RD_RegsScope(.panel = panel->cfg->id, .view = tab->id)
|
||||
if(tab != &rd_nil_cfg) RD_RegsScope(.panel = panel->cfg->id, .view = tab->id, .tab = tab->id)
|
||||
{
|
||||
// rjf: gather info for this tab
|
||||
B32 tab_is_selected = (tab == panel->selected_tab);
|
||||
@@ -8693,10 +8700,10 @@ rd_window_frame(void)
|
||||
//
|
||||
if(tab_drop_is_active && rd_drag_drop() && rd_state->drag_drop_regs_slot == RD_RegSlot_View)
|
||||
{
|
||||
rd_cmd(RD_CmdKind_MoveTab,
|
||||
rd_cmd(RD_CmdKind_MoveView,
|
||||
.dst_panel = panel->cfg->id,
|
||||
.panel = rd_state->drag_drop_regs->panel,
|
||||
.view = rd_state->drag_drop_regs->view,
|
||||
.view = rd_state->drag_drop_regs->view,
|
||||
.prev_tab = tab_drop_prev->id);
|
||||
}
|
||||
|
||||
@@ -8757,11 +8764,11 @@ rd_window_frame(void)
|
||||
ui_eat_event(evt);
|
||||
if(evt->delta_2f32.y < 0)
|
||||
{
|
||||
rd_cmd(RD_CmdKind_IncFontSize, .view = 0);
|
||||
rd_cmd(RD_CmdKind_IncFontSize, .tab = 0, .view = 0);
|
||||
}
|
||||
else if(evt->delta_2f32.y > 0)
|
||||
{
|
||||
rd_cmd(RD_CmdKind_DecFontSize, .view = 0);
|
||||
rd_cmd(RD_CmdKind_DecFontSize, .tab = 0, .view = 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11758,6 +11765,7 @@ rd_frame(void)
|
||||
RD_PanelTree panel_tree = rd_panel_tree_from_cfg(scratch.arena, rd_cfg_from_id(ws->cfg_id));
|
||||
rd_regs()->window = ws->cfg_id;
|
||||
rd_regs()->panel = panel_tree.focused->cfg->id;
|
||||
rd_regs()->tab = panel_tree.focused->selected_tab->id;
|
||||
rd_regs()->view = panel_tree.focused->selected_tab->id;
|
||||
scratch_end(scratch);
|
||||
}
|
||||
@@ -12743,7 +12751,7 @@ rd_frame(void)
|
||||
"query:thread_locals, "
|
||||
,
|
||||
tab->id, window->id);
|
||||
rd_cmd(RD_CmdKind_PushQuery, .expr = expr, .do_implicit_root = 1, .do_lister = 1, .do_big_rows = 1, .view = tab->id);
|
||||
rd_cmd(RD_CmdKind_PushQuery, .expr = expr, .do_implicit_root = 1, .do_lister = 1, .do_big_rows = 1, .view = tab->id, .tab = tab->id);
|
||||
}break;
|
||||
|
||||
//- rjf: command fast paths
|
||||
@@ -13102,7 +13110,7 @@ rd_frame(void)
|
||||
case RD_CmdKind_IncFontSize:
|
||||
{
|
||||
RD_Cfg *cfg = &rd_nil_cfg;
|
||||
if(cfg == &rd_nil_cfg) { cfg = rd_cfg_from_id(rd_regs()->view); }
|
||||
if(cfg == &rd_nil_cfg) { cfg = rd_cfg_from_id(rd_regs()->tab); }
|
||||
if(cfg == &rd_nil_cfg) { cfg = rd_cfg_from_id(rd_regs()->window); }
|
||||
if(cfg != &rd_nil_cfg)
|
||||
{
|
||||
@@ -13117,7 +13125,7 @@ rd_frame(void)
|
||||
case RD_CmdKind_DecFontSize:
|
||||
{
|
||||
RD_Cfg *cfg = &rd_nil_cfg;
|
||||
if(cfg == &rd_nil_cfg) { cfg = rd_cfg_from_id(rd_regs()->view); }
|
||||
if(cfg == &rd_nil_cfg) { cfg = rd_cfg_from_id(rd_regs()->tab); }
|
||||
if(cfg == &rd_nil_cfg) { cfg = rd_cfg_from_id(rd_regs()->window); }
|
||||
if(cfg != &rd_nil_cfg)
|
||||
{
|
||||
@@ -13272,7 +13280,7 @@ rd_frame(void)
|
||||
{
|
||||
if(!rd_cfg_is_project_filtered(n->v))
|
||||
{
|
||||
rd_cmd(RD_CmdKind_FocusTab, .panel = origin_panel->cfg->id, .view = n->v->id);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .panel = origin_panel->cfg->id, .tab = n->v->id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -13281,7 +13289,7 @@ rd_frame(void)
|
||||
{
|
||||
rd_cmd(RD_CmdKind_ClosePanel);
|
||||
}
|
||||
rd_cmd(RD_CmdKind_FocusTab, .panel = new_panel_cfg->id, .view = dragdrop_tab->id);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .panel = new_panel_cfg->id, .tab = dragdrop_tab->id);
|
||||
}
|
||||
|
||||
// rjf: focus new panel
|
||||
@@ -13638,7 +13646,7 @@ rd_frame(void)
|
||||
//- rjf: panel tab controls
|
||||
case RD_CmdKind_FocusTab:
|
||||
{
|
||||
RD_Cfg *tab = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *tab = rd_cfg_from_id(rd_regs()->tab);
|
||||
RD_Cfg *panel = tab->parent;
|
||||
RD_PanelTree panel_tree = rd_panel_tree_from_cfg(scratch.arena, panel);
|
||||
RD_PanelNode *panel_node = rd_panel_node_from_tree_cfg(panel_tree.root, panel);
|
||||
@@ -13690,7 +13698,7 @@ rd_frame(void)
|
||||
}
|
||||
if(next_selected_tab != &rd_nil_cfg)
|
||||
{
|
||||
rd_cmd(RD_CmdKind_FocusTab, .view = next_selected_tab->id);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .tab = next_selected_tab->id);
|
||||
}
|
||||
}break;
|
||||
case RD_CmdKind_PrevTab:
|
||||
@@ -13721,13 +13729,13 @@ rd_frame(void)
|
||||
}
|
||||
if(next_selected_tab != &rd_nil_cfg)
|
||||
{
|
||||
rd_cmd(RD_CmdKind_FocusTab, .view = next_selected_tab->id);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .tab = next_selected_tab->id);
|
||||
}
|
||||
}break;
|
||||
case RD_CmdKind_MoveTabRight:
|
||||
case RD_CmdKind_MoveTabLeft:
|
||||
{
|
||||
RD_Cfg *tab = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *tab = rd_cfg_from_id(rd_regs()->tab);
|
||||
RD_Cfg *window = rd_window_from_cfg(tab);
|
||||
RD_PanelTree panel_tree = rd_panel_tree_from_cfg(scratch.arena, window);
|
||||
RD_PanelNode *panel = rd_panel_node_from_tree_cfg(panel_tree.root, tab->parent);
|
||||
@@ -13764,9 +13772,9 @@ rd_frame(void)
|
||||
{
|
||||
new_prev = filtered_tabs.last->v;
|
||||
}
|
||||
rd_cmd(RD_CmdKind_MoveTab,
|
||||
rd_cmd(RD_CmdKind_MoveView,
|
||||
.dst_panel = panel->cfg->id,
|
||||
.view = tab->id,
|
||||
.view = tab->id,
|
||||
.prev_tab = new_prev->id);
|
||||
}break;
|
||||
case RD_CmdKind_BuildTab:
|
||||
@@ -13781,18 +13789,18 @@ rd_frame(void)
|
||||
RD_Cfg *project = rd_cfg_new(tab, str8_lit("project"));
|
||||
rd_cfg_new(project, rd_state->project_path);
|
||||
}
|
||||
rd_cmd(RD_CmdKind_FocusTab, .view = tab->id);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .tab = tab->id);
|
||||
}break;
|
||||
case RD_CmdKind_DuplicateTab:
|
||||
{
|
||||
RD_Cfg *src = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *src = rd_cfg_from_id(rd_regs()->tab);
|
||||
RD_Cfg *dst = rd_cfg_deep_copy(src);
|
||||
rd_cfg_insert_child(src->parent, src, dst);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .view = dst->id);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .tab = dst->id);
|
||||
}break;
|
||||
case RD_CmdKind_CloseTab:
|
||||
{
|
||||
RD_Cfg *tab = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *tab = rd_cfg_from_id(rd_regs()->tab);
|
||||
RD_PanelTree panel_tree = rd_panel_tree_from_cfg(scratch.arena, tab);
|
||||
RD_PanelNode *panel = rd_panel_node_from_tree_cfg(panel_tree.root, tab->parent);
|
||||
B32 found_selected = 0;
|
||||
@@ -13812,20 +13820,20 @@ rd_frame(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
rd_cmd(RD_CmdKind_FocusTab, .view = next_selected_tab->id);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .tab = next_selected_tab->id);
|
||||
rd_cfg_release(tab);
|
||||
}break;
|
||||
case RD_CmdKind_MoveTab:
|
||||
case RD_CmdKind_MoveView:
|
||||
{
|
||||
RD_Cfg *tab = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *prev_tab = rd_cfg_from_id(rd_regs()->prev_tab);
|
||||
RD_Cfg *src_panel = tab->parent;
|
||||
RD_Cfg *src_panel = view->parent;
|
||||
RD_Cfg *dst_panel = rd_cfg_from_id(rd_regs()->dst_panel);
|
||||
if(dst_panel != &rd_nil_cfg && prev_tab != tab)
|
||||
if(dst_panel != &rd_nil_cfg && prev_tab != view)
|
||||
{
|
||||
rd_cfg_unhook(src_panel, tab);
|
||||
rd_cfg_insert_child(dst_panel, prev_tab, tab);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .panel = dst_panel->id, .view = tab->id);
|
||||
rd_cfg_unhook(src_panel, view);
|
||||
rd_cfg_insert_child(dst_panel, prev_tab, view);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .panel = dst_panel->id, .tab = view->id);
|
||||
rd_cmd(RD_CmdKind_FocusPanel, .panel = dst_panel->id);
|
||||
RD_PanelTree src_panel_tree = rd_panel_tree_from_cfg(scratch.arena, src_panel);
|
||||
RD_PanelNode *src_panel_node = rd_panel_node_from_tree_cfg(src_panel_tree.root, src_panel);
|
||||
@@ -13837,7 +13845,7 @@ rd_frame(void)
|
||||
{
|
||||
if(!rd_cfg_is_project_filtered(n->v))
|
||||
{
|
||||
rd_cmd(RD_CmdKind_FocusTab, .panel = src_panel->id, .view = n->v->id);
|
||||
rd_cmd(RD_CmdKind_FocusTab, .panel = src_panel->id, .tab = n->v->id);
|
||||
src_panel_is_empty = 0;
|
||||
break;
|
||||
}
|
||||
@@ -13861,7 +13869,7 @@ rd_frame(void)
|
||||
}break;
|
||||
case RD_CmdKind_TabSettings:
|
||||
{
|
||||
String8 expr = push_str8f(scratch.arena, "query:config.$%I64x", rd_regs()->view);
|
||||
String8 expr = push_str8f(scratch.arena, "query:config.$%I64x", rd_regs()->tab);
|
||||
rd_cmd(RD_CmdKind_PushQuery, .expr = expr, .do_implicit_root = 1, .do_big_rows = 1, .do_lister = 1);
|
||||
}break;
|
||||
|
||||
@@ -14564,7 +14572,7 @@ rd_frame(void)
|
||||
{
|
||||
RD_Cfg *tab = tab_n->v;
|
||||
if(rd_cfg_is_project_filtered(tab)) { continue; }
|
||||
RD_RegsScope(.view = tab->id)
|
||||
RD_RegsScope(.tab = tab->id, .view = tab->id)
|
||||
{
|
||||
if(str8_match(tab->string, str8_lit("text"), 0) &&
|
||||
rd_view_cfg_b32_from_string(str8_lit("auto")))
|
||||
@@ -14629,7 +14637,7 @@ rd_frame(void)
|
||||
{
|
||||
RD_Cfg *tab = tab_n->v;
|
||||
if(rd_cfg_is_project_filtered(tab)) { continue; }
|
||||
RD_RegsScope(.view = tab->id)
|
||||
RD_RegsScope(.view = tab->id, .tab = tab->id)
|
||||
{
|
||||
B32 tab_is_selected = (tab == panel->selected_tab);
|
||||
String8 expr_string = rd_expr_from_cfg(tab);
|
||||
@@ -14795,7 +14803,8 @@ rd_frame(void)
|
||||
|
||||
// rjf: move cursor & snap-to-cursor
|
||||
if(dst_panel != &rd_nil_panel_node) RD_RegsScope(.panel = dst_panel->cfg->id,
|
||||
.view = dst_tab->id)
|
||||
.view = dst_tab->id,
|
||||
.tab = dst_tab->id)
|
||||
{
|
||||
rd_cmd(RD_CmdKind_FocusTab);
|
||||
if(point.line != 0)
|
||||
@@ -14830,6 +14839,7 @@ rd_frame(void)
|
||||
|
||||
// rjf: move cursor & snap-to-cursor
|
||||
if(dst_panel != &rd_nil_panel_node) RD_RegsScope(.panel = dst_panel->cfg->id,
|
||||
.tab = dst_tab->id,
|
||||
.view = dst_tab->id)
|
||||
{
|
||||
rd_cmd(RD_CmdKind_FocusTab);
|
||||
@@ -14866,7 +14876,7 @@ rd_frame(void)
|
||||
// rjf: non-floating -> embed in tab parameter
|
||||
else
|
||||
{
|
||||
view = rd_cfg_from_id(rd_regs()->view);
|
||||
view = rd_cfg_from_id(rd_regs()->tab);
|
||||
}
|
||||
|
||||
// rjf: determine if the target view is a lister (and thus already has a command)
|
||||
@@ -16389,7 +16399,7 @@ rd_frame(void)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
RD_RegsScope(.view = tab->id)
|
||||
RD_RegsScope(.tab = tab->id, .view = tab->id)
|
||||
{
|
||||
String8 eval_string = rd_expr_from_cfg(tab);
|
||||
String8 file_path = rd_file_path_from_eval_string(scratch.arena, eval_string);
|
||||
|
||||
@@ -886,6 +886,7 @@ entry_point(CmdLine *cmd_line)
|
||||
RD_PanelTree panel_tree = rd_panel_tree_from_cfg(scratch.arena, rd_cfg_from_id(dst_ws->cfg_id));
|
||||
rd_regs()->window = dst_ws->cfg_id;
|
||||
rd_regs()->panel = panel_tree.focused->cfg->id;
|
||||
rd_regs()->tab = panel_tree.focused->selected_tab->id;
|
||||
rd_regs()->view = panel_tree.focused->selected_tab->id;
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user