diff -r 7061c9cf3b52 -r fc854e0ab924 ui/gtk/container.c --- a/ui/gtk/container.c Thu May 15 12:55:54 2025 +0200 +++ b/ui/gtk/container.c Thu May 29 12:03:32 2025 +0200 @@ -420,14 +420,14 @@ return ret; } -UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs args, UiSubContainerType type) { +UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs *args, UiSubContainerType type) { UiObject *current = uic_current_obj(obj); UiContainer *ct = current->container; - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); - 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; + 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); UiObject *newobj = uic_object_new(obj, box); @@ -437,11 +437,11 @@ return widget; } -UIEXPORT UIWIDGET ui_vbox_create(UiObject *obj, UiContainerArgs args) { +UIEXPORT UIWIDGET ui_vbox_create(UiObject *obj, UiContainerArgs *args) { return ui_box_create(obj, args, UI_CONTAINER_VBOX); } -UIEXPORT UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs args) { +UIEXPORT UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) { return ui_box_create(obj, args, UI_CONTAINER_HBOX); } @@ -458,30 +458,30 @@ return grid; } -UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs args) { +UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { UiObject* current = uic_current_obj(obj); - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); GtkWidget *widget; - 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); + 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); 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); + newobj->container = ui_grid_container(obj, grid, args->def_hexpand, args->def_vexpand, args->def_hfill, args->def_vfill); uic_obj_add(obj, newobj); return widget; } -UIWIDGET ui_frame_create(UiObject *obj, UiFrameArgs args) { +UIWIDGET ui_frame_create(UiObject *obj, UiFrameArgs *args) { UiObject* current = uic_current_obj(obj); - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); - GtkWidget *frame = gtk_frame_new(args.label); + GtkWidget *frame = gtk_frame_new(args->label); UiObject *newobj = uic_object_new(obj, frame); - GtkWidget *sub = ui_subcontainer_create(args.subcontainer, newobj, args.spacing, args.columnspacing, args.rowspacing, args.margin); + GtkWidget *sub = ui_subcontainer_create(args->subcontainer, newobj, args->spacing, args->columnspacing, args->rowspacing, args->margin); if(sub) { FRAME_SET_CHILD(frame, sub); } else { @@ -494,14 +494,14 @@ return frame; } -UIEXPORT UIWIDGET ui_expander_create(UiObject *obj, UiFrameArgs args) { +UIEXPORT UIWIDGET ui_expander_create(UiObject *obj, UiFrameArgs *args) { UiObject* current = uic_current_obj(obj); - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); - GtkWidget *expander = gtk_expander_new(args.label); - gtk_expander_set_expanded(GTK_EXPANDER(expander), args.isexpanded); + GtkWidget *expander = gtk_expander_new(args->label); + gtk_expander_set_expanded(GTK_EXPANDER(expander), args->isexpanded); UiObject *newobj = uic_object_new(obj, expander); - GtkWidget *sub = ui_subcontainer_create(args.subcontainer, newobj, args.spacing, args.columnspacing, args.rowspacing, args.margin); + GtkWidget *sub = ui_subcontainer_create(args->subcontainer, newobj, args->spacing, args->columnspacing, args->rowspacing, args->margin); if(sub) { EXPANDER_SET_CHILD(expander, sub); } else { @@ -515,17 +515,17 @@ } -UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs args) { +UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs *args) { UiObject* current = uic_current_obj(obj); - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); GtkWidget *sw = SCROLLEDWINDOW_NEW(); - ui_set_name_and_style(sw, args.name, args.style_class); - GtkWidget *widget = ui_box_set_margin(sw, args.margin); + 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); UiObject *newobj = uic_object_new(obj, sw); - GtkWidget *sub = ui_subcontainer_create(args.subcontainer, newobj, args.spacing, args.columnspacing, args.rowspacing, args.margin); + GtkWidget *sub = ui_subcontainer_create(args->subcontainer, newobj, args->spacing, args->columnspacing, args->rowspacing, args->margin); if(sub) { SCROLLEDWINDOW_SET_CHILD(sw, sub); } else { @@ -692,19 +692,19 @@ typedef int64_t(*ui_tabview_get_func)(UiInteger*); typedef void (*ui_tabview_set_func)(UiInteger*, int64_t); -UIWIDGET ui_tabview_create(UiObject* obj, UiTabViewArgs args) { +UIWIDGET ui_tabview_create(UiObject* obj, UiTabViewArgs *args) { UiGtkTabView *data = malloc(sizeof(UiGtkTabView)); - data->margin = args.margin; - data->spacing = args.spacing; - data->columnspacing = args.columnspacing; - data->rowspacing = args.rowspacing; + data->margin = args->margin; + data->spacing = args->spacing; + data->columnspacing = args->columnspacing; + data->rowspacing = args->rowspacing; ui_tabview_get_func getfunc = NULL; ui_tabview_set_func setfunc = NULL; GtkWidget *widget = NULL; GtkWidget *data_widget = NULL; - switch(args.tabview) { + switch(args->tabview) { case UI_TABVIEW_DOC: { // TODO break; @@ -740,7 +740,7 @@ data->add_tab = ui_notebook_tab_add; getfunc = ui_notebook_get; setfunc = ui_notebook_set; - if(args.tabview == UI_TABVIEW_INVISIBLE) { + if(args->tabview == UI_TABVIEW_INVISIBLE) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(widget), FALSE); gtk_notebook_set_show_border(GTK_NOTEBOOK(widget), FALSE); } @@ -749,8 +749,8 @@ } UiObject* current = uic_current_obj(obj); - if(args.value || args.varname) { - UiVar *var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_INTEGER); + if(args->value || args->varname) { + UiVar *var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_INTEGER); UiInteger *i = var->value; i->get = getfunc; i->set = setfunc; @@ -759,9 +759,9 @@ g_object_set_data(G_OBJECT(widget), "ui_tabview", data); data->widget = data_widget; - data->subcontainer = args.subcontainer; + data->subcontainer = args->subcontainer; - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); current->container->add(current->container, widget, TRUE); UiObject *newobj = uic_object_new(obj, widget); @@ -872,13 +872,13 @@ hb_set_part(obj, 1); } -UIWIDGET ui_headerbar_fallback_create(UiObject *obj, UiHeaderbarArgs args) { +UIWIDGET ui_headerbar_fallback_create(UiObject *obj, UiHeaderbarArgs *args) { UiObject *current = uic_current_obj(obj); UiContainer *ct = current->container; - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); - GtkWidget *box = ui_gtk_hbox_new(args.alt_spacing); - ui_set_name_and_style(box, args.name, args.style_class); + 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); UiObject *newobj = uic_object_new(obj, box); @@ -917,7 +917,7 @@ #if GTK_CHECK_VERSION(3, 10, 0) -UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs args) { +UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs *args) { GtkWidget *headerbar = g_object_get_data(G_OBJECT(obj->widget), "ui_headerbar"); if(!headerbar) { return ui_headerbar_fallback_create(obj, args); @@ -958,7 +958,7 @@ #else -UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs args) { +UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs *args) { return ui_headerbar_fallback_create(obj, args); } @@ -967,15 +967,15 @@ /* -------------------- Sidebar -------------------- */ #ifdef UI_LIBADWAITA -UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs args) { +UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs *args) { GtkWidget *sidebar_toolbar_view = g_object_get_data(G_OBJECT(obj->widget), "ui_sidebar"); if(!sidebar_toolbar_view) { fprintf(stderr, "Error: window is not configured for sidebar\n"); return NULL; } - GtkWidget *box = ui_gtk_vbox_new(args.spacing); - ui_box_set_margin(box, args.margin); + GtkWidget *box = ui_gtk_vbox_new(args->spacing); + ui_box_set_margin(box, args->margin); adw_toolbar_view_set_content(ADW_TOOLBAR_VIEW(sidebar_toolbar_view), box); UiObject *newobj = uic_object_new(obj, box); @@ -985,11 +985,11 @@ return box; } #else -UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs args) { +UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs *args) { GtkWidget *sidebar_vbox = g_object_get_data(G_OBJECT(obj->widget), "ui_sidebar"); - GtkWidget *box = ui_gtk_vbox_new(args.spacing); - ui_box_set_margin(box, args.margin); + GtkWidget *box = ui_gtk_vbox_new(args->spacing); + ui_box_set_margin(box, args->margin); BOX_ADD_EXPAND(sidebar_vbox, box); UiObject *newobj = uic_object_new(obj, box); @@ -1019,18 +1019,18 @@ -static UIWIDGET splitpane_create(UiObject *obj, UiOrientation orientation, UiSplitPaneArgs args) { +static UIWIDGET splitpane_create(UiObject *obj, UiOrientation orientation, UiSplitPaneArgs *args) { UiObject* current = uic_current_obj(obj); GtkWidget *pane0 = create_paned(orientation); - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); current->container->add(current->container, pane0, TRUE); - int max = args.max_panes == 0 ? 2 : args.max_panes; + 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, args.initial_position); + 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); @@ -1038,11 +1038,11 @@ return pane0; } -UIWIDGET ui_hsplitpane_create(UiObject *obj, UiSplitPaneArgs args) { +UIWIDGET ui_hsplitpane_create(UiObject *obj, UiSplitPaneArgs *args) { return splitpane_create(obj, UI_HORIZONTAL, args); } -UIWIDGET ui_vsplitpane_create(UiObject *obj, UiSplitPaneArgs args) { +UIWIDGET ui_vsplitpane_create(UiObject *obj, UiSplitPaneArgs *args) { return splitpane_create(obj, UI_VERTICAL, args); } @@ -1187,33 +1187,33 @@ free(container); } -UIWIDGET ui_itemlist_create(UiObject *obj, UiItemListContainerArgs args) { +UIWIDGET ui_itemlist_create(UiObject *obj, UiItemListContainerArgs *args) { UiObject *current = uic_current_obj(obj); UiContainer *ct = current->container; - UI_APPLY_LAYOUT1(current, args); + UI_APPLY_LAYOUT2(current, args); - 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; + 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); UiGtkItemListContainer *container = malloc(sizeof(UiGtkItemListContainer)); container->parent = obj; container->widget = box; - container->container = ui_box_container(current, box, args.container); - container->create_ui = args.create_ui; - container->userdata = args.userdata; - container->subcontainer = args.subcontainer; + container->container = ui_box_container(current, box, args->container); + container->create_ui = args->create_ui; + container->userdata = args->userdata; + container->subcontainer = args->subcontainer; container->current_items = cxHashMapCreateSimple(CX_STORE_POINTERS); container->current_items->collection.advanced_destructor = remove_item; container->current_items->collection.destructor_data = container; - container->margin = args.sub_margin; - container->spacing = args.sub_spacing; - container->columnspacing = args.sub_columnspacing; - container->rowspacing = args.sub_rowspacing; + container->margin = args->sub_margin; + container->spacing = args->sub_spacing; + container->columnspacing = args->sub_columnspacing; + container->rowspacing = args->sub_rowspacing; container->remove_items = TRUE; - UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_LIST); if(var) { UiList *list = var->value; list->obj = container;