Mon, 06 Oct 2025 11:11:30 +0200
readd frame subcontainer arg (GTK)
| application/main.c | file | annotate | diff | comparison | revisions | |
| ui/gtk/container.c | file | annotate | diff | comparison | revisions | |
| ui/ui/container.h | file | annotate | diff | comparison | revisions |
--- a/application/main.c Sun Oct 05 19:06:34 2025 +0200 +++ b/application/main.c Mon Oct 06 11:11:30 2025 +0200 @@ -716,14 +716,14 @@ ui_label(obj, .label = "Test"); ui_button(obj, .label = "Button"); } - + ui_frame(obj, .label = "Frame", .margin = 10, .spacing = 10) { ui_label(obj, .label = "Title", .style = UI_LABEL_STYLE_TITLE); ui_label(obj, .label = "Sub-Title", .style = UI_LABEL_STYLE_SUBTITLE); ui_label(obj, .label = "Dim Label", .style = UI_LABEL_STYLE_DIM); ui_label(obj, .label = "No Style"); } - + for(int i=0;i<100;i++) { char labelstr[32]; snprintf(labelstr, 32, "button %d", i);
--- a/ui/gtk/container.c Sun Oct 05 19:06:34 2025 +0200 +++ b/ui/gtk/container.c Mon Oct 06 11:11:30 2025 +0200 @@ -398,6 +398,30 @@ return widget; } +static void frame_create_subcontainer(UiObject *obj, UiFrameArgs *args) { + switch(args->subcontainer) { + default: + case UI_CONTAINER_VBOX: { + UiContainerArgs sub_args = { .spacing = args->spacing, .margin = args->padding }; + ui_vbox_create(obj, &sub_args); + break; + } + case UI_CONTAINER_HBOX: { + UiContainerArgs sub_args = { .spacing = args->spacing, .margin = args->padding }; + ui_hbox_create(obj, &sub_args); + break; + } + case UI_CONTAINER_GRID: { + UiContainerArgs sub_args = { .columnspacing = args->columnspacing, .rowspacing = args->rowspacing, .margin = args->padding }; + ui_grid_create(obj, &sub_args); + break; + } + case UI_CONTAINER_NO_SUB: { + break; // NOOP + } + } +} + UIWIDGET ui_frame_create(UiObject *obj, UiFrameArgs *args) { UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); @@ -405,8 +429,18 @@ GtkWidget *frame = gtk_frame_new(args->label); ct->add(ct, frame, &layout); - UiContainerX *container = ui_frame_container(obj, frame); - uic_object_push_container(obj, container); + GtkWidget *sub = ui_subcontainer_create( + args->subcontainer, + obj, args->spacing, + args->columnspacing, + args->rowspacing, + args->padding); + if(sub) { + FRAME_SET_CHILD(frame, sub); + } else { + UiContainerX *container = ui_frame_container(obj, frame); + uic_object_push_container(obj, container); + } return frame; } @@ -419,8 +453,18 @@ gtk_expander_set_expanded(GTK_EXPANDER(expander), args->isexpanded); ct->add(ct, expander, &layout); - UiContainerX *container = ui_expander_container(obj, expander); - uic_object_push_container(obj, container); + GtkWidget *sub = ui_subcontainer_create( + args->subcontainer, + obj, args->spacing, + args->columnspacing, + args->rowspacing, + args->padding); + if(sub) { + EXPANDER_SET_CHILD(expander, sub); + } else { + UiContainerX *container = ui_expander_container(obj, expander); + uic_object_push_container(obj, container); + } return expander; } @@ -434,8 +478,18 @@ ui_set_name_and_style(sw, args->name, args->style_class); ct->add(ct, sw, &layout); - UiContainerX *container = ui_scrolledwindow_container(obj, sw); - uic_object_push_container(obj, container); + GtkWidget *sub = ui_subcontainer_create( + args->subcontainer, + obj, args->spacing, + args->columnspacing, + args->rowspacing, + args->padding); + if(sub) { + SCROLLEDWINDOW_SET_CHILD(sw, sub); + } else { + UiContainerX *container = ui_scrolledwindow_container(obj, sw); + uic_object_push_container(obj, container); + } return sw; }