mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-25 21:14:59 -07:00
stub single line expansion flag
This commit is contained in:
+11
-10
@@ -374,16 +374,17 @@ E_MemberKind;
|
||||
typedef U32 E_TypeFlags;
|
||||
enum
|
||||
{
|
||||
E_TypeFlag_Const = (1<<0),
|
||||
E_TypeFlag_Volatile = (1<<1),
|
||||
E_TypeFlag_IsPlainText = (1<<2),
|
||||
E_TypeFlag_IsCodeText = (1<<3),
|
||||
E_TypeFlag_IsPathText = (1<<4),
|
||||
E_TypeFlag_IsNotText = (1<<5),
|
||||
E_TypeFlag_EditableChildren = (1<<6),
|
||||
E_TypeFlag_InheritedByMembers = (1<<7),
|
||||
E_TypeFlag_InheritedByElements = (1<<8),
|
||||
E_TypeFlag_ArrayLikeExpansion = (1<<9),
|
||||
E_TypeFlag_Const = (1<<0),
|
||||
E_TypeFlag_Volatile = (1<<1),
|
||||
E_TypeFlag_IsPlainText = (1<<2),
|
||||
E_TypeFlag_IsCodeText = (1<<3),
|
||||
E_TypeFlag_IsPathText = (1<<4),
|
||||
E_TypeFlag_IsNotText = (1<<5),
|
||||
E_TypeFlag_EditableChildren = (1<<6),
|
||||
E_TypeFlag_InheritedByMembers = (1<<7),
|
||||
E_TypeFlag_InheritedByElements = (1<<8),
|
||||
E_TypeFlag_ArrayLikeExpansion = (1<<9),
|
||||
E_TypeFlag_StubSingleLineExpansion = (1<<10),
|
||||
};
|
||||
|
||||
typedef struct E_Member E_Member;
|
||||
|
||||
@@ -2138,16 +2138,23 @@ ev_string_iter_next(Arena *arena, EV_StringIter *it, String8 *out_string)
|
||||
{
|
||||
expand_data = it->top_task->user_data = push_array(arena, EV_ExpandedTypeData, 1);
|
||||
expand_data->type = e_type_from_key__cached(type_key);
|
||||
expand_data->expand_rule = e_expand_rule_from_type_key(type_key);
|
||||
expand_data->expand_info = expand_data->expand_rule->info(arena, eval, params->filter);
|
||||
}
|
||||
switch(task_idx)
|
||||
{
|
||||
//- rjf: step 0 -> generate opener symbol
|
||||
case 0:
|
||||
{
|
||||
need_pop = 0;
|
||||
*out_string = expansion_opener_symbol;
|
||||
if(expand_data->type->flags & E_TypeFlag_StubSingleLineExpansion)
|
||||
{
|
||||
*out_string = push_str8f(arena, "%S...%S", expansion_opener_symbol, expansion_closer_symbol);
|
||||
}
|
||||
else
|
||||
{
|
||||
need_pop = 0;
|
||||
expand_data->expand_rule = e_expand_rule_from_type_key(type_key);
|
||||
expand_data->expand_info = expand_data->expand_rule->info(arena, eval, params->filter);
|
||||
*out_string = expansion_opener_symbol;
|
||||
}
|
||||
}break;
|
||||
|
||||
default:
|
||||
|
||||
+28
-12
@@ -4371,14 +4371,6 @@ rd_view_ui(Rng2F32 rect)
|
||||
////////////
|
||||
//- rjf: unpack cell info
|
||||
//
|
||||
U64 cell_id = rd_id_from_watch_cell(cell);
|
||||
RD_WatchPt cell_pt = {row->block->key, row->key, cell_id};
|
||||
RD_WatchViewTextEditState *cell_edit_state = rd_watch_view_text_edit_state_from_pt(ewv, cell_pt);
|
||||
B32 cell_selected = (row_selected && selection_tbl.min.x <= cell_x && cell_x <= selection_tbl.max.x);
|
||||
RD_WatchRowCellInfo cell_info = rd_info_from_watch_row_cell(scratch.arena, row, string_flags, row_info, cell, ui_top_font(), ui_top_font_size(), row_string_max_size_px);
|
||||
E_TypeKey cell_type_key = cell->eval.irtree.type_key;
|
||||
E_Type *cell_type = e_type_from_key__cached(cell_type_key);
|
||||
E_Eval cell_value_eval = e_value_eval_from_eval(cell->eval);
|
||||
F32 cell_width_px = cell->px + cell->pct * (dim_2f32(rect).x - floor_f32(ui_top_font_size()*1.5f));
|
||||
F32 next_cell_x_px = cell_x_px + cell_width_px;
|
||||
F32 cell_width_strictness = 0.f;
|
||||
@@ -4386,6 +4378,19 @@ rd_view_ui(Rng2F32 rect)
|
||||
{
|
||||
cell_width_strictness = 1.f;
|
||||
}
|
||||
F32 visual_row_string_max_size_px = cell_width_px * 1.5f;
|
||||
if(cell->flags & RD_WatchCellFlag_Expr && !(cell->flags & RD_WatchCellFlag_NoEval))
|
||||
{
|
||||
visual_row_string_max_size_px /= 2.f;
|
||||
}
|
||||
U64 cell_id = rd_id_from_watch_cell(cell);
|
||||
RD_WatchPt cell_pt = {row->block->key, row->key, cell_id};
|
||||
RD_WatchViewTextEditState *cell_edit_state = rd_watch_view_text_edit_state_from_pt(ewv, cell_pt);
|
||||
B32 cell_selected = (row_selected && selection_tbl.min.x <= cell_x && cell_x <= selection_tbl.max.x);
|
||||
RD_WatchRowCellInfo cell_info = rd_info_from_watch_row_cell(scratch.arena, row, string_flags, row_info, cell, ui_top_font(), ui_top_font_size(), visual_row_string_max_size_px);
|
||||
E_TypeKey cell_type_key = cell->eval.irtree.type_key;
|
||||
E_Type *cell_type = e_type_from_key__cached(cell_type_key);
|
||||
E_Eval cell_value_eval = e_value_eval_from_eval(cell->eval);
|
||||
B32 cell_toggled = (cell_value_eval.value.u64 != 0);
|
||||
B32 next_cell_toggled = cell_toggled;
|
||||
|
||||
@@ -4613,12 +4618,17 @@ rd_view_ui(Rng2F32 rect)
|
||||
cell_params.edit_string_size_out = &cell_edit_state->input_size;
|
||||
cell_params.expanded_out = &next_row_expanded;
|
||||
cell_params.search_needle = needle;
|
||||
cell_params.meta_fstrs = cell_info.expr_fstrs;
|
||||
cell_params.value_fstrs = cell_info.eval_fstrs;
|
||||
cell_params.meta_fstrs = cell_info.expr_fstrs;
|
||||
cell_params.value_fstrs = cell_info.eval_fstrs;
|
||||
if(row_height_px > ui_top_font_size()*3.5f)
|
||||
{
|
||||
cell_params.description = cell_info.description;
|
||||
}
|
||||
if(cell_selected && ewv->text_editing && cell->flags & RD_WatchCellFlag_NoEval)
|
||||
{
|
||||
MemoryZeroStruct(&cell_params.meta_fstrs);
|
||||
MemoryZeroStruct(&cell_params.description);
|
||||
}
|
||||
|
||||
// rjf: apply expander (or substitute space)
|
||||
if(row_is_expandable && cell == row_info->cells.first)
|
||||
@@ -11992,6 +12002,7 @@ rd_frame(void)
|
||||
{
|
||||
String8 name = names[idx];
|
||||
E_TypeKey type_key = e_type_key_cons(.kind = E_TypeKind_Set,
|
||||
.flags = E_TypeFlag_StubSingleLineExpansion,
|
||||
.name = name,
|
||||
.access = E_TYPE_ACCESS_FUNCTION_NAME(commands),
|
||||
.expand =
|
||||
@@ -12300,7 +12311,9 @@ rd_frame(void)
|
||||
//- rjf: add macro / lookup rules for unattached processes
|
||||
{
|
||||
String8 collection_name = str8_lit("unattached_processes");
|
||||
E_TypeKey collection_type_key = e_type_key_cons(.kind = E_TypeKind_Set, .name = collection_name,
|
||||
E_TypeKey collection_type_key = e_type_key_cons(.kind = E_TypeKind_Set,
|
||||
.name = collection_name,
|
||||
.flags = E_TypeFlag_StubSingleLineExpansion,
|
||||
.expand =
|
||||
{
|
||||
.info = E_TYPE_EXPAND_INFO_FUNCTION_NAME(unattached_processes),
|
||||
@@ -12336,7 +12349,7 @@ rd_frame(void)
|
||||
}));
|
||||
e_string2typekey_map_insert(rd_frame_arena(), rd_state->meta_name2type_map, str8_lit("watches"),
|
||||
e_type_key_cons(.kind = E_TypeKind_Set,
|
||||
.flags = E_TypeFlag_EditableChildren,
|
||||
.flags = E_TypeFlag_EditableChildren|E_TypeFlag_StubSingleLineExpansion,
|
||||
.name = str8_lit("watches"),
|
||||
.irext = E_TYPE_IREXT_FUNCTION_NAME(watches),
|
||||
.access = E_TYPE_ACCESS_FUNCTION_NAME(watches),
|
||||
@@ -12351,6 +12364,7 @@ rd_frame(void)
|
||||
rd_state->meta_name2type_map,
|
||||
str8_lit("call_stack"),
|
||||
e_type_key_cons(.kind = E_TypeKind_Set,
|
||||
.flags = E_TypeFlag_StubSingleLineExpansion,
|
||||
.name = str8_lit("call_stack"),
|
||||
.irext = E_TYPE_IREXT_FUNCTION_NAME(call_stack),
|
||||
.access = E_TYPE_ACCESS_FUNCTION_NAME(call_stack),
|
||||
@@ -12360,6 +12374,7 @@ rd_frame(void)
|
||||
}));
|
||||
e_string2typekey_map_insert(rd_frame_arena(), rd_state->meta_name2type_map, str8_lit("theme_colors"),
|
||||
e_type_key_cons(.kind = E_TypeKind_Set,
|
||||
.flags = E_TypeFlag_StubSingleLineExpansion,
|
||||
.name = str8_lit("theme_colors"),
|
||||
.irext = E_TYPE_IREXT_FUNCTION_NAME(cfgs_slice),
|
||||
.access = E_TYPE_ACCESS_FUNCTION_NAME(cfgs_slice),
|
||||
@@ -12417,6 +12432,7 @@ rd_frame(void)
|
||||
E_Expr *expr = e_push_expr(scratch.arena, E_ExprKind_LeafOffset, 0);
|
||||
expr->space = e_space_make(RD_EvalSpaceKind_MetaQuery);
|
||||
expr->type_key = e_type_key_cons(.kind = E_TypeKind_Set,
|
||||
.flags = E_TypeFlag_StubSingleLineExpansion,
|
||||
.name = name,
|
||||
.expand =
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user