ui/gtk/list.c

changeset 801
e096c441e874
parent 781
b15ada8bdd8f
child 809
f5ddce392617
--- 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;

mercurial