ui/gtk/container.h

changeset 112
c3f2f16fa4b8
parent 110
c00e968d018b
--- a/ui/gtk/container.h	Sat Oct 04 14:54:25 2025 +0200
+++ b/ui/gtk/container.h	Sun Oct 19 21:20:08 2025 +0200
@@ -45,45 +45,30 @@
   
 #define ui_reset_layout(layout) memset(&(layout), 0, sizeof(UiLayout))
     
-typedef void (*ui_container_add_f)(UiContainer*, GtkWidget*);
 
 typedef struct UiDocumentView UiDocumentView;
 
-
-typedef struct UiLayout UiLayout;
-struct UiLayout {
-    UiBool       fill;
-    UiBool       newline;
-    char         *label;
-    UiBool       hexpand;
-    UiBool       vexpand;
-    UiBool       hfill;
-    UiBool       vfill;
-    UiBool       override_defaults;
-    int          width;
-    int          colspan;
-    int          rowspan;
-};
-
-struct UiContainer {
+typedef struct UiContainerPrivate UiContainerPrivate;
+struct UiContainerPrivate {
+    UiContainerX container;
     GtkWidget *widget;
     UIMENU menu;
-    GtkWidget *current;
+    GtkWidget *current; // TODO: remove
     
-    void (*add)(UiContainer*, GtkWidget*);
+    void (*add)(UiContainerPrivate*, GtkWidget*, UiLayout *layout);
     UiLayout layout;
     
     int close;
 };
 
 typedef struct UiBoxContainer {
-    UiContainer container;
+    UiContainerPrivate container;
     UiSubContainerType type;
     UiBool has_fill;
 } UiBoxContainer;
 
 typedef struct UiGridContainer {
-    UiContainer container;
+    UiContainerPrivate container;
     UiBool def_hexpand;
     UiBool def_vexpand;
     UiBool def_hfill;
@@ -97,7 +82,7 @@
 } UiGridContainer;
 
 typedef struct UiTabViewContainer {
-    UiContainer container;
+    UiContainerPrivate container;
 } UiTabViewContainer;
 
 typedef void (*ui_select_tab_func)(UIWIDGET widget, int tab);
@@ -110,7 +95,7 @@
     ui_select_tab_func remove_tab;
     ui_add_tab_func add_tab;
     UiSubContainerType subcontainer;
-    int margin;
+    int padding;
     int spacing;
     int columnspacing;
     int rowspacing;
@@ -118,9 +103,7 @@
     void *onchangedata;
 } UiGtkTabView;
 
-
-typedef struct UiSplitPaneContainer {
-    UiContainer container;
+typedef struct UiSplitPane {
     GtkWidget *current_pane;
     CxList *children;
     UiOrientation orientation;
@@ -128,10 +111,15 @@
     int max;
     int nchildren;
     int initial_position;
+} UiSplitPane;
+
+typedef struct UiSplitPaneContainer {
+    UiContainerPrivate container;
+    UiSplitPane *splitpane;
 } UiSplitPaneContainer;
 
 typedef struct UiHeaderbarContainer {
-    UiContainer container;
+    UiContainerPrivate container;
     GtkWidget *centerbox;
     int part;
     UiHeaderbarAlternative alternative; /* only used by fallback headerbar */
@@ -140,7 +128,7 @@
 typedef struct UiGtkItemListContainer {
     UiObject *parent;
     GtkWidget *widget;
-    UiContainer *container;
+    UiContainerPrivate *container;
     void (*create_ui)(UiObject *, int, void *, void *);
     void *userdata;
     UiSubContainerType subcontainer;
@@ -163,39 +151,37 @@
         int rowspacing,
         int margin);
 
-UiContainer* ui_frame_container(UiObject *obj, GtkWidget *frame);
-void ui_frame_container_add(UiContainer *ct, GtkWidget *widget);
-
-GtkWidget* ui_box_set_margin(GtkWidget *box, int margin);
+GtkWidget* ui_gtk_set_margin(GtkWidget *widget, int margin, int margin_left, int margin_right, int margin_top, int margin_bottom);
 UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs *args, UiSubContainerType type);
 
-UiContainer* ui_box_container(UiObject *obj, GtkWidget *box, UiSubContainerType type);
-void ui_box_container_add(UiContainer *ct, GtkWidget *widget);
+UiContainerX* ui_box_container(UiObject *obj, GtkWidget *box, UiSubContainerType type);
+void ui_box_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 
 GtkWidget* ui_create_grid_widget(int colspacing, int rowspacing);
-UiContainer* ui_grid_container(
+UiContainerX* ui_grid_container(
         UiObject *obj,
         GtkWidget *grid,
         UiBool def_hexpand,
         UiBool def_vexpand,
         UiBool def_hfill,
         UiBool def_vfill);
-void ui_grid_container_add(UiContainer *ct, GtkWidget *widget);
+void ui_grid_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 
-UiContainer* ui_frame_container(UiObject *obj, GtkWidget *frame);
-void ui_frame_container_add(UiContainer *ct, GtkWidget *widget);
+UiContainerX* ui_frame_container(UiObject *obj, GtkWidget *frame);
+void ui_frame_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 
-UiContainer* ui_expander_container(UiObject *obj, GtkWidget *expander);
-void ui_expander_container_add(UiContainer *ct, GtkWidget *widget);
+UiContainerX* ui_expander_container(UiObject *obj, GtkWidget *expander);
+void ui_expander_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 
-UiContainer* ui_scrolledwindow_container(UiObject *obj, GtkWidget *scrolledwindow);
-void ui_scrolledwindow_container_add(UiContainer *ct, GtkWidget *widget);
+UiContainerX* ui_scrolledwindow_container(UiObject *obj, GtkWidget *scrolledwindow);
+void ui_scrolledwindow_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 
-UiContainer* ui_tabview_container(UiObject *obj, GtkWidget *tabview);
-void ui_tabview_container_add(UiContainer *ct, GtkWidget *widget);
+UiContainerX* ui_tabview_container(UiObject *obj, GtkWidget *tabview);
+void ui_tabview_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 
-UiContainer* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiOrientation orientation, int max, int init);
-void ui_splitpane_container_add(UiContainer *ct, GtkWidget *widget);
+UiSplitPane* ui_create_splitpane_data(GtkWidget *pane, UiOrientation orientation, int max, int init);
+UiContainerX* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiSplitPane *data);
+void ui_splitpane_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 
 int64_t ui_splitpane_get(UiInteger *i);
 void ui_splitpane_set(UiInteger *i, int64_t value);
@@ -205,12 +191,12 @@
 void ui_gtk_notebook_select_tab(GtkWidget *widget, int tab);
 
 #if GTK_CHECK_VERSION(3, 10, 0)
-UiContainer* ui_headerbar_container(UiObject *obj, GtkWidget *headerbar);
-void ui_headerbar_container_add(UiContainer *ct, GtkWidget *widget);
+UiContainerX* ui_headerbar_container(UiObject *obj, GtkWidget *headerbar);
+void ui_headerbar_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 #endif
 
-UiContainer* ui_headerbar_fallback_container(UiObject *obj, GtkWidget *headerbar);
-void ui_headerbar_fallback_container_add(UiContainer *ct, GtkWidget *widget);
+UiContainerX* ui_headerbar_fallback_container(UiObject *obj, GtkWidget *headerbar);
+void ui_headerbar_fallback_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout);
 
 #ifdef	__cplusplus
 }

mercurial