ui/common/types.c

changeset 471
063a9f29098c
parent 444
0a52c26bba1a
child 486
a5f3abf8b9d1
--- 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;
+            }
+        }
     }
 }
 

mercurial