start plugging tab-opening back in

This commit is contained in:
Ryan Fleury
2025-02-21 09:52:50 -08:00
parent 2f2bb0d797
commit 4f1e0dedb2
2 changed files with 24 additions and 8 deletions
+22 -8
View File
@@ -3312,8 +3312,8 @@ rd_view_state_from_cfg(RD_Cfg *cfg)
DLLPushBack_NP(slot->first, slot->last, view_state, hash_next, hash_prev);
view_state->cfg_id = id;
view_state->arena = arena_alloc();
view_state->arena_reset_pos = arena_pos(view_state->arena);
view_state->ev_view = ev_view_alloc();
view_state->loading_t = 1.f;
view_state->search_arena = arena_alloc();
}
if(view_state != &rd_nil_view_state)
@@ -3626,7 +3626,7 @@ rd_view_ui(Rng2F32 rect)
}
// rjf: if we don't have a viewer, just use the memory viewer.
if(new_view_name.size != 0)
if(new_view_name.size == 0)
{
new_view_name = str8_lit("memory");
}
@@ -3645,6 +3645,14 @@ rd_view_ui(Rng2F32 rect)
}
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
rd_cfg_equip_string(view, new_view_name);
RD_ViewState *vs = rd_view_state_from_cfg(view);
for(RD_ArenaExt *ext = vs->first_arena_ext; ext != 0; ext = ext->next)
{
arena_release(ext->arena);
}
arena_pop_to(vs->arena, vs->arena_reset_pos);
vs->user_data = 0;
vs->first_arena_ext = vs->last_arena_ext = 0;
}
// rjf: if we don't have a viewer, for whatever reason, then just
@@ -5569,6 +5577,7 @@ rd_view_ui(Rng2F32 rect)
}
}
vs->last_frame_index_built = rd_state->frame_index;
ProfEnd();
}
@@ -5896,6 +5905,10 @@ rd_store_view_loading_info(B32 is_loading, U64 progress_u64, U64 progress_u64_ta
view_state->loading_t_target = (F32)!!is_loading;
view_state->loading_progress_v = progress_u64;
view_state->loading_progress_v_target = progress_u64_target;
if(view_state->last_frame_index_built+1 < rd_state->frame_index)
{
view_state->loading_t = view_state->loading_t_target;
}
}
internal void
@@ -8931,7 +8944,7 @@ rd_window_frame(void)
//
if(build_panel)
{
F32 selected_tab_loading_t = ui_anim(ui_key_from_stringf(ui_key_zero(), "###is_view_loading_%p", selected_tab), selected_tab_view_state->loading_t_target, .initial = selected_tab_view_state->loading_t_target);
F32 selected_tab_loading_t = selected_tab_view_state->loading_t;
if(selected_tab_loading_t > 0.01f) UI_Parent(loading_overlay_container)
{
rd_loading_overlay(panel_rect, selected_tab_loading_t, selected_tab_view_state->loading_progress_v, selected_tab_view_state->loading_progress_v_target);
@@ -14548,6 +14561,11 @@ rd_frame(void)
}break;
case RD_CmdKind_OpenTab:
{
RD_Cfg *panel = rd_cfg_from_id(rd_regs()->panel);
RD_Cfg *tab = rd_cfg_new(panel, rd_regs()->string);
RD_Cfg *expr = rd_cfg_new(tab, str8_lit("expression"));
rd_cfg_new(expr, rd_regs()->expr);
rd_cmd(RD_CmdKind_FocusTab, .view = tab->id);
#if 0 // TODO(rjf): @cfg (tab opening)
RD_Panel *panel = rd_panel_from_handle(rd_regs()->panel);
RD_View *view = rd_view_alloc();
@@ -14635,11 +14653,7 @@ rd_frame(void)
if(props.created != 0)
{
rd_cmd(RD_CmdKind_RecordFileInProject);
#if 0 // TODO(rjf): @cfg (opening file)
rd_cmd(RD_CmdKind_OpenTab,
.string = rd_eval_string_from_file_path(scratch.arena, path),
.params_tree = md_tree_from_string(scratch.arena, rd_view_rule_kind_info_table[RD_ViewRuleKind_PendingFile].string)->first);
#endif
rd_cmd(RD_CmdKind_OpenTab, .string = str8_lit("pending"), .expr = rd_eval_string_from_file_path(scratch.arena, path));
}
else
{
+2
View File
@@ -214,6 +214,7 @@ struct RD_ViewState
// rjf: touch info
U64 last_frame_index_touched;
U64 last_frame_index_built;
// rjf: loading indicator info
F32 loading_t;
@@ -229,6 +230,7 @@ struct RD_ViewState
// rjf: view-lifetime allocation & user data extensions
Arena *arena;
U64 arena_reset_pos;
RD_ArenaExt *first_arena_ext;
RD_ArenaExt *last_arena_ext;
void *user_data;