From 0d581694e6d9e6e2f67c7e550d92d67e71d8ee26 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Mon, 24 Jun 2024 16:35:23 -0700 Subject: [PATCH] notes; tweaks; fixes --- src/df/gfx/df_gfx.c | 1 + src/df/gfx/df_views.c | 2 +- src/raddbg/raddbg.h | 74 ++++++++++++++++++++++++++++++------------- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index 5218142f..435aaf23 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -11313,6 +11313,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ DF_IconKind icon = DF_IconKind_WarningBig; String8 explanation = df_stop_explanation_string_icon_from_ctrl_event(scratch.arena, &stop_event, &icon); UI_Parent(line_extras_boxes[line_idx]) UI_PrefWidth(ui_children_sum(1)) UI_PrefHeight(ui_px(params->line_height_px, 1.f)) + UI_Palette(ui_build_palette(ui_top_palette(), .text = df_rgba_from_theme_color(DF_ThemeColor_TextNegative))) { UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_DrawBorder, "###exception_info"); UI_Parent(box) UI_PrefWidth(ui_text_dim(10, 1)) diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index e0bbda90..97700d6e 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -1661,7 +1661,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS ui_set_next_pref_width(ui_pct(1, 0)); ui_set_next_pref_height(ui_px(scroll_list_params.row_height_px*row->size_in_rows, 1.f)); ui_set_next_focus_hot(row_selected ? UI_FocusKind_On : UI_FocusKind_Off); - UI_Box *row_box = ui_build_box_from_stringf(row_flags|UI_BoxFlag_DrawSideBottom|UI_BoxFlag_Clickable|UI_BoxFlag_DisableFocusOverlay, "row_%I64x", row_hash); + UI_Box *row_box = ui_build_box_from_stringf(row_flags|UI_BoxFlag_DrawSideBottom|UI_BoxFlag_Clickable|(!(row->flags & DF_EvalVizRowFlag_Canvas) * UI_BoxFlag_DisableFocusOverlay), "row_%I64x", row_hash); ui_ts_vector_idx += 1; ui_ts_cell_idx = 0; diff --git a/src/raddbg/raddbg.h b/src/raddbg/raddbg.h index 5b89f3cc..7098987f 100644 --- a/src/raddbg/raddbg.h +++ b/src/raddbg/raddbg.h @@ -2,15 +2,52 @@ // Licensed under the MIT license (https://opensource.org/license/mit/) //////////////////////////////// -//~ rjf: Frontend/UI Pass Tasks +//~ rjf: 0.9.11 TODO +// +// [ ] user settings (ui & functionality - generally need a story for it) +// [ ] hover animations +// [ ] press animations +// [ ] focus animations +// [ ] tooltip animations +// [ ] context menu animations +// [ ] scrolling animations +// [ ] background blur +// [ ] tab width +// [ ] auto-scroll output window +// +// [ ] move breakpoints to being a global thing, not nested to particular files +// +// [ ] visualize all breakpoints everywhere - source view should show up in +// disasm, disasm should show up in source view, function should show up in +// both, etc. +// [ ] ** Function breakpoints should show up in the source listing. Without +// them being visible, it is confusing when you run and you stop there, +// because you're like "wait why did it stop" and then you later remember +// that's because there was a function breakpoint there. +// +// [ ] inline breakpoint hit_count +// [ ] to count hit counts, resolve all bps to addresses, check addresses +// against stopper thread's +// +// [ ] colors: fill out rest of theme presets for new theme setup // // [ ] editing multiple bindings for commands +// [ ] theme lister -> fonts & font sizes +// [ ] "Browse..." buttons should adopt a more relevant starting search path, +// if possible +// +// [ ] highlighted text & ctrl+f -> auto-fill search query +// [ ] double click on procedure in procedures tab to jump to source +// [ ] double-click any part of frame in callstack view -> snap to function + +//////////////////////////////// +//~ rjf: Frontend/UI Pass Tasks +// // [ ] n-row table selection, in watch window & other UIs, multi-selection // ctrl+C // // [ ] target/breakpoint/watch-pin reordering // -// [ ] theme lister -> fonts & font sizes // [ ] font lister // [ ] per-panel font size overrides // @@ -34,31 +71,26 @@ //////////////////////////////// //~ rjf: Hot, High Priority Tasks (Complete Unusability, Crashes, Fire-Worthy) // -// [ ] "Browse..." buttons should adopt a more relevant starting search path, -// if possible // [ ] PDB files distributed with the build are not found by DbgHelp!!! // [ ] Jai compiler debugging crash + +//////////////////////////////// +//~ rjf: Hot, Medium Priority Tasks (Low-Hanging-Fruit Features, UI Jank, Cleanup) // // [ ] Setting the code_font/main_font values to a font name doesn't work. // Should probably make note that you have to set it to a path to a TTF, // since that's not normally how Windows fonts work. - -//////////////////////////////// -//~ rjf: Hot, Medium Priority Tasks (Low-Hanging-Fruit Features, UI Jank, Cleanup) // // [ ] "root" concept in hash store, which buckets keys & allows usage code to // jettison a collection of keys in retained mode fashion // // [ ] Jeff Notes -// [ ] highlighted text & ctrl+f -> auto-fill search query -// [ ] double-click any part of frame in callstack view -> snap to function // [ ] sort locals by appearance in source code (or maybe just debug info) // [ ] sum view rule // [ ] plot view rule // [ ] histogram view rule // [ ] max view rule // [ ] min view rule -// [ ] double click on procedure in procedures tab to jump to source // // [ ] filesystem drag/drop support // [ ] double-click vs. single-click for folder navigation, see if we can infer @@ -78,6 +110,10 @@ // sense once I use the debugger more, but I just thought I'd make a note // to say that I was confused about it after reading the manual, so // perhaps you could elaborate a little more on it in there. +// [ ] It wasn't clear to me how you save a user or project file. I can see +// how to load them, but not how you save them. Obviously I can just copy +// the files myself in the shell, but it seemed weird that there was no +// "save" option in the menus. // // [ ] Right-clicking on a thread in the Scheduler window pops up a context // menu, but you can't actually see it because the tooltip for the thread @@ -89,11 +125,6 @@ // actual items (ie., it doesn't resize the listing based on what's // actually visible) // -// [ ] ** Function breakpoints should show up in the source listing. Without -// them being visible, it is confusing when you run and you stop there, -// because you're like "wait why did it stop" and then you later remember -// that's because there was a function breakpoint there. -// // [ ] ** One very nice feature of RemedyBG that I use all the time is the // ability to put "$err, hr" into the watch window, which will just show // the value of GetLastError() as a string. This is super useful for @@ -125,14 +156,7 @@ // [ ] It'd be nice to have a "goto byte" option for source views, for jumping // to error messages that are byte-based instead of line-based. // -// [ ] It wasn't clear to me how you save a user or project file. I can see -// how to load them, but not how you save them. Obviously I can just copy -// the files myself in the shell, but it seemed weird that there was no -// "save" option in the menus. -// // [ ] @feature debug info overrides (both path-based AND module-based) -// [ ] configure tab size -// [ ] auto-scroll output window // // [ ] C++ virtual inheritance member visualization in watch window @@ -187,6 +211,12 @@ //////////////////////////////// //~ rjf: Hot, Feature Tasks (Not really "low priority" but less urgent than fixes) // +// [ ] @eval_upgrade +// [ ] new eval system; support strings, many address spaces, many debug +// infos, wide/async transforms (e.g. diff(blob1, blob2)) +// [ ] collapse frontend visualization systems - source view, disasm view, +// callstack, modules, scheduler, should *all* be flavors of watch view +// // [ ] Fancy View Rules // [ ] table column boundaries should be checked against *AFTER* table // contents, not before