implement splitpane value/varname args (GTK)

Mon, 15 Sep 2025 15:58:18 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 15 Sep 2025 15:58:18 +0200
changeset 765
ee08f7859b78
parent 764
5ff4b9c0cf96
child 766
8b984742f45b

implement splitpane value/varname args (GTK)

ui/gtk/container.c file | annotate | diff | comparison | revisions
ui/gtk/container.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/container.c	Sun Sep 14 18:32:26 2025 +0200
+++ b/ui/gtk/container.c	Mon Sep 15 15:58:18 2025 +0200
@@ -1085,6 +1085,17 @@
     
     g_object_set_data(G_OBJECT(pane0), "ui_splitpane", newobj->container);
     
+    UiVar *var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_INTEGER);
+    if(var) {
+        UiSplitPaneContainer *s = (UiSplitPaneContainer*)newobj->container;
+        UiInteger *i = var->value;
+        s->initial_position = i->value;
+        
+        i->obj = s;
+        i->get = ui_splitpane_get;
+        i->set = ui_splitpane_set;
+    }
+    
     return pane0;
 }
 
@@ -1140,6 +1151,18 @@
     }
 }
 
+int64_t ui_splitpane_get(UiInteger *i) {
+    UiSplitPaneContainer *s = i->obj;
+    i->value = gtk_paned_get_position(GTK_PANED(s->container.widget));
+    return i->value;
+}
+
+void ui_splitpane_set(UiInteger *i, int64_t value) {
+    UiSplitPaneContainer *s = i->obj;
+    i->value = value;
+    gtk_paned_set_position(GTK_PANED(s->container.widget), (int)value);
+}
+
 UIEXPORT void ui_splitpane_set_visible(UIWIDGET splitpane, int child_index, UiBool visible) {
     UiSplitPaneContainer *ct = g_object_get_data(G_OBJECT(splitpane), "ui_splitpane");
     if(!ct) {
--- a/ui/gtk/container.h	Sun Sep 14 18:32:26 2025 +0200
+++ b/ui/gtk/container.h	Mon Sep 15 15:58:18 2025 +0200
@@ -197,6 +197,8 @@
 UiContainer* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiOrientation orientation, int max, int init);
 void ui_splitpane_container_add(UiContainer *ct, GtkWidget *widget);
 
+int64_t ui_splitpane_get(UiInteger *i);
+void ui_splitpane_set(UiInteger *i, int64_t value);
 
 UiGtkTabView* ui_widget_get_tabview_data(UIWIDGET tabview);
 

mercurial