diff -r 069fca2a47c2 -r 07055fcc5e2c ui/motif/container.c --- a/ui/motif/container.c Fri Feb 28 21:42:38 2025 +0100 +++ b/ui/motif/container.c Sat Mar 01 22:21:08 2025 +0100 @@ -586,7 +586,43 @@ ui_reset_layout(ctn->layout); } +/* -------------------- ScrolledWindow -------------------- */ +Widget ui_scrolledwindow_prepare(UiContainerPrivate *ctn, Arg *args, int *n) { + return ctn->widget; +} + +void ui_scrolledwindow_add(UiContainerPrivate *ctn, Widget widget) { + +} + +static UiContainerX* ui_scrolledwindow_container(UiObject *obj, Widget scrolledwindow) { + UiContainerPrivate *ctn = ui_malloc(obj->ctx, sizeof(UiContainerPrivate)); + memset(ctn, 0, sizeof(UiContainerPrivate)); + ctn->prepare = ui_scrolledwindow_prepare; + ctn->add = ui_scrolledwindow_add; + ctn->widget = scrolledwindow; + return (UiContainerX*)ctn; +} + +UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs args) { + UiContainerPrivate *ctn = ui_obj_container(obj); + UI_APPLY_LAYOUT(ctn->layout, args); + + Arg xargs[16]; + int n = 0; + + XtSetArg(xargs[n], XmNscrollingPolicy, XmAUTOMATIC); n++; + + Widget parent = ctn->prepare(ctn, xargs, &n); + Widget scrolledwindow = XmCreateScrolledWindow(parent, "scrolledwindow", xargs, n); + ctn->add(ctn, scrolledwindow); + + UiContainerX *container = ui_scrolledwindow_container(obj, scrolledwindow); + uic_object_push_container(obj, container); + + return scrolledwindow; +} /* -------------------- Container Helper Functions -------------------- */