# HG changeset patch # User Olaf Wintermann # Date 1759762242 -7200 # Node ID 2b0ecad00872450188b3ffb9a1bdea3ede7aeef9 # Parent 407be316311fb617186d697400b3c1f82e6c58ac refactor motif containers diff -r 407be316311f -r 2b0ecad00872 ui/motif/button.c --- a/ui/motif/button.c Mon Oct 06 13:15:09 2025 +0200 +++ b/ui/motif/button.c Mon Oct 06 16:50:42 2025 +0200 @@ -46,9 +46,9 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); XmString label = NULL; if(args->label) { @@ -59,7 +59,7 @@ char *name = args->name ? (char*)args->name : "button"; Widget button = XmCreatePushButton(parent, name, xargs, n); XtManageChild(button); - ctn->add(ctn, button); + ui_container_add(ctn, button); ui_set_widget_groups(obj->ctx, button, args->groups); @@ -101,9 +101,9 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); XtSetArg(xargs[n], XmNfillOnSelect, True); n++; XtSetArg(xargs[n], XmNindicatorOn, False); n++; @@ -116,7 +116,7 @@ char *name = args->name ? (char*)args->name : "togglebutton"; Widget button = XmCreateToggleButton(parent, name, xargs, n); XtManageChild(button); - ctn->add(ctn, button); + ui_container_add(ctn, button); ui_set_widget_groups(obj->ctx, button, args->groups); @@ -131,9 +131,9 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); XmString label = NULL; if(args->label) { @@ -144,7 +144,7 @@ char *name = args->name ? (char*)args->name : "button"; Widget button = XmCreateToggleButton(parent, name, xargs, n); XtManageChild(button); - ctn->add(ctn, button); + ui_container_add(ctn, button); ui_set_widget_groups(obj->ctx, button, args->groups); @@ -350,9 +350,9 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); XtSetArg(xargs[n], XmNindicatorType, XmONE_OF_MANY_ROUND); n++; XmString label = NULL; if(args->label) { @@ -363,7 +363,7 @@ char *name = args->name ? (char*)args->name : "button"; Widget button = XmCreateToggleButton(parent, name, xargs, n); XtManageChild(button); - ctn->add(ctn, button); + ui_container_add(ctn, button); ui_set_widget_groups(obj->ctx, button, args->groups); diff -r 407be316311f -r 2b0ecad00872 ui/motif/container.c --- a/ui/motif/container.c Mon Oct 06 13:15:09 2025 +0200 +++ b/ui/motif/container.c Mon Oct 06 16:50:42 2025 +0200 @@ -33,6 +33,7 @@ #include "container.h" #include "../common/context.h" #include "../common/object.h" +#include "../common/container.h" #include @@ -40,12 +41,26 @@ +Widget ui_container_prepare(UiContainerPrivate *container, UiLayout *layout, Arg *args, int *n) { + if(layout->margin != 0) { + layout->margin_left = layout->margin; + layout->margin_right = layout->margin; + layout->margin_top = layout->margin; + layout->margin_bottom = layout->margin; + } + return container->prepare(container, layout, args, n); +} + +void ui_container_add(UiContainerPrivate *container, Widget widget) { + container->add(container, widget); +} + /* ---------------------------- Box Container ---------------------------- */ static UIWIDGET box_create(UiObject *obj, UiContainerArgs *args, UiBoxOrientation orientation) { UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); Arg xargs[16]; int n = 0; @@ -56,7 +71,7 @@ //XtSetArg(xargs[n], gridColumnSpacing, args->spacing); n++; } - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); Widget grid = XtCreateManagedWidget(args->name ? args->name : "boxcontainer", gridClass, parent, xargs, n); ctn->add(ctn, grid); @@ -86,43 +101,42 @@ return (UiContainerX*)ctn; } -static Widget ui_box_container_prepare(UiBoxContainer *box, Arg *args, int *n) { +static Widget ui_box_container_prepare(UiBoxContainer *box, UiLayout *layout, Arg *args, int *n) { int a = *n; box->n++; return box->container.widget; } -Widget ui_vbox_prepare(UiContainerPrivate *ctn, Arg *args, int *n) { +Widget ui_vbox_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) { UiBoxContainer *box = (UiBoxContainer*)ctn; int a = *n; XtSetArg(args[a], gridRow, box->n); a++; - if(box->container.layout.fill == UI_ON) { + if(layout->fill) { XtSetArg(args[a], gridVExpand, TRUE); a++; XtSetArg(args[a], gridVFill, TRUE); a++; } XtSetArg(args[a], gridHExpand, TRUE); a++; XtSetArg(args[a], gridHFill, TRUE); a++; *n = a; - return ui_box_container_prepare(box, args, n); + return ui_box_container_prepare(box, layout, args, n); } -Widget ui_hbox_prepare(UiContainerPrivate *ctn, Arg *args, int *n) { +Widget ui_hbox_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) { UiBoxContainer *box = (UiBoxContainer*)ctn; int a = *n; XtSetArg(args[a], gridColumn, box->n); a++; - if(box->container.layout.fill == UI_ON) { + if(layout->fill) { XtSetArg(args[a], gridHExpand, TRUE); a++; XtSetArg(args[a], gridHFill, TRUE); a++; } XtSetArg(args[a], gridVExpand, TRUE); a++; XtSetArg(args[a], gridVFill, TRUE); a++; *n = a; - return ui_box_container_prepare(box, args, n); + return ui_box_container_prepare(box, layout, args, n); } void ui_box_container_add(UiContainerPrivate *ctn, Widget widget) { - ui_reset_layout(ctn->layout); - + } @@ -134,14 +148,14 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); XtSetArg(xargs[n], gridMargin, args->margin); n++; XtSetArg(xargs[n], gridColumnSpacing, args->columnspacing); n++; XtSetArg(xargs[n], gridRowSpacing, args->rowspacing); n++; Widget grid = XtCreateManagedWidget(args->name ? args->name : "gridcontainer", gridClass, parent, xargs, n); - ctn->add(ctn, grid); + ui_container_add(ctn, grid); UiContainerX *container = ui_grid_container(obj, grid, args->def_hexpand, args->def_vexpand, args->def_hfill, args->def_vfill); uic_object_push_container(obj, container); @@ -171,9 +185,9 @@ return (UiContainerX*)ctn; } -Widget ui_grid_container_prepare(UiContainerPrivate *ctn, Arg *args, int *n) { +Widget ui_grid_container_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) { UiGridContainer *grid = (UiGridContainer*)ctn; - if(ctn->layout.newline) { + if(ctn->container.newline) { grid->y++; grid->x = 0; } @@ -181,61 +195,25 @@ int a = *n; XtSetArg(args[a], gridColumn, grid->x); a++; XtSetArg(args[a], gridRow, grid->y); a++; - if(ctn->layout.colspan > 0) { - XtSetArg(args[a], gridColspan, ctn->layout.colspan); a++; - } - if(ctn->layout.rowspan > 0) { - XtSetArg(args[a], gridRowspan, ctn->layout.rowspan); a++; + if(layout->colspan > 0) { + XtSetArg(args[a], gridColspan, layout->colspan); a++; } - - int hexpand = FALSE; - int vexpand = FALSE; - int hfill = FALSE; - int vfill = FALSE; - if(!ctn->layout.override_defaults) { - if(grid->def_hexpand) { - hexpand = TRUE; - hfill = TRUE; - } else if(grid->def_hfill) { - hfill = TRUE; - } - if(grid->def_vexpand) { - vexpand = TRUE; - vfill = TRUE; - } else if(grid->def_vfill) { - vfill = TRUE; - } + if(layout->rowspan > 0) { + XtSetArg(args[a], gridRowspan, layout->rowspan); a++; } - if(ctn->layout.hexpand) { - hexpand = TRUE; - hfill = TRUE; - } else if(ctn->layout.hfill) { - hfill = TRUE; - } - if(ctn->layout.vexpand) { - vexpand = TRUE; - vfill = TRUE; - } else if(ctn->layout.vfill) { - vfill = TRUE; - } - if(ctn->layout.fill == UI_ON) { - hexpand = TRUE; - vexpand = TRUE; - hfill = TRUE; - vfill = TRUE; - } + uic_layout_setup_expand_fill(layout, grid->def_hexpand, grid->def_vexpand, grid->def_hfill, grid->def_vfill); - if(hfill) { + if(layout->hfill) { XtSetArg(args[a], gridHFill, TRUE); a++; } - if(vfill) { + if(layout->vfill) { XtSetArg(args[a], gridVFill, TRUE); a++; } - if(hexpand) { + if(layout->hexpand) { XtSetArg(args[a], gridHExpand, TRUE); a++; } - if(vexpand) { + if(layout->vexpand) { XtSetArg(args[a], gridVExpand, TRUE); a++; } @@ -246,7 +224,7 @@ void ui_grid_container_add(UiContainerPrivate *ctn, Widget widget) { UiGridContainer *grid = (UiGridContainer*)ctn; grid->x++; - ui_reset_layout(ctn->layout); + grid->container.container.newline = FALSE; } @@ -313,7 +291,7 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); // create widgets // form @@ -323,9 +301,10 @@ memset(tabview, 0, sizeof(UiMotifTabView)); char *name = args->name ? (char*)args->name : "tabview"; XtSetArg(xargs[n], XmNuserData, tabview); n++; - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); Widget form = XmCreateForm(parent, name, xargs, n); XtManageChild(form); + ui_container_add(ctn, parent); n = 0; XtSetArg(xargs[n], XmNleftAttachment, XmATTACH_FORM); n++; @@ -569,7 +548,7 @@ XtManageChild(tab->child); } -Widget ui_tabview_container_prepare(UiContainerPrivate *ctn, Arg *args, int *n) { +Widget ui_tabview_container_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) { UiTabViewContainer *ct = (UiTabViewContainer*)ctn; UiMotifTabView *tabview = ct->tabview; int a = *n; @@ -583,12 +562,12 @@ } void ui_tabview_container_add(UiContainerPrivate *ctn, Widget widget) { - ui_reset_layout(ctn->layout); + } /* -------------------- ScrolledWindow -------------------- */ -Widget ui_scrolledwindow_prepare(UiContainerPrivate *ctn, Arg *args, int *n) { +Widget ui_scrolledwindow_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) { return ctn->widget; } @@ -607,16 +586,16 @@ UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs *args) { UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); Arg xargs[16]; int n = 0; XtSetArg(xargs[n], XmNscrollingPolicy, XmAUTOMATIC); n++; - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); Widget scrolledwindow = XmCreateScrolledWindow(parent, "scrolledwindow", xargs, n); - ctn->add(ctn, scrolledwindow); + ui_container_add(ctn, scrolledwindow); UiContainerX *container = ui_scrolledwindow_container(obj, scrolledwindow); uic_object_push_container(obj, container); @@ -640,15 +619,3 @@ return 1; } - -/* - * -------------------- Layout Functions -------------------- - * - * functions for setting layout attributes for the current container - * - */ - -void ui_newline(UiObject *obj) { - UiContainerPrivate *ct = ui_obj_container(obj); - ct->layout.newline = TRUE; -} diff -r 407be316311f -r 2b0ecad00872 ui/motif/container.h --- a/ui/motif/container.h Mon Oct 06 13:15:09 2025 +0200 +++ b/ui/motif/container.h Mon Oct 06 16:50:42 2025 +0200 @@ -62,21 +62,6 @@ #define ui_obj_container(obj) (UiContainerPrivate*)obj->container_end -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; -}; enum UiBoxOrientation { UI_BOX_VERTICAL = 0, @@ -88,11 +73,10 @@ struct UiContainerPrivate { UiContainerX container; - Widget (*prepare)(UiContainerPrivate*, Arg *, int*); + Widget (*prepare)(UiContainerPrivate*, UiLayout *layout, Arg *, int*); void (*add)(UiContainerPrivate*, Widget); Widget widget; UiContainerType type; - UiLayout layout; }; typedef struct UiBoxContainer { @@ -143,6 +127,9 @@ UiMotifTabView *tabview; } UiTabViewContainer; +Widget ui_container_prepare(UiContainerPrivate *container, UiLayout *layout, Arg *args, int *n); +void ui_container_add(UiContainerPrivate *container, Widget widget); + void ui_motif_tabview_select(UiMotifTabView *tabview, int tab); void ui_motif_tabview_add_tab(UiMotifTabView *tabview, int index, const char *name, Widget child); void ui_motif_tabview_remove(UiMotifTabView *tabview, int index); @@ -150,12 +137,12 @@ int64_t ui_tabview_get(UiInteger *i); void ui_tabview_set(UiInteger *i, int64_t value); -Widget ui_tabview_container_prepare(UiContainerPrivate *ctn, Arg *args, int *n); +Widget ui_tabview_container_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n); void ui_tabview_container_add(UiContainerPrivate *ctn, Widget widget); UiContainerX* ui_box_container(UiObject *obj, Widget grid, UiBoxOrientation orientation); -Widget ui_vbox_prepare(UiContainerPrivate *ctn, Arg *args, int *n); -Widget ui_hbox_prepare(UiContainerPrivate *ctn, Arg *args, int *n); +Widget ui_vbox_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n); +Widget ui_hbox_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n); void ui_box_container_add(UiContainerPrivate *ctn, Widget widget); @@ -166,7 +153,7 @@ UiBool def_vexpand, UiBool def_hfill, UiBool def_vfill); -Widget ui_grid_container_prepare(UiContainerPrivate *ctn, Arg *args, int *n); +Widget ui_grid_container_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n); void ui_grid_container_add(UiContainerPrivate *ctn, Widget widget); #ifdef __cplusplus diff -r 407be316311f -r 2b0ecad00872 ui/motif/label.c --- a/ui/motif/label.c Mon Oct 06 13:15:09 2025 +0200 +++ b/ui/motif/label.c Mon Oct 06 16:50:42 2025 +0200 @@ -41,9 +41,9 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); XtSetArg(xargs[n], XmNalignment, align); n++; XmString label = NULL; @@ -55,7 +55,7 @@ char *name = args->name ? (char*)args->name : "label"; Widget w = XmCreateLabel(parent, name, xargs, n); XtManageChild(w); - ctn->add(ctn, w); + ui_container_add(ctn, w); XmStringFree(label); return w; @@ -108,12 +108,13 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); char *name = args->name ? (char*)args->name : "progressbar"; Widget frame = XmCreateFrame(parent, name, xargs, n); + ui_container_add(ctn, frame); // create a button and get some informations about the height, shadow, highlight, .... // we want the frame to have the same dimensions as a normal button @@ -191,9 +192,9 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); XmString label = XmStringCreateSimple(""); XtSetArg(xargs[n], XmNlabelString, label); n++; @@ -203,7 +204,7 @@ char *name = args->name ? (char*)args->name : "progresss_spinner"; Widget w = XmCreateLabel(parent, name, xargs, n); XtManageChild(w); - ctn->add(ctn, w); + ui_container_add(ctn, w); UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); if(var) { diff -r 407be316311f -r 2b0ecad00872 ui/motif/list.c --- a/ui/motif/list.c Mon Oct 06 13:15:09 2025 +0200 +++ b/ui/motif/list.c Mon Oct 06 16:50:42 2025 +0200 @@ -55,7 +55,7 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); if(args->multiselection) { XtSetArg(xargs[n], XmNselectionPolicy, XmEXTENDED_SELECT); n++; @@ -64,9 +64,10 @@ } char *name = args->name ? (char*)args->name : "listview"; - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); Widget widget = XmCreateScrolledList(parent, name, xargs, n); XtManageChild(widget); + ui_container_add(ctn, widget); UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); @@ -264,12 +265,13 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); char *name = args->name ? (char*)args->name : "dropdown"; - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); Widget widget = XmCreateDropDownList(parent, name, xargs, n); XtManageChild(widget); + ui_container_add(ctn, widget); UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); diff -r 407be316311f -r 2b0ecad00872 ui/motif/text.c --- a/ui/motif/text.c Mon Oct 06 13:15:09 2025 +0200 +++ b/ui/motif/text.c Mon Oct 06 16:50:42 2025 +0200 @@ -45,13 +45,14 @@ XtSetArg(xargs[n], XmNeditMode, XmMULTI_LINE_EDIT); n++; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); char *name = args->name ? (char*)args->name : "textarea"; XtSetArg(xargs[n], XmNwidth, 100); n++; Widget widget = XmCreateScrolledText(parent, name, xargs, n); XtManageChild(widget); + ui_container_add(ctn, widget); UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_TEXT); @@ -396,12 +397,13 @@ } UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); char *name = args->name ? (char*)args->name : "textfield"; Widget textfield = XmCreateTextField(parent, name, xargs, n); XtManageChild(textfield); + ui_container_add(ctn, textfield); ui_set_widget_groups(obj->ctx, textfield, args->groups); @@ -971,9 +973,9 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); // TODO: name @@ -987,7 +989,7 @@ XtManageChild(pathbar->widget); - ctn->add(ctn, pathbar->widget); + ui_container_add(ctn, pathbar->widget); UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); if (var) { diff -r 407be316311f -r 2b0ecad00872 ui/motif/widget.c --- a/ui/motif/widget.c Mon Oct 06 13:15:09 2025 +0200 +++ b/ui/motif/widget.c Mon Oct 06 16:50:42 2025 +0200 @@ -42,12 +42,12 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); Widget widget = create_widget(obj, args, userdata, parent, xargs, n); XtManageChild(widget); - ctn->add(ctn, widget); + ui_container_add(ctn, widget); return widget; } @@ -58,13 +58,13 @@ int n = 0; UiContainerPrivate *ctn = ui_obj_container(obj); - UI_APPLY_LAYOUT(ctn->layout, args); + UiLayout layout = UI_ARGS2LAYOUT(args); char *name = args->name ? (char*)args->name : "separator"; - Widget parent = ctn->prepare(ctn, xargs, &n); + Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); Widget widget = XmCreateSeparator(parent, name, xargs, n); XtManageChild(widget); - ctn->add(ctn, widget); + ui_container_add(ctn, widget); return widget; }