mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-03 04:28:12 +00:00
re-add special-case watch cell style for call stack frame selection
This commit is contained in:
@@ -1065,8 +1065,9 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
|||||||
RD_Cfg *w_cfg = style->first;
|
RD_Cfg *w_cfg = style->first;
|
||||||
F32 next_pct = 0;
|
F32 next_pct = 0;
|
||||||
#define take_pct() (next_pct = (F32)f64_from_str8(w_cfg->string), w_cfg = w_cfg->next, next_pct)
|
#define take_pct() (next_pct = (F32)f64_from_str8(w_cfg->string), w_cfg = w_cfg->next, next_pct)
|
||||||
|
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_CallStackFrame, .default_pct = 0.05f, .pct = take_pct());
|
||||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, .default_pct = 0.65f, .pct = take_pct());
|
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, .default_pct = 0.65f, .pct = take_pct());
|
||||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, .string = str8_lit("(U64)($expr) => hex"), .default_pct = 0.35f, .pct = take_pct());
|
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, .string = str8_lit("(U64)($expr) => hex"), .default_pct = 0.30f, .pct = take_pct());
|
||||||
#undef take_pct
|
#undef take_pct
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3010,6 +3011,24 @@ RD_VIEW_UI_FUNCTION_DEF(watch)
|
|||||||
sig = ui_signal_from_box(box);
|
sig = ui_signal_from_box(box);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rjf: cell is call stack frame? -> build arrow if this is the selected frame, otherwise leave empty
|
||||||
|
else if(cell->kind == RD_WatchCellKind_CallStackFrame)
|
||||||
|
{
|
||||||
|
UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_Clickable, "###%I64x_%I64x", cell_id, row_hash);
|
||||||
|
sig = ui_signal_from_box(box);
|
||||||
|
if(row_info->callstack_unwind_index == rd_regs()->unwind_count &&
|
||||||
|
row_info->callstack_inline_depth == rd_regs()->inline_depth)
|
||||||
|
{
|
||||||
|
UI_Parent(box) UI_Flags(0) UI_TextAlignment(UI_TextAlign_Center)
|
||||||
|
{
|
||||||
|
RD_Font(RD_FontSlot_Icons)
|
||||||
|
UI_Flags(UI_BoxFlag_DisableTextTrunc)
|
||||||
|
UI_Palette(ui_build_palette(ui_top_palette(), .text = rd_rgba_from_ctrl_entity(row_info->callstack_thread)))
|
||||||
|
ui_label(rd_icon_kind_text_table[RD_IconKind_RightArrow]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// rjf: build cell line edit
|
// rjf: build cell line edit
|
||||||
else RD_Font(cell_info.is_non_code ? RD_FontSlot_Main : RD_FontSlot_Code)
|
else RD_Font(cell_info.is_non_code ? RD_FontSlot_Main : RD_FontSlot_Code)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ typedef enum RD_WatchCellKind
|
|||||||
RD_WatchCellKind_Eval, // an evaluation of the expression, with some optional modification - e.g. `$expr.some_member`, or `typeof($expr)`
|
RD_WatchCellKind_Eval, // an evaluation of the expression, with some optional modification - e.g. `$expr.some_member`, or `typeof($expr)`
|
||||||
RD_WatchCellKind_ViewUI, // an arbitrary user interface, supplied by a hook
|
RD_WatchCellKind_ViewUI, // an arbitrary user interface, supplied by a hook
|
||||||
RD_WatchCellKind_Button, // a fancy button dedicated to the entire row's evaluation, used for listers/etc.
|
RD_WatchCellKind_Button, // a fancy button dedicated to the entire row's evaluation, used for listers/etc.
|
||||||
|
RD_WatchCellKind_CallStackFrame, // a slot for a yellow arrow, to show call stack frame selection
|
||||||
}
|
}
|
||||||
RD_WatchCellKind;
|
RD_WatchCellKind;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user