# HG changeset patch # User Olaf Wintermann # Date 1759663819 -7200 # Node ID 814d374fb689416bbd98dfcb9f38759af0f0cb98 # Parent f8ff8df4171311d0e4c7d7a089ea6c2341c83fb4 add new margin widget args and implement margin in the cocoa gridlayout diff -r f8ff8df41713 -r 814d374fb689 make/xcode/toolkit/toolkit/main.m --- a/make/xcode/toolkit/toolkit/main.m Sun Oct 05 12:34:42 2025 +0200 +++ b/make/xcode/toolkit/toolkit/main.m Sun Oct 05 13:30:19 2025 +0200 @@ -131,9 +131,22 @@ } //*/ + ui_grid(obj, .fill = TRUE, .margin = 10, .columnspacing = 10, .rowspacing = 10) { + ui_button(obj, .label = "Button 1"); + ui_button(obj, .label = "Button 2"); + ui_button(obj, .label = "Button 3", .hfill = TRUE, .hexpand = TRUE); + ui_newline(obj); + + ui_button(obj, .label = "Button X2", .colspan = 3, .hfill = TRUE); + ui_newline(obj); + + ui_textarea(obj, .varname = "text", .fill = TRUE, .colspan = 3); + } + + /* ui_button(obj, .label = "HBox Button 1"); ui_button(obj, .label = "HBox Button 2"); - ui_grid(obj, .fill = TRUE, .columnspacing = 20, .rowspacing = 10) { + ui_grid(obj, .fill = TRUE, .columnspacing = 20, .rowspacing = 10, .margin = 50) { ui_hbox(obj, .spacing = 8, .colspan = 1) { ui_button(obj, .label = "HBox Button 1"); ui_button(obj, .label = "HBox Button 2"); @@ -149,6 +162,7 @@ ui_button(obj, .label = "textfield", .hfill = TRUE); } ui_button(obj, .label = "HBox Button 3"); + */ /* ui_grid(obj, .spacing = 0, .fill = TRUE) { diff -r f8ff8df41713 -r 814d374fb689 ui/cocoa/GridLayout.m --- a/ui/cocoa/GridLayout.m Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/cocoa/GridLayout.m Sun Oct 05 13:30:19 2025 +0200 @@ -80,6 +80,10 @@ GridDef *col = &cols[x]; GridDef *row = &rows[y]; + if(elm->margin.left + elm->margin.right > 0) { + printf(""); // break + } + NSSize size = elm->view.intrinsicContentSize; NSSize size2 = elm->view.fittingSize; if(size.width == NSViewNoIntrinsicMetric) { @@ -89,21 +93,21 @@ size.height = size2.height; } if(size.width != NSViewNoIntrinsicMetric) { - CGFloat width = size.width; + CGFloat width = size.width + elm->margin.left + elm->margin.right; if(width > cols[elm->x].preferred_size && elm->colspan <= 1 && span_max == 1) { cols[elm->x].preferred_size = width; } elm->preferred_width = width; } if(size.height != NSViewNoIntrinsicMetric) { - CGFloat height = size.height; - //CGFloat height = size.height; + CGFloat height = size.height + elm->margin.top + elm->margin.bottom; if(height > rows[elm->y].preferred_size && elm->rowspan <= 1 && span_max == 1) { rows[elm->y].preferred_size = height; } elm->preferred_height = height; } + if(elm->rowspan > span_max || elm->colspan > span_max) { continue; } @@ -254,16 +258,22 @@ if(end_col > ncols) { end_col = ncols; } + int real_span = 0; for(int c=elm->x;c 0) { + cwidth += (real_span-1) * colspacing; + } + frame.size.width = cwidth + alignment.left + alignment.right; } else { frame.size.width = col->size + alignment.left + alignment.right; } } else { frame.size.width = elm->preferred_width + alignment.left + alignment.right; } + frame.size.width -= elm->margin.left + elm->margin.right; if(elm->vfill) { if(elm->rowspan > 1) { int rheight = 0; @@ -271,8 +281,13 @@ if(end_row > nrows) { end_row = nrows; } + int real_span = 0; for(int r=elm->y;r 0) { + rheight += (real_span-1) * rowspacing; } frame.size.height = rheight; } @@ -280,9 +295,10 @@ } else { frame.size.height = elm->preferred_height; } - frame.origin.x = col->pos - (alignment.left+alignment.right)/2; + frame.size.height -= elm->margin.top + elm->margin.bottom; + frame.origin.x = col->pos + elm->margin.left - (alignment.left+alignment.right)/2; //frame.origin.y = viewFrame.size.height - row->pos - frame.size.height + ((alignment.top+alignment.right)/2); - frame.origin.y = viewFrame.size.height - row->pos - frame.size.height; + frame.origin.y = viewFrame.size.height - row->pos - elm->margin.top - frame.size.height; elm->view.frame = frame; } diff -r f8ff8df41713 -r 814d374fb689 ui/cocoa/container.h --- a/ui/cocoa/container.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/cocoa/container.h Sun Oct 05 13:30:19 2025 +0200 @@ -51,6 +51,11 @@ UiBool hfill; UiBool vfill; //int width; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; }; @@ -61,6 +66,11 @@ .vexpand = args->vexpand, \ .hfill = args->hfill, \ .vfill = args->vfill, \ + .margin = args->margin, \ + .margin_left = args->margin_left, \ + .margin_right = args->margin_right, \ + .margin_top = args->margin_top, \ + .margin_bottom = args->margin_bottom, \ .colspan = args->colspan, \ .rowspan = args->rowspan } diff -r f8ff8df41713 -r 814d374fb689 ui/cocoa/container.m --- a/ui/cocoa/container.m Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/cocoa/container.m Sun Oct 05 13:30:19 2025 +0200 @@ -162,7 +162,18 @@ UiContainerX *ctn = obj->container_end; id container = (__bridge id)ctn->container; container.uilayout = *layout; - NSEdgeInsets margin = {0}; // TODO + NSEdgeInsets margin = {0}; + if(layout->margin > 0) { + margin.left = layout->margin; + margin.right = layout->margin; + margin.top = layout->margin; + margin.bottom = layout->margin; + } else { + margin.left = layout->margin_left; + margin.right = layout->margin_right; + margin.top = layout->margin_top; + margin.bottom = layout->margin_bottom; + } [container addView:view margin:margin]; } diff -r f8ff8df41713 -r 814d374fb689 ui/cocoa/toolkit.m --- a/ui/cocoa/toolkit.m Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/cocoa/toolkit.m Sun Oct 05 13:30:19 2025 +0200 @@ -64,7 +64,6 @@ uic_init_global_context(); - uic_docmgr_init(); uic_menu_init(); uic_toolbar_init(); diff -r f8ff8df41713 -r 814d374fb689 ui/ui/button.h --- a/ui/ui/button.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/button.h Sun Oct 05 13:30:19 2025 +0200 @@ -48,6 +48,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; @@ -70,6 +75,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; @@ -95,6 +105,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; diff -r f8ff8df41713 -r 814d374fb689 ui/ui/container.h --- a/ui/ui/container.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/container.h Sun Oct 05 13:30:19 2025 +0200 @@ -65,12 +65,16 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; const char *style_class; - int margin; int spacing; int columnspacing; int rowspacing; @@ -87,6 +91,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; @@ -94,7 +103,6 @@ UiSubContainerType subcontainer; - int margin; int spacing; int columnspacing; int rowspacing; @@ -110,6 +118,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; @@ -124,7 +137,6 @@ UiInteger *value; const char* varname; - int margin; int spacing; int columnspacing; int rowspacing; @@ -153,6 +165,10 @@ const char *name; const char *style_class; int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int spacing; } UiSidebarArgs; @@ -163,12 +179,16 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; const char *style_class; - int margin; int spacing; int columnspacing; int rowspacing; @@ -187,12 +207,16 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; const char *style_class; - int margin; int spacing; int sub_margin; @@ -339,7 +363,7 @@ UIEXPORT int ui_container_finish(UiObject *obj); #define UI_APPLY_LAYOUT1(obj, args) \ - if(args.fill != UI_DEFAULT) ui_layout_fill(obj, args.fill == UI_ON ? 1 : 0 ); \ + if(args.fill) ui_layout_fill(obj, 1); \ if(args.hexpand) ui_layout_hexpand(obj, 1); \ if(args.vexpand) ui_layout_vexpand(obj, 1); \ if(args.hfill) ui_layout_hfill(obj, 1); \ @@ -350,7 +374,7 @@ /*force caller to add ';'*/(void)0 #define UI_APPLY_LAYOUT2(obj, args) \ - if(args->fill != UI_DEFAULT) ui_layout_fill(obj, args->fill == UI_ON ? 1 : 0 ); \ + if(args->fill) ui_layout_fill(obj, 1); \ if(args->hexpand) ui_layout_hexpand(obj, 1); \ if(args->vexpand) ui_layout_vexpand(obj, 1); \ if(args->hfill) ui_layout_hfill(obj, 1); \ diff -r f8ff8df41713 -r 814d374fb689 ui/ui/display.h --- a/ui/ui/display.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/display.h Sun Oct 05 13:30:19 2025 +0200 @@ -56,6 +56,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; @@ -75,6 +80,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; int width; @@ -94,6 +104,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; diff -r f8ff8df41713 -r 814d374fb689 ui/ui/entry.h --- a/ui/ui/entry.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/entry.h Sun Oct 05 13:30:19 2025 +0200 @@ -43,6 +43,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; int width; diff -r f8ff8df41713 -r 814d374fb689 ui/ui/image.h --- a/ui/ui/image.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/image.h Sun Oct 05 13:30:19 2025 +0200 @@ -51,6 +51,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; diff -r f8ff8df41713 -r 814d374fb689 ui/ui/text.h --- a/ui/ui/text.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/text.h Sun Oct 05 13:30:19 2025 +0200 @@ -42,9 +42,15 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; int width; + int height; const char *name; const char *style_class; @@ -63,6 +69,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; int width; @@ -97,6 +108,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; diff -r f8ff8df41713 -r 814d374fb689 ui/ui/tree.h --- a/ui/ui/tree.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/tree.h Sun Oct 05 13:30:19 2025 +0200 @@ -118,6 +118,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; @@ -191,6 +196,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; diff -r f8ff8df41713 -r 814d374fb689 ui/ui/webview.h --- a/ui/ui/webview.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/webview.h Sun Oct 05 13:30:19 2025 +0200 @@ -39,12 +39,17 @@ #define UI_WEBVIEW_OBJECT_TYPE "webview" typedef struct UiWebviewArgs { - UiTri fill; + UiBool fill; UiBool hexpand; UiBool vexpand; UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name; diff -r f8ff8df41713 -r 814d374fb689 ui/ui/widget.h --- a/ui/ui/widget.h Sun Oct 05 12:34:42 2025 +0200 +++ b/ui/ui/widget.h Sun Oct 05 13:30:19 2025 +0200 @@ -41,6 +41,11 @@ UiBool hfill; UiBool vfill; UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; int colspan; int rowspan; const char *name;