ui/gtk/entry.c

changeset 786
150a1180f7ec
parent 769
cba744633584
child 788
27f126f6e361
--- a/ui/gtk/entry.c	Thu Oct 02 14:49:17 2025 +0200
+++ b/ui/gtk/entry.c	Thu Oct 02 14:49:27 2025 +0200
@@ -35,28 +35,38 @@
 #include "entry.h"
 
 
-UIWIDGET ui_spinner_create(UiObject *obj, UiSpinnerArgs *args) {
-    double min = 0;
-    double max = 1000;
+UIWIDGET ui_spinbox_create(UiObject *obj, UiSpinBoxArgs *args) {
+    double min = args->min;
+    double max = args->max != 0 ? args->max : 1000;
     
     UiObject* current = uic_current_obj(obj);
     
     UiVar *var = NULL;
+    UiVarType vartype = 0;
     if(args->varname) {
         var = uic_get_var(obj->ctx, args->varname);
+        if(var) {
+            vartype = var->type;
+        } else {
+            var = uic_widget_var(obj->ctx, current->ctx, args->rangevalue, args->varname, UI_VAR_RANGE);
+            vartype = UI_VAR_RANGE;
+        }
     }
     
     if(!var) {
         if(args->intvalue) {
             var = uic_widget_var(obj->ctx, current->ctx, args->intvalue, NULL, UI_VAR_INTEGER);
+            vartype = UI_VAR_INTEGER;
         } else if(args->doublevalue) {
             var = uic_widget_var(obj->ctx, current->ctx, args->doublevalue, NULL, UI_VAR_DOUBLE);
+            vartype = UI_VAR_DOUBLE;
         } else if(args->rangevalue) {
             var = uic_widget_var(obj->ctx, current->ctx, args->rangevalue, NULL, UI_VAR_RANGE);
+            vartype = UI_VAR_RANGE;
         }
     }
     
-    if(var && var->type == UI_VAR_RANGE) {
+    if(vartype == UI_VAR_RANGE) {
         UiRange *r = var->value;
         min = r->min;
         max = r->max;
@@ -76,7 +86,7 @@
     UiObserver **obs = NULL;
     if(var) {
         double value = 0;
-        switch(var->type) {
+        switch(vartype) {
             default: break;
             case UI_VAR_INTEGER: {
                 UiInteger *i = var->value;

mercurial