]> uap-core.de Git - note.git/commitdiff
fix splitpane initial position
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 7 Mar 2025 21:39:14 +0000 (22:39 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 7 Mar 2025 21:39:14 +0000 (22:39 +0100)
application/window.c
ui/gtk/container.c
ui/gtk/container.h

index d6faaf31b7b15b32c2f2c2a5577e8ccc41c54948..10a1d480ce7d88d5e45b9590e0ba472b3def174b 100644 (file)
@@ -53,7 +53,7 @@ void window_create() {
         }
     }
     
-    ui_hsplitpane_w(obj, wdata->splitpane, .initial_position = 200) {
+    ui_hsplitpane_w(obj, wdata->splitpane, .initial_position = 500) {
         // splitpane left: table
         UiModel* model = ui_model(obj->ctx, UI_STRING, "Name", UI_STRING_FREE, "Last Modified", -1);
         model->columnsize[0] = -1;
index 74d1f6b373d424389f80b1dac76d762ac90ad91e..1508bc0a90a4d0c434d8fa849ac19f706a6d5f34 100644 (file)
@@ -1030,7 +1030,7 @@ static UIWIDGET splitpane_create(UiObject *obj, UiOrientation orientation, UiSpl
     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 @@ UIWIDGET ui_vsplitpane_create(UiObject *obj, UiSplitPaneArgs args) {
     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 @@ void ui_splitpane_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill)
     
     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 {
index fcb5a544afbc7302b1a301258bb5470d5e8314fd..e7734add376786f09d184831c6d1c2edf137d7a0 100644 (file)
@@ -134,6 +134,7 @@ typedef struct UiSplitPaneContainer {
     int pos;
     int max;
     int nchildren;
+    int initial_position;
 } UiSplitPaneContainer;
 
 typedef struct UiHeaderbarContainer {
@@ -200,7 +201,7 @@ void ui_scrolledwindow_container_add(UiContainer *ct, GtkWidget *widget, UiBool
 UiContainer* ui_tabview_container(UiObject *obj, GtkWidget *tabview);
 void ui_tabview_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
 
-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);
 void ui_splitpane_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);