From af2932f0ff256fdd0a60b72cff21ee2be5ee01a3 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 26 Aug 2026 11:41:44 -0700 Subject: [PATCH] run-to-line interaction in priority margin in code views --- project.raddbg | 1 + src/raddbg/raddbg_widgets.c | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/project.raddbg b/project.raddbg index e1df3c4e..4a9d97ad 100755 --- a/project.raddbg +++ b/project.raddbg @@ -18,6 +18,7 @@ target: { executable: "build/mule_main.exe" working_directory: build + enabled: 0 } target: { diff --git a/src/raddbg/raddbg_widgets.c b/src/raddbg/raddbg_widgets.c index c36b193a..d87a6153 100644 --- a/src/raddbg/raddbg_widgets.c +++ b/src/raddbg/raddbg_widgets.c @@ -1442,6 +1442,7 @@ rd_code_slice(RD_CodeSliceParams *params, U64 *cursor, U64 *mark, S64 *preferred ui_set_next_child_layout_axis(Axis2_Y); priority_margin_container_box = ui_build_box_from_string(UI_BoxFlag_Clickable*!!(params->flags & RD_CodeSliceFlag_Clickable), s("priority_margin_container")); UI_Parent(priority_margin_container_box) UI_PrefHeight(ui_px(params->line_height_px, 1.f)) + UI_TextAlignment(UI_TextAlign_Center) { U64 line_idx = 0; for(S64 line_num = params->line_num_range.min; @@ -1449,7 +1450,8 @@ rd_code_slice(RD_CodeSliceParams *params, U64 *cursor, U64 *mark, S64 *preferred line_num += 1, line_idx += 1) { D_EntityList line_ips = params->line_ips[line_idx]; - UI_Box *line_margin_box = ui_build_box_from_stringf(UI_BoxFlag_Clickable*!!(params->flags & RD_CodeSliceFlag_Clickable)|UI_BoxFlag_DrawActiveEffects, "line_margin_%I64x", line_num); + ui_set_next_background_color(v4f32(0, 0, 0, 0)); + UI_Box *line_margin_box = ui_build_box_from_stringf(UI_BoxFlag_Clickable*!!(params->flags & RD_CodeSliceFlag_Clickable)|UI_BoxFlag_DrawActiveEffects|UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawText, "###line_margin_%I64x", line_num); UI_Parent(line_margin_box) { //- rjf: build margin thread ip ui @@ -1572,6 +1574,26 @@ rd_code_slice(RD_CodeSliceParams *params, U64 *cursor, U64 *mark, S64 *preferred } } } + + // rjf: empty priority margin interaction + UI_Signal line_margin_sig = ui_signal_from_box(line_margin_box); + if(ui_hovering(line_margin_sig)) + { + DR_FStrList fstrs = {0}; + Vec4F32 color = ui_color_from_name(s("thread_0")); + color.w *= 0.2f; + DR_FStrParams p = {rd_font_from_slot(RD_FontSlot_Icons), rd_raster_flags_from_slot(RD_FontSlot_Icons), color, ui_top_font_size()}; + dr_fstrs_push_new(scratch.arena, &fstrs, &p, rd_icon_kind_text_table[RD_IconKind_RightArrow]); + ui_box_equip_display_fstrs(line_margin_box, &fstrs); + } + if(ui_clicked(line_margin_sig)) + { + rd_cmd(RD_CmdKind_RunToLine, + .file_path = params->line_vaddrs[line_idx] ? str8_zero() : rd_regs()->file_path, + .line_num = params->line_vaddrs[line_idx] ? 0 : line_num, + .vaddr = params->line_vaddrs[line_idx], + .expr = s("")); + } } } }