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
+13
View File
@@ -71,6 +71,19 @@ dr_fancy_string_list_concat_in_place(DR_FancyStringList *dst, DR_FancyStringList
MemoryZeroStruct(to_push);
}
internal DR_FancyStringList
dr_fancy_string_list_copy(Arena *arena, DR_FancyStringList *src)
{
DR_FancyStringList dst = {0};
for(DR_FancyStringNode *src_n = src->first; src_n != 0; src_n = src_n->next)
{
DR_FancyString fstr = src_n->v;
fstr.string = push_str8_copy(arena, fstr.string);
dr_fancy_string_list_push(arena, &dst, &fstr);
}
return dst;
}
internal String8
dr_string_from_fancy_string_list(Arena *arena, DR_FancyStringList *list)
{
+1
View File
@@ -111,6 +111,7 @@ internal U64 dr_hash_from_string(String8 string);
internal void dr_fancy_string_list_push(Arena *arena, DR_FancyStringList *list, DR_FancyString *str);
#define dr_fancy_string_list_push_new(arena, list, font_, size_, color_, string_, ...) dr_fancy_string_list_push((arena), (list), &(DR_FancyString){.font = (font_), .string = (string_), .color = (color_), .size = (size_), __VA_ARGS__})
internal void dr_fancy_string_list_concat_in_place(DR_FancyStringList *dst, DR_FancyStringList *to_push);
internal DR_FancyStringList dr_fancy_string_list_copy(Arena *arena, DR_FancyStringList *src);
internal String8 dr_string_from_fancy_string_list(Arena *arena, DR_FancyStringList *list);
internal DR_FancyRunList dr_fancy_run_list_from_fancy_string_list(Arena *arena, F32 tab_size_px, FNT_RasterFlags flags, DR_FancyStringList *strs);
internal DR_FancyRunList dr_fancy_run_list_copy(Arena *arena, DR_FancyRunList *src);