--- a/ui/gtk/window.c Sat Oct 04 14:54:25 2025 +0200 +++ b/ui/gtk/window.c Sun Oct 19 21:20:08 2025 +0200 @@ -372,7 +372,8 @@ gtk_container_add(GTK_CONTAINER(frame), content_box); obj->container = ui_box_container(obj, content_box); */ - obj->container = ui_box_container(obj, content_box, UI_CONTAINER_VBOX); + UiContainerX *container = ui_box_container(obj, content_box, UI_CONTAINER_VBOX); + uic_object_push_container(obj, container); nwindows++; return obj; @@ -434,6 +435,22 @@ splitview_window_use_prop = enable; } +UIEXPORT void ui_splitview_window_set_visible(UiObject *obj, int pane, UiBool visible) { + GtkWidget *panel = NULL; + if(pane == 0) { + panel = g_object_get_data(G_OBJECT(obj->widget), "ui_left_panel"); + } else if(pane == 1) { + panel = g_object_get_data(G_OBJECT(obj->widget), "ui_right_panel"); + } + + if(panel == NULL) { + fprintf(stderr, "Error: obj is not a splitview window or invalid pane %d specified\n", pane); + return; + } + + gtk_widget_set_visible(panel, visible); +} + #ifdef UI_LIBADWAITA static void dialog_response(AdwAlertDialog *self, gchar *response, UiEventData *data) { @@ -932,7 +949,8 @@ #endif GtkWidget *content_vbox = ui_gtk_vbox_new(0); - obj->container = ui_box_container(obj, content_vbox, UI_CONTAINER_VBOX); + UiContainerX *container = ui_box_container(obj, content_vbox, UI_CONTAINER_VBOX); + uic_object_push_container(obj, container); if(args->lbutton1 || args->lbutton2 || args->rbutton3 || args->rbutton4) { #if GTK_CHECK_VERSION(3, 10, 0) if(args->titlebar_buttons != UI_OFF) { @@ -943,7 +961,7 @@ } if(args->lbutton1) { - GtkWidget *button = ui_create_button(obj, args->lbutton1, NULL, args->onclick, args->onclickdata, 1, args->default_button == 1); + GtkWidget *button = ui_create_button(obj, args->lbutton1, NULL, NULL/*tooltip*/, args->onclick, args->onclickdata, 1, args->default_button == 1); gtk_header_bar_pack_start(GTK_HEADER_BAR(headerbar), button); if(args->default_button == 1) { WIDGET_ADD_CSS_CLASS(button, "suggested-action"); @@ -951,7 +969,7 @@ } } if(args->lbutton2) { - GtkWidget *button = ui_create_button(obj, args->lbutton2, NULL, args->onclick, args->onclickdata, 2, args->default_button == 2); + GtkWidget *button = ui_create_button(obj, args->lbutton2, NULL, NULL/*tooltip*/, args->onclick, args->onclickdata, 2, args->default_button == 2); gtk_header_bar_pack_start(GTK_HEADER_BAR(headerbar), button); if(args->default_button == 2) { WIDGET_ADD_CSS_CLASS(button, "suggested-action"); @@ -960,7 +978,7 @@ } if(args->rbutton4) { - GtkWidget *button = ui_create_button(obj, args->rbutton4, NULL, args->onclick, args->onclickdata, 4, args->default_button == 4); + GtkWidget *button = ui_create_button(obj, args->rbutton4, NULL, NULL/*tooltip*/, args->onclick, args->onclickdata, 4, args->default_button == 4); gtk_header_bar_pack_end(GTK_HEADER_BAR(headerbar), button); if(args->default_button == 4) { WIDGET_ADD_CSS_CLASS(button, "suggested-action"); @@ -968,7 +986,7 @@ } } if(args->rbutton3) { - GtkWidget *button = ui_create_button(obj, args->rbutton3, NULL, args->onclick, args->onclickdata, 3, args->default_button == 3); + GtkWidget *button = ui_create_button(obj, args->rbutton3, NULL, NULL/*tooltip*/, args->onclick, args->onclickdata, 3, args->default_button == 3); gtk_header_bar_pack_end(GTK_HEADER_BAR(headerbar), button); if(args->default_button == 3) { WIDGET_ADD_CSS_CLASS(button, "suggested-action"); @@ -985,11 +1003,11 @@ GtkWidget *separator = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL); GtkWidget *grid = ui_create_grid_widget(10, 10); - GtkWidget *widget = ui_box_set_margin(grid, 16); + GtkWidget *widget = ui_gtk_set_margin(grid, 16, 0, 0, 0, 0); gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE); if(args->lbutton1) { - GtkWidget *button = ui_create_button(obj, args->lbutton1, NULL, args->onclick, args->onclickdata, 1, args->default_button == 1); + GtkWidget *button = ui_create_button(obj, args->lbutton1, NULL, NULL/*tooltip*/, args->onclick, args->onclickdata, 1, args->default_button == 1); gtk_grid_attach(GTK_GRID(grid), button, 0, 0, 1, 1); if(args->default_button == 1) { WIDGET_ADD_CSS_CLASS(button, "suggested-action"); @@ -997,7 +1015,7 @@ } } if(args->lbutton2) { - GtkWidget *button = ui_create_button(obj, args->lbutton2, NULL, args->onclick, args->onclickdata, 2, args->default_button == 2); + GtkWidget *button = ui_create_button(obj, args->lbutton2, NULL, NULL/*tooltip*/, args->onclick, args->onclickdata, 2, args->default_button == 2); gtk_grid_attach(GTK_GRID(grid), button, 1, 0, 1, 1); if(args->default_button == 2) { WIDGET_ADD_CSS_CLASS(button, "suggested-action"); @@ -1008,7 +1026,7 @@ gtk_widget_set_hexpand(space, TRUE); gtk_grid_attach(GTK_GRID(grid), space, 2, 0, 1, 1); if(args->rbutton3) { - GtkWidget *button = ui_create_button(obj, args->rbutton3, NULL, args->onclick, args->onclickdata, 3, args->default_button == 3); + GtkWidget *button = ui_create_button(obj, args->rbutton3, NULL, NULL/*tooltip*/, args->onclick, args->onclickdata, 3, args->default_button == 3); gtk_grid_attach(GTK_GRID(grid), button, 3, 0, 1, 1); if(args->default_button == 3) { WIDGET_ADD_CSS_CLASS(button, "suggested-action"); @@ -1016,7 +1034,7 @@ } } if(args->rbutton4) { - GtkWidget *button = ui_create_button(obj, args->rbutton4, NULL, args->onclick, args->onclickdata, 4, args->default_button == 4); + GtkWidget *button = ui_create_button(obj, args->rbutton4, NULL, NULL/*tooltip*/, args->onclick, args->onclickdata, 4, args->default_button == 4); gtk_grid_attach(GTK_GRID(grid), button, 4, 0, 1, 1); if(args->default_button == 4) { WIDGET_ADD_CSS_CLASS(button, "suggested-action");