--- a/ui/common/types.c Sat Feb 22 18:10:36 2025 +0100 +++ b/ui/common/types.c Sun Feb 23 14:28:47 2025 +0100 @@ -304,8 +304,12 @@ void ui_int_set(UiInteger* i, int64_t value) { - if (i && i->set) { - i->set(i, value); + if (i) { + if (i->set) { + i->set(i, value); + } else { + i->value = value; + } } } @@ -318,8 +322,12 @@ } void ui_double_set(UiDouble* d, double value) { - if (d && d->set) { - d->set(d, value); + if (d) { + if (d->set) { + d->set(d, value); + } else { + d->value = value; + } } } @@ -333,8 +341,21 @@ } void ui_string_set(UiString* s, const char* value) { - if (s && s->set) { - s->set(s, value); + if (s) { + if (s->set) { + s->set(s, value); + } else { + if(s->value.free) { + s->value.free(s->value.ptr); + } + if (value) { + s->value.ptr = strdup(value); + s->value.free = free; + } else { + s->value.ptr = NULL; + s->value.free = NULL; + } + } } } @@ -348,8 +369,21 @@ } void ui_text_set(UiText* s, const char* value) { - if (s && s->set) { - s->set(s, value); + if (s) { + if (s->set) { + s->set(s, value); + } else { + if(s->value.free) { + s->value.free(s->value.ptr); + } + if (value) { + s->value.ptr = strdup(value); + s->value.free = free; + } else { + s->value.ptr = NULL; + s->value.free = NULL; + } + } } }