ui/gtk/container.c

changeset 493
b045c70d7c02
parent 490
0206161e92d5
--- a/ui/gtk/container.c	Fri Mar 07 22:33:38 2025 +0100
+++ b/ui/gtk/container.c	Fri Mar 07 22:41:45 2025 +0100
@@ -1030,7 +1030,7 @@
     int max = args.max_panes == 0 ? 2 : args.max_panes;
     
     UiObject *newobj = uic_object_new(obj, pane0);
-    newobj->container = ui_splitpane_container(obj, pane0, orientation, max);
+    newobj->container = ui_splitpane_container(obj, pane0, orientation, max, args.initial_position);
     uic_obj_add(obj, newobj);
     
     g_object_set_data(G_OBJECT(pane0), "ui_splitpane", newobj->container);
@@ -1046,13 +1046,14 @@
     return splitpane_create(obj, UI_VERTICAL, args);
 }
 
-UiContainer* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiOrientation orientation, int max) {
+UiContainer* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiOrientation orientation, int max, int init) {
     UiSplitPaneContainer *ct = ui_calloc(obj->ctx, 1, sizeof(UiSplitPaneContainer));
     ct->container.widget = pane;
     ct->container.add = ui_splitpane_container_add;
     ct->current_pane = pane;
     ct->orientation = orientation;
     ct->max = max;
+    ct->initial_position = init;
     ct->children = cxArrayListCreateSimple(CX_STORE_POINTERS, 4);
     return (UiContainer*)ct;
 }
@@ -1069,6 +1070,9 @@
     
     if(s->pos == 0) {
         PANED_SET_CHILD1(s->current_pane, widget);
+        if(s->initial_position > 0) {
+            gtk_paned_set_position(GTK_PANED(s->current_pane), s->initial_position);
+        }
         s->pos++;
         s->nchildren++;
     } else {

mercurial