preserve fancy string list on a per-ui_box basis - do not rely on fancy *run* list for truncated-string-hover, as this will invalidly hold onto stale render handles (fixes crash on font resizes)

This commit is contained in:
Ryan Fleury
2025-02-11 16:48:12 -08:00
parent 6c37db2105
commit 5f88db68ec
5 changed files with 48 additions and 38 deletions
+6 -5
View File
@@ -433,7 +433,8 @@ struct UI_Box
F32 text_padding;
//- rjf: per-build artifacts
DR_FancyRunList display_string_runs;
DR_FancyStringList display_fstrs;
DR_FancyRunList display_fruns;
Rng2F32 rect;
Vec2F32 fixed_position_animated;
Vec2F32 position_delta;
@@ -680,7 +681,8 @@ struct UI_State
String8 drag_state_data;
Arena *string_hover_arena;
String8 string_hover_string;
DR_FancyRunList string_hover_fancy_runs;
F32 string_hover_size;
DR_FancyStringList string_hover_fstrs;
U64 string_hover_begin_us;
U64 string_hover_build_index;
U64 last_time_mousemoved_us;
@@ -812,8 +814,8 @@ internal String8 ui_get_drag_data(U64 min_required_size);
#define ui_get_drag_struct(type) ((type *)ui_get_drag_data(sizeof(type)).str)
//- rjf: hovered string info
internal B32 ui_string_hover_active(void);
internal DR_FancyRunList ui_string_hover_runs(Arena *arena);
internal B32 ui_string_hover_active(void);
internal DR_FancyStringList ui_string_hover_fstrs(Arena *arena);
//- rjf: interaction keys
internal UI_Key ui_hot_key(void);
@@ -881,7 +883,6 @@ internal UI_Box * ui_build_box_from_stringf(UI_BoxFlags flags, char *fm
//- rjf: box node equipment
internal inline void ui_box_equip_display_string(UI_Box *box, String8 string);
internal inline void ui_box_equip_display_fancy_strings(UI_Box *box, DR_FancyStringList *strings);
internal inline void ui_box_equip_display_string_fancy_runs(UI_Box *box, String8 string, DR_FancyRunList *runs);
internal inline void ui_box_equip_fuzzy_match_ranges(UI_Box *box, FuzzyMatchRangeList *matches);
internal inline void ui_box_equip_draw_bucket(UI_Box *box, DR_Bucket *bucket);
internal inline void ui_box_equip_custom_draw(UI_Box *box, UI_BoxCustomDrawFunctionType *custom_draw, void *user_data);