simplify layout fill option, remove fill parameter from container add function (GTK)

Thu, 17 Jul 2025 22:01:52 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Thu, 17 Jul 2025 22:01:52 +0200
changeset 669
5b930e8c3a87
parent 668
e6a1bcfc0dd9
child 670
d676b2c5e93b

simplify layout fill option, remove fill parameter from container add function (GTK)

ui/gtk/button.c file | annotate | diff | comparison | revisions
ui/gtk/container.c file | annotate | diff | comparison | revisions
ui/gtk/container.h file | annotate | diff | comparison | revisions
ui/gtk/display.c file | annotate | diff | comparison | revisions
ui/gtk/entry.c file | annotate | diff | comparison | revisions
ui/gtk/graphics.c file | annotate | diff | comparison | revisions
ui/gtk/image.c file | annotate | diff | comparison | revisions
ui/gtk/list.c file | annotate | diff | comparison | revisions
ui/gtk/range.c file | annotate | diff | comparison | revisions
ui/gtk/text.c file | annotate | diff | comparison | revisions
ui/gtk/webview.c file | annotate | diff | comparison | revisions
ui/gtk/widget.c file | annotate | diff | comparison | revisions
--- a/ui/gtk/button.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/button.c	Thu Jul 17 22:01:52 2025 +0200
@@ -103,7 +103,7 @@
     ui_set_name_and_style(button, args->name, args->style_class);
     ui_set_widget_groups(obj->ctx, button, args->groups);
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, button, FALSE);
+    current->container->add(current->container, button);
     return button;
 }
 
@@ -297,7 +297,7 @@
     ui_set_widget_groups(obj->ctx, widget, args->groups);
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, widget, FALSE);
+    current->container->add(current->container, widget);
     
     return widget;
 }
@@ -361,7 +361,7 @@
     ui_set_widget_groups(obj->ctx, widget, args->groups);
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, widget, FALSE);
+    current->container->add(current->container, widget);
     
     return widget;
 }
@@ -506,7 +506,7 @@
     }
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, rbutton, FALSE);
+    current->container->add(current->container, rbutton);
     
     return rbutton;
 }
--- a/ui/gtk/container.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/container.c	Thu Jul 17 22:01:52 2025 +0200
@@ -120,12 +120,9 @@
     return (UiContainer*)ct;
 }
 
-void ui_box_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_box_container_add(UiContainer *ct, GtkWidget *widget) {
     UiBoxContainer *bc = (UiBoxContainer*)ct;
-    if(ct->layout.fill != UI_LAYOUT_UNDEFINED) {
-        fill = ui_lb2bool(ct->layout.fill);
-    }
-    
+    UiBool fill = ct->layout.fill;
     if(bc->has_fill && fill) {
         fprintf(stderr, "UiError: container has 2 filled widgets");
         fill = FALSE;
@@ -180,7 +177,7 @@
 }
 
 #if GTK_MAJOR_VERSION >= 3
-void ui_grid_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_grid_container_add(UiContainer *ct, GtkWidget *widget) {
     UiGridContainer *grid = (UiGridContainer*)ct;
     
     if(ct->layout.newline) {
@@ -208,9 +205,7 @@
         }
     }
     
-    if(ct->layout.fill != UI_LAYOUT_UNDEFINED) {
-        fill = ui_lb2bool(ct->layout.fill);
-    }
+    UiBool fill = ct->layout.fill;
     if(ct->layout.hexpand) {
         hexpand = TRUE;
         hfill = TRUE;
@@ -249,7 +244,7 @@
 }
 #endif
 #ifdef UI_GTK2
-void ui_grid_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_grid_container_add(UiContainer *ct, GtkWidget *widget) {
     UiGridContainer *grid = (UiGridContainer*)ct;
     
     if(ct->layout.newline) {
@@ -277,9 +272,7 @@
         }
     }
     
-    if(ct->layout.fill != UI_LAYOUT_UNDEFINED) {
-        fill = ui_lb2bool(ct->layout.fill);
-    }
+    UiBool fill = ct->layout.fill;
     if(ct->layout.hexpand) {
         hexpand = TRUE;
         hfill = TRUE;
@@ -340,7 +333,7 @@
     return ct;
 }
 
-void ui_frame_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_frame_container_add(UiContainer *ct, GtkWidget *widget) {
     FRAME_SET_CHILD(ct->widget, widget);
 }
 
@@ -354,11 +347,11 @@
     return ct;
 }
 
-void ui_expander_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_expander_container_add(UiContainer *ct, GtkWidget *widget) {
     EXPANDER_SET_CHILD(ct->widget, widget);
 }
 
-void ui_scrolledwindow_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_scrolledwindow_container_add(UiContainer *ct, GtkWidget *widget) {
     // TODO: check if the widget implements GtkScrollable
     SCROLLEDWINDOW_SET_CHILD(ct->widget, widget);
     ui_reset_layout(ct->layout);
@@ -385,7 +378,7 @@
     return (UiContainer*)ct;
 }
 
-void ui_tabview_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_tabview_container_add(UiContainer *ct, GtkWidget *widget) {
     UiGtkTabView *data = ui_widget_get_tabview_data(ct->widget);
     if(!data) {
         fprintf(stderr, "UI Error: widget is not a tabview");
@@ -428,7 +421,7 @@
     GtkWidget *box = type == UI_CONTAINER_VBOX ? ui_gtk_vbox_new(args->spacing) : ui_gtk_hbox_new(args->spacing);
     ui_set_name_and_style(box, args->name, args->style_class);
     GtkWidget *widget = args->margin > 0 ? ui_box_set_margin(box, args->margin) : box;
-    ct->add(ct, widget, TRUE);
+    ct->add(ct, widget);
     
     UiObject *newobj = uic_object_new(obj, box);
     newobj->container = ui_box_container(obj, box, type);
@@ -466,7 +459,7 @@
     GtkWidget *grid = ui_create_grid_widget(args->columnspacing, args->rowspacing);
     ui_set_name_and_style(grid, args->name, args->style_class);
     widget = ui_box_set_margin(grid, args->margin);
-    current->container->add(current->container, widget, TRUE);
+    current->container->add(current->container, widget);
     
     UiObject *newobj = uic_object_new(obj, grid);
     newobj->container = ui_grid_container(obj, grid, args->def_hexpand, args->def_vexpand, args->def_hfill, args->def_vfill);
@@ -488,7 +481,7 @@
         newobj->widget = frame;
         newobj->container = ui_frame_container(obj, frame);
     }
-    current->container->add(current->container, frame, FALSE);
+    current->container->add(current->container, frame);
     uic_obj_add(obj, newobj);
     
     return frame;
@@ -508,7 +501,7 @@
         newobj->widget = expander;
         newobj->container = ui_expander_container(obj, expander);
     }
-    current->container->add(current->container, expander, FALSE);
+    current->container->add(current->container, expander);
     uic_obj_add(obj, newobj);
     
     return expander;
@@ -522,7 +515,7 @@
     GtkWidget *sw = SCROLLEDWINDOW_NEW();
     ui_set_name_and_style(sw, args->name, args->style_class);
     GtkWidget *widget = ui_box_set_margin(sw, args->margin);
-    current->container->add(current->container, widget, TRUE);
+    current->container->add(current->container, widget);
     
     UiObject *newobj = uic_object_new(obj, sw);
     GtkWidget *sub = ui_subcontainer_create(args->subcontainer, newobj, args->spacing, args->columnspacing, args->rowspacing, args->margin);
@@ -817,7 +810,7 @@
     data->subcontainer = args->subcontainer;
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, widget, TRUE);
+    current->container->add(current->container, widget);
     
     UiObject *newobj = uic_object_new(obj, widget);
     newobj->container = ui_tabview_container(obj, widget);
@@ -934,7 +927,7 @@
     
     GtkWidget *box = ui_gtk_hbox_new(args->alt_spacing);
     ui_set_name_and_style(box, args->name, args->style_class);
-    ct->add(ct, box, FALSE);
+    ct->add(ct, box);
     
     UiObject *newobj = uic_object_new(obj, box);
     newobj->container = ui_headerbar_fallback_container(obj, box);
@@ -965,7 +958,7 @@
     return (UiContainer*)ct;
 }
 
-void ui_headerbar_fallback_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_headerbar_fallback_container_add(UiContainer *ct, GtkWidget *widget) {
     UiHeaderbarContainer *hb = (UiHeaderbarContainer*)ct;
     BOX_ADD(ct->widget, widget);
 }
@@ -995,7 +988,7 @@
     return (UiContainer*)ct;
 }
 
-void ui_headerbar_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_headerbar_container_add(UiContainer *ct, GtkWidget *widget) {
     UiHeaderbarContainer *hb = (UiHeaderbarContainer*)ct;
     if(hb->part == 0) {
         UI_HEADERBAR_PACK_START(ct->widget, widget);
@@ -1080,7 +1073,7 @@
     GtkWidget *pane0 = create_paned(orientation);
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, pane0, TRUE);
+    current->container->add(current->container, pane0);
     
     int max = args->max_panes == 0 ? 2 : args->max_panes;
     
@@ -1113,7 +1106,7 @@
     return (UiContainer*)ct;
 }
 
-void ui_splitpane_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill) {
+void ui_splitpane_container_add(UiContainer *ct, GtkWidget *widget) {
     UiSplitPaneContainer *s = (UiSplitPaneContainer*)ct;
     
     if(s->nchildren >= s->max) {
@@ -1206,7 +1199,7 @@
         UiObject *item_obj = cxMapGet(ct->current_items, key);
         if(item_obj) {
             // re-add previously created widget
-            ui_box_container_add(ct->container, item_obj->widget, FALSE);
+            ui_box_container_add(ct->container, item_obj->widget);
         } else {
             // create new widget and object for this list element
             CxMempool *mp = cxMempoolCreateSimple(256);
@@ -1221,7 +1214,7 @@
                     ct->columnspacing,
                     ct->rowspacing,
                     ct->margin);
-            ui_box_container_add(ct->container, obj->widget, FALSE);
+            ui_box_container_add(ct->container, obj->widget);
             if(ct->create_ui) {
                 ct->create_ui(obj, index, elm, ct->userdata);
             }
@@ -1250,7 +1243,7 @@
     GtkWidget *box = args->container == UI_CONTAINER_VBOX ? ui_gtk_vbox_new(args->spacing) : ui_gtk_hbox_new(args->spacing);
     ui_set_name_and_style(box, args->name, args->style_class);
     GtkWidget *widget = args->margin > 0 ? ui_box_set_margin(box, args->margin) : box;
-    ct->add(ct, widget, TRUE);
+    ct->add(ct, widget);
     
     UiGtkItemListContainer *container = malloc(sizeof(UiGtkItemListContainer));
     container->parent = obj;
@@ -1295,7 +1288,7 @@
 
 void ui_layout_fill(UiObject *obj, UiBool fill) {
     UiContainer *ct = uic_get_current_container(obj);
-    ct->layout.fill = ui_bool2lb(fill);
+    ct->layout.fill = fill;
 }
 
 void ui_layout_hexpand(UiObject *obj, UiBool expand) {
--- a/ui/gtk/container.h	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/container.h	Thu Jul 17 22:01:52 2025 +0200
@@ -44,23 +44,15 @@
 #endif
   
 #define ui_reset_layout(layout) memset(&(layout), 0, sizeof(UiLayout))
-#define ui_lb2bool(b) ((b) == UI_LAYOUT_TRUE ? TRUE : FALSE)
-#define ui_bool2lb(b) ((b) ? UI_LAYOUT_TRUE : UI_LAYOUT_FALSE)
     
-typedef void (*ui_container_add_f)(UiContainer*, GtkWidget*, UiBool);
+typedef void (*ui_container_add_f)(UiContainer*, GtkWidget*);
 
 typedef struct UiDocumentView UiDocumentView;
 
 
-typedef enum UiLayoutBool {
-    UI_LAYOUT_UNDEFINED = 0,
-    UI_LAYOUT_TRUE,
-    UI_LAYOUT_FALSE,
-} UiLayoutBool;
-
 typedef struct UiLayout UiLayout;
 struct UiLayout {
-    UiLayoutBool fill;
+    UiBool       fill;
     UiBool       newline;
     char         *label;
     UiBool       hexpand;
@@ -78,7 +70,7 @@
     UIMENU menu;
     GtkWidget *current;
     
-    void (*add)(UiContainer*, GtkWidget*, UiBool);
+    void (*add)(UiContainer*, GtkWidget*);
     UiLayout layout;
     
     int close;
@@ -172,13 +164,13 @@
         int margin);
 
 UiContainer* ui_frame_container(UiObject *obj, GtkWidget *frame);
-void ui_frame_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
+void ui_frame_container_add(UiContainer *ct, GtkWidget *widget);
 
 GtkWidget* ui_box_set_margin(GtkWidget *box, int margin);
 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, UiBool fill);
+void ui_box_container_add(UiContainer *ct, GtkWidget *widget);
 
 GtkWidget* ui_create_grid_widget(int colspacing, int rowspacing);
 UiContainer* ui_grid_container(
@@ -188,22 +180,22 @@
         UiBool def_vexpand,
         UiBool def_hfill,
         UiBool def_vfill);
-void ui_grid_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
+void ui_grid_container_add(UiContainer *ct, GtkWidget *widget);
 
 UiContainer* ui_frame_container(UiObject *obj, GtkWidget *frame);
-void ui_frame_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
+void ui_frame_container_add(UiContainer *ct, GtkWidget *widget);
 
 UiContainer* ui_expander_container(UiObject *obj, GtkWidget *expander);
-void ui_expander_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
+void ui_expander_container_add(UiContainer *ct, GtkWidget *widget);
 
 UiContainer* ui_scrolledwindow_container(UiObject *obj, GtkWidget *scrolledwindow);
-void ui_scrolledwindow_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
+void ui_scrolledwindow_container_add(UiContainer *ct, GtkWidget *widget);
 
 UiContainer* ui_tabview_container(UiObject *obj, GtkWidget *tabview);
-void ui_tabview_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
+void ui_tabview_container_add(UiContainer *ct, GtkWidget *widget);
 
 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);
+void ui_splitpane_container_add(UiContainer *ct, GtkWidget *widget);
 
 
 UiGtkTabView* ui_widget_get_tabview_data(UIWIDGET tabview);
@@ -212,11 +204,11 @@
 
 #if GTK_CHECK_VERSION(3, 10, 0)
 UiContainer* ui_headerbar_container(UiObject *obj, GtkWidget *headerbar);
-void ui_headerbar_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
+void ui_headerbar_container_add(UiContainer *ct, GtkWidget *widget);
 #endif
 
 UiContainer* ui_headerbar_fallback_container(UiObject *obj, GtkWidget *headerbar);
-void ui_headerbar_fallback_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
+void ui_headerbar_fallback_container_add(UiContainer *ct, GtkWidget *widget);
 
 #ifdef	__cplusplus
 }
--- a/ui/gtk/display.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/display.c	Thu Jul 17 22:01:52 2025 +0200
@@ -114,7 +114,7 @@
     }
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, widget, FALSE);
+    current->container->add(current->container, widget);
     
     return widget;
 }
@@ -150,7 +150,7 @@
 UIWIDGET ui_space_deprecated(UiObject *obj) {
     GtkWidget *widget = gtk_label_new("");
     UiContainer *ct = uic_get_current_container(obj);
-    ct->add(ct, widget, TRUE);
+    ct->add(ct, widget);
     
     return widget;
 }
@@ -162,7 +162,7 @@
     GtkWidget *widget = gtk_hseparator_new();
 #endif
     UiContainer *ct = uic_get_current_container(obj);
-    ct->add(ct, widget, FALSE);
+    ct->add(ct, widget);
     
     return widget;
 }
@@ -201,7 +201,7 @@
     }
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, progressbar, FALSE);
+    current->container->add(current->container, progressbar);
     
     return progressbar;
 }
@@ -243,7 +243,7 @@
     }
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, spinner, FALSE);
+    current->container->add(current->container, spinner);
     
     return spinner;
 }
--- a/ui/gtk/entry.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/entry.c	Thu Jul 17 22:01:52 2025 +0200
@@ -130,7 +130,7 @@
             event);
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, spin, FALSE);
+    current->container->add(current->container, spin);
     
     return spin;
 }
--- a/ui/gtk/graphics.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/graphics.c	Thu Jul 17 22:01:52 2025 +0200
@@ -45,7 +45,7 @@
     }
     
     UiContainer *ct = uic_get_current_container(obj);
-    ct->add(ct, widget, TRUE);
+    ct->add(ct, widget);
     
     return widget;
 }
--- a/ui/gtk/image.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/image.c	Thu Jul 17 22:01:52 2025 +0200
@@ -188,7 +188,7 @@
     }
        
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, toplevel, TRUE);
+    current->container->add(current->container, toplevel);
     
     return toplevel;
 }
--- a/ui/gtk/list.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/list.c	Thu Jul 17 22:01:52 2025 +0200
@@ -305,7 +305,7 @@
     SCROLLEDWINDOW_SET_CHILD(scroll_area, view);
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, scroll_area, FALSE);
+    current->container->add(current->container, scroll_area);
     
     // ct->current should point to view, not scroll_area, to make it possible
     // to add a context menu
@@ -381,7 +381,7 @@
     
     // add widget to parent 
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, view, FALSE);
+    current->container->add(current->container, view);
     return view;
 }
 
@@ -485,7 +485,7 @@
     SCROLLEDWINDOW_SET_CHILD(scroll_area, view);
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, scroll_area, FALSE);
+    current->container->add(current->container, scroll_area);
     
     // ct->current should point to view, not scroll_area, to make it possible
     // to add a context menu
@@ -1835,7 +1835,7 @@
     ui_set_name_and_style(listbox, args->name, args->style_class);
     ui_set_widget_groups(obj->ctx, listbox, args->groups);
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, scroll_area, TRUE);
+    current->container->add(current->container, scroll_area);
     
     UiListBox *uilistbox = malloc(sizeof(UiListBox));
     uilistbox->obj = obj;
--- a/ui/gtk/range.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/range.c	Thu Jul 17 22:01:52 2025 +0200
@@ -77,7 +77,7 @@
     }
     
     UiContainer *ct = uic_get_current_container(obj);
-    ct->add(ct, scrollbar, FALSE);
+    ct->add(ct, scrollbar);
     
     return scrollbar;
 }
--- a/ui/gtk/text.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/text.c	Thu Jul 17 22:01:52 2025 +0200
@@ -156,7 +156,7 @@
     
     // add
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, scroll_area, TRUE);
+    current->container->add(current->container, scroll_area);
     
     // bind value
     if(var) {
@@ -630,7 +630,7 @@
     }
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, textfield, FALSE);
+    current->container->add(current->container, textfield);
     
     if(var) {
         UiString *value = var->value;
@@ -946,7 +946,7 @@
     gtk_widget_set_name(pathtf->stack, "path-textfield-box");
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, pathtf->stack, FALSE);
+    current->container->add(current->container, pathtf->stack);
     
     pathtf->entry_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
     pathtf->entry = gtk_entry_new();
--- a/ui/gtk/webview.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/webview.c	Thu Jul 17 22:01:52 2025 +0200
@@ -61,7 +61,7 @@
     
     ui_set_widget_groups(obj->ctx, webview, args->groups);
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, webview, FALSE);
+    current->container->add(current->container, webview);
     
     return webview;
 }
--- a/ui/gtk/widget.c	Wed Jul 16 19:15:58 2025 +0200
+++ b/ui/gtk/widget.c	Thu Jul 17 22:01:52 2025 +0200
@@ -37,7 +37,7 @@
     UIWIDGET widget = create_widget(obj, args, userdata);
     
     UI_APPLY_LAYOUT2(current, args);
-    current->container->add(current->container, widget, FALSE);
+    current->container->add(current->container, widget);
     
     return widget;
 }
@@ -47,7 +47,7 @@
     GtkWidget *widget = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
     ui_set_name_and_style(widget, args->name, args->style_class);
     UI_APPLY_LAYOUT1(current, (*args));
-    current->container->add(current->container, widget, FALSE);
+    current->container->add(current->container, widget);
     return widget;
 }
 

mercurial