--- a/ui/gtk/list.c Sun Oct 05 13:30:19 2025 +0200 +++ b/ui/gtk/list.c Sun Oct 05 18:13:15 2025 +0200 @@ -435,8 +435,6 @@ } UIWIDGET ui_listview_create(UiObject *obj, UiListArgs *args) { - UiObject* current = uic_current_obj(obj); - // to simplify things and share code with ui_table_create, we also // use a UiModel for the listview UiModel *model = ui_model(obj->ctx, UI_STRING, "", -1); @@ -464,7 +462,7 @@ GtkSelectionModel *selection_model = create_selection_model(listview, ls, args->multiselection); GtkWidget *view = gtk_list_view_new(GTK_SELECTION_MODEL(selection_model), factory); - UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->list, args->varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); // init listview listview->widget = view; @@ -513,19 +511,14 @@ GTK_POLICY_AUTOMATIC); // GTK_POLICY_ALWAYS SCROLLEDWINDOW_SET_CHILD(scroll_area, view); - UI_APPLY_LAYOUT2(current, args); - current->container->add(current->container, scroll_area); - - // ct->current should point to view, not scroll_area, to make it possible - // to add a context menu - current->container->current = view; + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; + UiLayout layout = UI_ARGS2LAYOUT(args); + ct->add(ct, scroll_area, &layout); return scroll_area; } UIWIDGET ui_combobox_create(UiObject *obj, UiListArgs *args) { - UiObject* current = uic_current_obj(obj); - // to simplify things and share code with ui_tableview_create, we also // use a UiModel for the listview UiModel *model = ui_model(obj->ctx, UI_STRING, "", -1); @@ -554,7 +547,7 @@ GtkWidget *view = gtk_drop_down_new(G_LIST_MODEL(ls), NULL); gtk_drop_down_set_factory(GTK_DROP_DOWN(view), factory); - UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->list, args->varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); // init listview listview->widget = view; @@ -589,8 +582,10 @@ } // add widget to parent - UI_APPLY_LAYOUT2(current, args); - current->container->add(current->container, view); + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; + UiLayout layout = UI_ARGS2LAYOUT(args); + ct->add(ct, view, &layout); + return view; } @@ -604,8 +599,6 @@ } UIWIDGET ui_table_create(UiObject *obj, UiListArgs *args) { - UiObject* current = uic_current_obj(obj); - GListStore *ls = g_list_store_new(G_TYPE_OBJECT); //g_list_store_append(ls, v1); @@ -616,7 +609,7 @@ GtkSelectionModel *selection_model = create_selection_model(tableview, ls, args->multiselection); GtkWidget *view = gtk_column_view_new(GTK_SELECTION_MODEL(selection_model)); - UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->list, args->varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); // init tableview tableview->widget = view; @@ -697,12 +690,9 @@ GTK_POLICY_AUTOMATIC); // GTK_POLICY_ALWAYS SCROLLEDWINDOW_SET_CHILD(scroll_area, view); - UI_APPLY_LAYOUT2(current, args); - current->container->add(current->container, scroll_area); - - // ct->current should point to view, not scroll_area, to make it possible - // to add a context menu - current->container->current = view; + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; + UiLayout layout = UI_ARGS2LAYOUT(args); + ct->add(ct, scroll_area, &layout); return scroll_area; } @@ -1126,8 +1116,6 @@ UIWIDGET ui_listview_create(UiObject *obj, UiListArgs *args) { - UiObject* current = uic_current_obj(obj); - // create treeview GtkWidget *view = gtk_tree_view_new(); ui_set_name_and_style(view, args->name, args->style_class); @@ -1161,7 +1149,7 @@ G_CALLBACK(ui_listview_destroy), listview); - UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->list, args->varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); // init listview listview->widget = view; @@ -1221,12 +1209,9 @@ GTK_POLICY_AUTOMATIC); // GTK_POLICY_ALWAYS SCROLLEDWINDOW_SET_CHILD(scroll_area, view); - UI_APPLY_LAYOUT2(current, args); - current->container->add(current->container, scroll_area); - - // ct->current should point to view, not scroll_area, to make it possible - // to add a context menu - current->container->current = view; + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; + UiLayout layout = UI_ARGS2LAYOUT(args); + ct->add(ct, scroll_area, &layout); return scroll_area; } @@ -1243,8 +1228,6 @@ } UIWIDGET ui_table_create(UiObject *obj, UiListArgs *args) { - UiObject* current = uic_current_obj(obj); - // create treeview GtkWidget *view = gtk_tree_view_new(); @@ -1343,7 +1326,7 @@ #endif - UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->list, args->varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); //g_signal_connect(view, "drag-begin", G_CALLBACK(drag_begin), NULL); //g_signal_connect(view, "drag-end", G_CALLBACK(drag_end), NULL); @@ -1425,12 +1408,9 @@ #endif } - UI_APPLY_LAYOUT2(current, args); - current->container->add(current->container, scroll_area); - - // ct->current should point to view, not scroll_area, to make it possible - // to add a context menu - current->container->current = view; + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; + UiLayout layout = UI_ARGS2LAYOUT(args); + ct->add(ct, scroll_area, &layout); return scroll_area; } @@ -1476,15 +1456,13 @@ /* --------------------------- ComboBox --------------------------- */ UIWIDGET ui_combobox_create(UiObject *obj, UiListArgs *args) { - UiObject* current = uic_current_obj(obj); - GtkWidget *combobox = gtk_combo_box_new(); ui_set_name_and_style(combobox, args->name, args->style_class); ui_set_widget_groups(obj->ctx, combobox, args->groups); - UI_APPLY_LAYOUT2(current, args); - current->container->add(current->container, combobox); - current->container->current = combobox; + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; + UiLayout layout = UI_ARGS2LAYOUT(args); + ct->add(ct, combobox, &layout); UiListView *listview = create_listview(obj, args); listview->widget = combobox; @@ -1496,7 +1474,7 @@ G_CALLBACK(ui_listview_destroy), listview); - UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->list, args->varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); UiList *list = var ? var->value : NULL; GtkListStore *listmodel = create_list_store(listview, list); if(var) { @@ -2110,8 +2088,6 @@ } UIEXPORT UIWIDGET ui_sourcelist_create(UiObject *obj, UiSourceListArgs *args) { - UiObject* current = uic_current_obj(obj); - #ifdef UI_GTK3 GtkWidget *listbox = g_object_new(ui_sidebar_list_box_get_type(), NULL); #else @@ -2130,8 +2106,9 @@ ui_set_name_and_style(listbox, args->name, args->style_class); ui_set_widget_groups(obj->ctx, listbox, args->groups); - UI_APPLY_LAYOUT2(current, args); - current->container->add(current->container, scroll_area); + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; + UiLayout layout = UI_ARGS2LAYOUT(args); + ct->add(ct, scroll_area, &layout); UiListBox *uilistbox = malloc(sizeof(UiListBox)); uilistbox->obj = obj; @@ -2164,7 +2141,7 @@ // fill items ui_listbox_update(uilistbox, 0, cxListSize(uilistbox->sublists)); } else { - UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->dynamic_sublist, args->varname, UI_VAR_LIST); + UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->dynamic_sublist, args->varname, UI_VAR_LIST); if(var) { UiList *list = var->value; list->obj = uilistbox;