ui/motif/container.c

changeset 124
80609f9675f1
parent 113
500c085d2133
child 153
ee49d1852a5f
--- a/ui/motif/container.c	Tue Feb 16 17:39:33 2016 +0100
+++ b/ui/motif/container.c	Mon May 23 12:28:32 2016 +0200
@@ -320,6 +320,27 @@
     ucx_list_free(rowdim);
 }
 
+UiContainer* ui_scrolledwindow_container(UiObject *obj, Widget scrolledwindow) {
+    UiContainer *ct = ucx_mempool_calloc(
+            obj->ctx->mempool,
+            1,
+            sizeof(UiContainer));
+    ct->widget = scrolledwindow;
+    ct->prepare = ui_scrolledwindow_container_prepare;
+    ct->add = ui_scrolledwindow_container_add;
+    return ct;
+}
+
+Widget ui_scrolledwindow_container_prepare(UiContainer *ct, Arg *args, int *n, UiBool fill) {
+    return ct->widget;
+}
+
+void ui_scrolledwindow_container_add(UiContainer *ct, Widget widget) {
+    ui_reset_layout(ct->layout);
+    ct->current = widget;
+}
+
+
 UiContainer* ui_tabview_container(UiObject *obj, Widget frame) {
     UiTabViewContainer *ct = ucx_mempool_calloc(
             obj->ctx->mempool,
@@ -413,6 +434,25 @@
     return grid;
 }
 
+UIWIDGET ui_scrolledwindow(UiObject *obj) {
+    UiContainer *ct = uic_get_current_container(obj);
+    
+    Arg args[16];
+    int n = 0;
+    XtSetArg(args[n], XmNscrollingPolicy, XmAUTOMATIC); // TODO: dosn't work, use XmAPPLICATION_DEFINED
+    n++;
+    Widget parent = ct->prepare(ct, args, &n, TRUE);
+    Widget scrolledwindow = XmCreateScrolledWindow(parent, "scrolledwindow", args, n);
+    ct->add(ct, scrolledwindow);
+    XtManageChild(scrolledwindow);
+    
+    UiObject *newobj = uic_object_new(obj, scrolledwindow);
+    newobj->container = ui_scrolledwindow_container(obj, scrolledwindow);
+    uic_obj_add(obj, newobj);
+    
+    return scrolledwindow;
+}
+
 UIWIDGET ui_sidebar(UiObject *obj) {
     UiContainer *ct = uic_get_current_container(obj);
     

mercurial