mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-13 07:32:23 -07:00
file path map building & ui
This commit is contained in:
@@ -432,12 +432,11 @@ fp_raster(Arena *arena, FP_Handle font_handle, F32 size, FP_RasterFlags flags, S
|
||||
F32 right_side_bearing = 0;
|
||||
if(font.face != 0)
|
||||
{
|
||||
atlas_dim.y = (S16)ceil_f32((96.f/72.f) * size * (font_metrics.ascent + font_metrics.descent) / design_units_per_em);
|
||||
atlas_dim.y = (S16)ceil_f32((96.f/72.f) * size * (font_metrics.ascent + font_metrics.descent) / design_units_per_em) + 1;
|
||||
for(U64 idx = 0; idx < glyphs_count; idx += 1)
|
||||
{
|
||||
DWRITE_GLYPH_METRICS *glyph_metrics = glyphs_metrics + idx;
|
||||
F32 glyph_advance_width = (96.f/72.f) * size * glyph_metrics->advanceWidth / design_units_per_em;
|
||||
F32 glyph_advance_height = (96.f/72.f) * size * glyph_metrics->advanceHeight / design_units_per_em;
|
||||
advance += glyph_advance_width;
|
||||
atlas_dim.x = Max(atlas_dim.x, (S16)(advance+1));
|
||||
if(idx == 0)
|
||||
@@ -480,7 +479,7 @@ fp_raster(Arena *arena, FP_Handle font_handle, F32 size, FP_RasterFlags flags, S
|
||||
Vec2F32 draw_p = {0, (F32)atlas_dim.y};
|
||||
if(font.face != 0)
|
||||
{
|
||||
F32 descent = (96.f/72.f)*size * font_metrics.descent / design_units_per_em;
|
||||
F32 descent = floor_f32((96.f/72.f)*size * font_metrics.descent / design_units_per_em);
|
||||
draw_p.y -= descent;
|
||||
}
|
||||
DWRITE_GLYPH_RUN glyph_run = {0};
|
||||
|
||||
@@ -1750,6 +1750,8 @@ rd_title_fstrs_from_entity(Arena *arena, RD_Entity *entity, Vec4F32 secondary_co
|
||||
RD_Entity *args = rd_entity_child_from_kind(entity, RD_EntityKind_Arguments);
|
||||
RD_Entity *loc = rd_entity_child_from_kind(entity, RD_EntityKind_Location);
|
||||
RD_Entity *cnd = rd_entity_child_from_kind(entity, RD_EntityKind_Condition);
|
||||
RD_Entity *src = rd_entity_child_from_kind(entity, RD_EntityKind_Source);
|
||||
RD_Entity *dst = rd_entity_child_from_kind(entity, RD_EntityKind_Dest);
|
||||
RD_IconKind icon_kind = rd_entity_kind_icon_kind_table[entity->kind];
|
||||
Vec4F32 color = rd_rgba_from_theme_color(RD_ThemeColor_Text);
|
||||
if(icon_kind != RD_IconKind_Null)
|
||||
@@ -1844,6 +1846,14 @@ rd_title_fstrs_from_entity(Arena *arena, RD_Entity *entity, Vec4F32 secondary_co
|
||||
dr_fancy_string_list_concat_in_place(&result, &cnd_fstrs);
|
||||
}
|
||||
}
|
||||
if(!rd_entity_is_nil(src) && !rd_entity_is_nil(dst))
|
||||
{
|
||||
dr_fancy_string_list_push_new(arena, &result, rd_font_from_slot(RD_FontSlot_Main), size, color, src->string);
|
||||
dr_fancy_string_list_push_new(arena, &result, rd_font_from_slot(RD_FontSlot_Code), size, v4f32(0, 0, 0, 0), str8_lit(" "));
|
||||
dr_fancy_string_list_push_new(arena, &result, rd_font_from_slot(RD_FontSlot_Icons), size, secondary_color, rd_icon_kind_text_table[RD_IconKind_RightArrow]);
|
||||
dr_fancy_string_list_push_new(arena, &result, rd_font_from_slot(RD_FontSlot_Code), size, v4f32(0, 0, 0, 0), str8_lit(" "));
|
||||
dr_fancy_string_list_push_new(arena, &result, rd_font_from_slot(RD_FontSlot_Main), size, color, dst->string);
|
||||
}
|
||||
if((entity->kind == RD_EntityKind_Target || entity->kind == RD_EntityKind_Breakpoint) && entity->disabled)
|
||||
{
|
||||
dr_fancy_string_list_push_new(arena, &result, rd_font_from_slot(RD_FontSlot_Code), size, v4f32(0, 0, 0, 0), str8_lit(" "));
|
||||
@@ -2072,6 +2082,8 @@ rd_ctrl_meta_eval_from_entity(Arena *arena, RD_Entity *entity)
|
||||
RD_Entity *entr= rd_entity_child_from_kind(entity, RD_EntityKind_EntryPoint);
|
||||
RD_Entity *loc = rd_entity_child_from_kind(entity, RD_EntityKind_Location);
|
||||
RD_Entity *cnd = rd_entity_child_from_kind(entity, RD_EntityKind_Condition);
|
||||
RD_Entity *src = rd_entity_child_from_kind(entity, RD_EntityKind_Source);
|
||||
RD_Entity *dst = rd_entity_child_from_kind(entity, RD_EntityKind_Dest);
|
||||
String8 label_string = push_str8_copy(arena, entity->string);
|
||||
String8 src_loc_string = {0};
|
||||
String8 vaddr_loc_string = {0};
|
||||
@@ -2100,6 +2112,8 @@ rd_ctrl_meta_eval_from_entity(Arena *arena, RD_Entity *entity)
|
||||
meval->source_location = src_loc_string;
|
||||
meval->address_location = vaddr_loc_string;
|
||||
meval->function_location = function_loc_string;
|
||||
meval->source_path = src->string;
|
||||
meval->destination_path = dst->string;
|
||||
meval->condition = cnd_string;
|
||||
return meval;
|
||||
}
|
||||
@@ -2312,6 +2326,8 @@ rd_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range)
|
||||
StringMemberCase(args) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_Arguments), str8_cstring_capped(in, (U8 *)in + 4096));}
|
||||
StringMemberCase(working_directory) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_WorkingDirectory), str8_cstring_capped(in, (U8 *)in + 4096));}
|
||||
StringMemberCase(entry_point) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_EntryPoint), str8_cstring_capped(in, (U8 *)in + 4096));}
|
||||
StringMemberCase(source_path) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_Source), str8_cstring_capped(in, (U8 *)in + 4096));}
|
||||
StringMemberCase(destination_path) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_Dest), str8_cstring_capped(in, (U8 *)in + 4096));}
|
||||
StringMemberCase(condition) {result = 1; rd_entity_equip_name(rd_entity_child_from_kind_or_alloc(entity, RD_EntityKind_Condition), str8_cstring_capped(in, (U8 *)in + 4096));}
|
||||
StringMemberCase(source_location)
|
||||
{
|
||||
@@ -11675,7 +11691,7 @@ rd_frame(void)
|
||||
{
|
||||
RD_CmdKindInfo *info = rd_cmd_kind_info_from_string(cmd->regs->string);
|
||||
|
||||
// rjf: command simply executes - just no-op in this layer
|
||||
// rjf: command does not have a query - simply execute with the current registers
|
||||
if(!(info->query.flags & RD_QueryFlag_Required))
|
||||
{
|
||||
RD_RegsScope(.string = str8_zero()) rd_push_cmd(cmd->regs->string, rd_regs());
|
||||
@@ -13195,6 +13211,59 @@ rd_frame(void)
|
||||
//- rjf: unpack
|
||||
String8 src_path = rd_regs()->string;
|
||||
String8 dst_path = rd_regs()->file_path;
|
||||
String8 src_path__normalized = path_normalized_from_string(scratch.arena, src_path);
|
||||
String8 dst_path__normalized = path_normalized_from_string(scratch.arena, dst_path);
|
||||
String8List src_path_parts = str8_split_path(scratch.arena, src_path__normalized);
|
||||
String8List dst_path_parts = str8_split_path(scratch.arena, dst_path__normalized);
|
||||
|
||||
//- rjf: reverse path parts
|
||||
String8List src_path_parts__reversed = {0};
|
||||
String8List dst_path_parts__reversed = {0};
|
||||
for(String8Node *n = src_path_parts.first; n != 0; n = n->next)
|
||||
{
|
||||
str8_list_push_front(scratch.arena, &src_path_parts__reversed, n->string);
|
||||
}
|
||||
for(String8Node *n = dst_path_parts.first; n != 0; n = n->next)
|
||||
{
|
||||
str8_list_push_front(scratch.arena, &dst_path_parts__reversed, n->string);
|
||||
}
|
||||
|
||||
//- rjf: trace from each path upwards, in lock-step, to find the first difference
|
||||
// between the paths
|
||||
String8Node *first_diff_src = src_path_parts__reversed.first;
|
||||
String8Node *first_diff_dst = dst_path_parts__reversed.first;
|
||||
for(;first_diff_src != 0 && first_diff_dst != 0;)
|
||||
{
|
||||
if(!str8_match(first_diff_src->string, first_diff_dst->string, StringMatchFlag_CaseInsensitive))
|
||||
{
|
||||
break;
|
||||
}
|
||||
first_diff_src = first_diff_src->next;
|
||||
first_diff_dst = first_diff_dst->next;
|
||||
}
|
||||
|
||||
//- rjf: form final map paths
|
||||
String8List map_src_parts = {0};
|
||||
String8List map_dst_parts = {0};
|
||||
for(String8Node *n = first_diff_src; n != 0; n = n->next)
|
||||
{
|
||||
str8_list_push_front(scratch.arena, &map_src_parts, n->string);
|
||||
}
|
||||
for(String8Node *n = first_diff_dst; n != 0; n = n->next)
|
||||
{
|
||||
str8_list_push_front(scratch.arena, &map_dst_parts, n->string);
|
||||
}
|
||||
StringJoin map_join = {.sep = str8_lit("/")};
|
||||
String8 map_src = str8_list_join(scratch.arena, &map_src_parts, &map_join);
|
||||
String8 map_dst = str8_list_join(scratch.arena, &map_dst_parts, &map_join);
|
||||
|
||||
//- rjf: store as file path map entity
|
||||
RD_Entity *map = rd_entity_alloc(rd_entity_root(), RD_EntityKind_FilePathMap);
|
||||
RD_Entity *src = rd_entity_alloc(map, RD_EntityKind_Source);
|
||||
RD_Entity *dst = rd_entity_alloc(map, RD_EntityKind_Dest);
|
||||
rd_entity_equip_name(src, map_src);
|
||||
rd_entity_equip_name(dst, map_dst);
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
|
||||
//- rjf: grab src file & chosen replacement
|
||||
|
||||
+54
-39
@@ -951,6 +951,28 @@ rd_watch_view_row_kind_from_flags_row_info(RD_WatchViewFlags flags, EV_Row *row,
|
||||
|
||||
//- rjf: row/column -> strings
|
||||
|
||||
internal E_Expr *
|
||||
rd_expr_from_watch_view_row_column(Arena *arena, EV_View *ev_view, EV_Row *row, RD_WatchViewColumn *col)
|
||||
{
|
||||
E_Expr *expr = row->expr;
|
||||
switch(col->kind)
|
||||
{
|
||||
default:{}break;
|
||||
case RD_WatchViewColumnKind_Member:
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
String8 access_string = str8(col->string_buffer, col->string_size);
|
||||
String8List accesses = str8_split(scratch.arena, access_string, (U8 *)".", 1, 0);
|
||||
for(String8Node *n = accesses.first; n != 0; n = n->next)
|
||||
{
|
||||
expr = e_expr_ref_member_access(arena, expr, n->string);
|
||||
}
|
||||
scratch_end(scratch);
|
||||
}break;
|
||||
}
|
||||
return expr;
|
||||
}
|
||||
|
||||
internal String8
|
||||
rd_string_from_eval_viz_row_column(Arena *arena, EV_View *ev, EV_Row *row, RD_WatchViewColumn *col, EV_StringFlags string_flags, U32 default_radix, FNT_Tag font, F32 font_size, F32 max_size_px)
|
||||
{
|
||||
@@ -961,6 +983,7 @@ rd_string_from_eval_viz_row_column(Arena *arena, EV_View *ev, EV_Row *row, RD_Wa
|
||||
view_rules = ev_view_rule_list_copy(arena, row->view_rules);
|
||||
ev_view_rule_list_push_string(arena, view_rules, str8(col->view_rule_buffer, col->view_rule_size));
|
||||
}
|
||||
E_Expr *row_col_expr = rd_expr_from_watch_view_row_column(arena, ev, row, col);
|
||||
switch(col->kind)
|
||||
{
|
||||
default:{}break;
|
||||
@@ -969,13 +992,14 @@ rd_string_from_eval_viz_row_column(Arena *arena, EV_View *ev, EV_Row *row, RD_Wa
|
||||
result = ev_expr_string_from_row(arena, row, string_flags);
|
||||
}break;
|
||||
case RD_WatchViewColumnKind_Value:
|
||||
case RD_WatchViewColumnKind_Member:
|
||||
{
|
||||
E_Eval eval = e_eval_from_expr(arena, row->expr);
|
||||
E_Eval eval = e_eval_from_expr(arena, row_col_expr);
|
||||
result = rd_value_string_from_eval(arena, string_flags, default_radix, font, font_size, max_size_px, eval, row->member, view_rules);
|
||||
}break;
|
||||
case RD_WatchViewColumnKind_Type:
|
||||
{
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(arena, row->expr);
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(arena, row_col_expr);
|
||||
E_TypeKey type_key = irtree.type_key;
|
||||
result = !e_type_key_match(type_key, e_type_key_zero()) ? e_type_string_from_key(arena, type_key) : str8_zero();
|
||||
result = str8_skip_chop_whitespace(result);
|
||||
@@ -984,24 +1008,9 @@ rd_string_from_eval_viz_row_column(Arena *arena, EV_View *ev, EV_Row *row, RD_Wa
|
||||
{
|
||||
result = ev_view_rule_from_key(ev, row->key);
|
||||
}break;
|
||||
case RD_WatchViewColumnKind_Member:
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
String8 access_string = str8(col->string_buffer, col->string_size);
|
||||
String8List accesses = str8_split(scratch.arena, access_string, (U8 *)".", 1, 0);
|
||||
E_Expr *expr = row->expr;
|
||||
for(String8Node *n = accesses.first; n != 0; n = n->next)
|
||||
{
|
||||
expr = e_expr_ref_member_access(arena, expr, n->string);
|
||||
}
|
||||
expr = ev_resolved_from_expr(scratch.arena, expr, view_rules);
|
||||
E_Eval eval = e_eval_from_expr(arena, expr);
|
||||
result = rd_value_string_from_eval(arena, string_flags, default_radix, font, font_size, max_size_px, eval, row->member, view_rules);
|
||||
scratch_end(scratch);
|
||||
}break;
|
||||
case RD_WatchViewColumnKind_Module:
|
||||
{
|
||||
E_Eval eval = e_eval_from_expr(arena, row->expr);
|
||||
E_Eval eval = e_eval_from_expr(arena, row_col_expr);
|
||||
E_Eval value_eval = e_value_eval_from_eval(eval);
|
||||
CTRL_Entity *entity = rd_ctrl_entity_from_eval_space(eval.space);
|
||||
CTRL_Entity *process = ctrl_process_from_entity(entity);
|
||||
@@ -1012,9 +1021,9 @@ rd_string_from_eval_viz_row_column(Arena *arena, EV_View *ev, EV_Row *row, RD_Wa
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
DI_Scope *di_scope = di_scope_open();
|
||||
E_Eval eval = e_eval_from_expr(arena, row->expr);
|
||||
E_Expr *vaddr_expr = e_expr_ref_member_access(scratch.arena, row->expr, str8_lit("vaddr"));
|
||||
E_Expr *depth_expr = e_expr_ref_member_access(scratch.arena, row->expr, str8_lit("inline_depth"));
|
||||
E_Eval eval = e_eval_from_expr(arena, row_col_expr);
|
||||
E_Expr *vaddr_expr = e_expr_ref_member_access(scratch.arena, row_col_expr, str8_lit("vaddr"));
|
||||
E_Expr *depth_expr = e_expr_ref_member_access(scratch.arena, row_col_expr, str8_lit("inline_depth"));
|
||||
E_Eval vaddr_eval = e_eval_from_expr(scratch.arena, vaddr_expr);
|
||||
E_Eval depth_eval = e_eval_from_expr(scratch.arena, depth_expr);
|
||||
E_Eval vaddr_value_eval = e_value_eval_from_eval(vaddr_eval);
|
||||
@@ -1212,6 +1221,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
{RD_EntityKind_Target, CTRL_EntityKind_Null, RD_CmdKind_RemoveEntity },
|
||||
{RD_EntityKind_Breakpoint, CTRL_EntityKind_Null, RD_CmdKind_EnableEntity },
|
||||
{RD_EntityKind_Breakpoint, CTRL_EntityKind_Null, RD_CmdKind_RemoveEntity },
|
||||
{RD_EntityKind_FilePathMap,CTRL_EntityKind_Null, RD_CmdKind_RemoveEntity },
|
||||
{RD_EntityKind_Nil, CTRL_EntityKind_Thread, RD_CmdKind_FreezeThread },
|
||||
{RD_EntityKind_Nil, CTRL_EntityKind_Thread, RD_CmdKind_SelectThread },
|
||||
};
|
||||
@@ -1680,11 +1690,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
B32 success = 0;
|
||||
if(rows.first != 0)
|
||||
{
|
||||
E_Expr *expr = rows.first->expr;
|
||||
if(col->kind == RD_WatchViewColumnKind_Member)
|
||||
{
|
||||
expr = e_expr_ref_member_access(scratch.arena, expr, str8(col->string_buffer, col->string_size));
|
||||
}
|
||||
E_Expr *expr = rd_expr_from_watch_view_row_column(scratch.arena, eval_view, row, col);
|
||||
E_Eval dst_eval = e_eval_from_expr(scratch.arena, expr);
|
||||
success = rd_commit_eval_value_string(dst_eval, new_string);
|
||||
}
|
||||
@@ -1830,11 +1836,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
}
|
||||
else if(tbl.y != 0 && (col->kind == RD_WatchViewColumnKind_Value || col->kind == RD_WatchViewColumnKind_Member) && row_kind == RD_WatchViewRowKind_Normal)
|
||||
{
|
||||
E_Expr *expr = row->expr;
|
||||
if(col->kind == RD_WatchViewColumnKind_Member)
|
||||
{
|
||||
expr = e_expr_ref_member_access(scratch.arena, expr, str8(col->string_buffer, col->string_size));
|
||||
}
|
||||
E_Expr *expr = rd_expr_from_watch_view_row_column(scratch.arena, eval_view, row, col);
|
||||
E_Eval dst_eval = e_eval_from_expr(scratch.arena, expr);
|
||||
rd_commit_eval_value_string(dst_eval, str8_zero());
|
||||
}
|
||||
@@ -2179,7 +2181,6 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
}
|
||||
E_Type *row_type = e_type_from_key(scratch.arena, row_eval.type_key);
|
||||
B32 row_is_expandable = ev_row_is_expandable(row);
|
||||
B32 row_is_editable = ev_row_is_editable(row);
|
||||
B32 next_row_expanded = row_expanded;
|
||||
RD_ViewRuleInfo *ui_view_rule_info = rd_view_rule_info_from_string(row->block->expand_view_rule_info->string);
|
||||
MD_Node *ui_view_rule_params_root = row->block->expand_view_rule_params;
|
||||
@@ -2312,6 +2313,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
ui_spacer(ui_em(1.5f, 1));
|
||||
RD_Font(RD_FontSlot_Code) ui_labelf("only:(member_1 ... member_n)");
|
||||
UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_label_multiline(max_width, str8_lit("Specifies that only the specified members should appear in struct, union, or class evaluations."));
|
||||
ui_spacer(ui_em(1.5f, 1));
|
||||
RD_Font(RD_FontSlot_Code) ui_labelf("list:(next_link_member_name)");
|
||||
UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_label_multiline(max_width, str8_lit("Specifies that some struct, union, or class forms the top of a linked list, with next_link_member_name being the member which points at the next element in the list."));
|
||||
ui_spacer(ui_em(1.5f, 1));
|
||||
@@ -2498,6 +2500,15 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
rd_cmd(RD_CmdKind_RunCommand, .string = rd_cmd_kind_info_table[RD_CmdKind_AddWatchPin].string);
|
||||
}
|
||||
}
|
||||
if(rd_entity_is_nil(entity) && collection_entity_kind == RD_EntityKind_FilePathMap)
|
||||
UI_Palette(palette)
|
||||
{
|
||||
ui_set_next_focus_hot(row_selected ? UI_FocusKind_On : UI_FocusKind_Off);
|
||||
if(ui_clicked(rd_icon_buttonf(RD_IconKind_Add, 0, "Add New")))
|
||||
{
|
||||
rd_entity_alloc(rd_entity_root(), RD_EntityKind_FilePathMap);
|
||||
}
|
||||
}
|
||||
|
||||
//- rjf: build entity box
|
||||
if(!rd_entity_is_nil(entity) || ctrl_entity != &ctrl_entity_nil)
|
||||
@@ -2723,6 +2734,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
|
||||
//- rjf: unpack column-kind-specific info
|
||||
E_Eval cell_eval = row_eval;
|
||||
E_Type *cell_type = row_type;
|
||||
B32 cell_can_edit = 0;
|
||||
FuzzyMatchRangeList cell_matches = {0};
|
||||
String8 cell_inheritance_string = {0};
|
||||
@@ -2772,7 +2784,9 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
}goto value_cell;
|
||||
case RD_WatchViewColumnKind_Member:
|
||||
{
|
||||
cell_eval = e_member_eval_from_eval_member_name(cell_eval, str8(col->string_buffer, col->string_size));
|
||||
E_Expr *expr = rd_expr_from_watch_view_row_column(scratch.arena, eval_view, row, col);
|
||||
cell_eval = e_eval_from_expr(scratch.arena, expr);
|
||||
cell_type = e_type_from_key(scratch.arena, cell_eval.type_key);
|
||||
}goto value_cell;
|
||||
value_cell:;
|
||||
{
|
||||
@@ -2803,7 +2817,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
RD_AutoCompListerFlag_Globals|
|
||||
RD_AutoCompListerFlag_ThreadLocals|
|
||||
RD_AutoCompListerFlag_Types);
|
||||
if(row_type->flags & E_TypeFlag_IsPathText)
|
||||
if(cell_type->flags & E_TypeFlag_IsPathText)
|
||||
{
|
||||
cell_autocomp_flags = RD_AutoCompListerFlag_Files;
|
||||
}
|
||||
@@ -2897,13 +2911,14 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
}
|
||||
}break;
|
||||
case RD_WatchViewColumnKind_Value:
|
||||
case RD_WatchViewColumnKind_Member:
|
||||
{
|
||||
if(row_type->flags & E_TypeFlag_IsCodeText)
|
||||
if(cell_type->flags & E_TypeFlag_IsCodeText)
|
||||
{
|
||||
cell_is_code = 1;
|
||||
}
|
||||
else if(row_type->flags & E_TypeFlag_IsPathText ||
|
||||
row_type->flags & E_TypeFlag_IsPlainText)
|
||||
else if(cell_type->flags & E_TypeFlag_IsPathText ||
|
||||
cell_type->flags & E_TypeFlag_IsPlainText)
|
||||
{
|
||||
cell_is_code = 0;
|
||||
}
|
||||
@@ -5042,10 +5057,10 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(file_path_map)
|
||||
{
|
||||
rd_watch_view_init(wv);
|
||||
rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Expr, 0.25f);
|
||||
rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Value, 0.75f, .dequote_string = 1);
|
||||
rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Value, 0.75f, .dequote_string = 1, .is_non_code = 0);
|
||||
}
|
||||
rd_watch_view_build(wv, RD_WatchViewFlag_NoHeader|RD_WatchViewFlag_PrettyNameMembers|RD_WatchViewFlag_PrettyEntityRows|RD_WatchViewFlag_DisableCacheLines,
|
||||
str8_lit("file_path_maps"), str8_lit("only: source_path destination_path str"), 0, 10, rect);
|
||||
str8_lit("file_path_maps"), str8_lit("only: source_path destination_path str"), 1, 10, rect);
|
||||
ProfEnd();
|
||||
}
|
||||
|
||||
|
||||
@@ -192,7 +192,8 @@ internal RD_WatchViewRowInfo rd_watch_view_row_info_from_row(EV_Row *row);
|
||||
//- rjf: watch view flags & row & row info -> row kind
|
||||
internal RD_WatchViewRowKind rd_watch_view_row_kind_from_flags_row_info(RD_WatchViewFlags flags, EV_Row *row, RD_WatchViewRowInfo *info);
|
||||
|
||||
//- rjf: row/column -> strings
|
||||
//- rjf: row/column -> exprs / strings
|
||||
internal E_Expr *rd_expr_from_watch_view_row_column(Arena *arena, EV_View *ev_view, EV_Row *row, RD_WatchViewColumn *col);
|
||||
internal String8 rd_string_from_eval_viz_row_column(Arena *arena, EV_View *ev, EV_Row *row, RD_WatchViewColumn *col, EV_StringFlags string_flags, U32 default_radix, FNT_Tag font, F32 font_size, F32 max_size_px);
|
||||
|
||||
//- rjf: table coordinates -> text edit state
|
||||
|
||||
+1
-1
@@ -2508,7 +2508,7 @@ ui_box_text_position(UI_Box *box)
|
||||
FNT_Tag font = box->font;
|
||||
F32 font_size = box->font_size;
|
||||
FNT_Metrics font_metrics = fnt_metrics_from_tag_size(font, font_size);
|
||||
result.y = floor_f32((box->rect.p0.y + box->rect.p1.y)/2.f) + font_metrics.capital_height/2.f;
|
||||
result.y = floor_f32((box->rect.p0.y + box->rect.p1.y)/2.f) + font_metrics.capital_height/2.f - 1.f;
|
||||
if(!fnt_tag_match(font, ui_icon_font()))
|
||||
{
|
||||
result.y += font_metrics.descent/2;
|
||||
|
||||
Reference in New Issue
Block a user