--- a/ui/gtk/container.c Sun Dec 07 20:00:33 2025 +0100 +++ b/ui/gtk/container.c Sat Dec 13 15:58:58 2025 +0100 @@ -112,6 +112,21 @@ return add; } +/* -------------------- Custom Container -------------------- */ + +void ui_custom_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout) { + UiCustomContainer *custom = (UiCustomContainer*)ct; + custom->add(custom->obj, ct->widget, widget, custom->userdata); +} + +void ui_custom_container_create(UiObject *obj, UIWIDGET widget, ui_addwidget_func add_child, void *userdata) { + UiCustomContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiCustomContainer)); + container->container.add = ui_custom_container_add; + container->container.widget = widget; + container->add = add_child; + container->userdata = userdata; + uic_object_push_container(obj, (UiContainerX*)container); +} /* -------------------- Box Container -------------------- */ UiContainerX* ui_box_container(UiObject *obj, GtkWidget *box, UiSubContainerType type) { @@ -985,6 +1000,8 @@ GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); hb->centerbox = box; UI_HEADERBAR_SET_TITLE_WIDGET(ct->widget, box); + UI_HEADERBAR_SHOW_TITLE_WIDGET(ct->widget, TRUE); + UI_HEADERBAR_SETTINGS(ct->widget); } BOX_ADD(hb->centerbox, widget); } @@ -1140,6 +1157,7 @@ UiSplitPane* ui_create_splitpane_data(GtkWidget *pane, UiOrientation orientation, int max, int init) { UiSplitPane *ct = malloc(sizeof(UiSplitPane)); + memset(ct, 0, sizeof(UiSplitPane)); ct->current_pane = pane; ct->orientation = orientation; ct->max = max;