ui/gtk/tree.c

branch
newapi
changeset 299
48763a9d19a7
parent 291
302a150ff5e4
--- a/ui/gtk/tree.c	Mon Sep 16 22:09:32 2024 +0200
+++ b/ui/gtk/tree.c	Tue Sep 17 22:00:07 2024 +0200
@@ -95,6 +95,9 @@
                     case UI_ICON: {
                         g_value_init(&value, G_TYPE_OBJECT);
                         UiIcon *icon = data;
+#if GTK_MAJOR_VERSION >= 4
+                        g_value_set_object(&value, icon->info); // TODO: does this work?
+#else
                         if(!icon->pixbuf && icon->info) {
                             GError *error = NULL;
                             GdkPixbuf *pixbuf = gtk_icon_info_load_icon(icon->info, &error);
@@ -104,14 +107,20 @@
                         if(icon->pixbuf) {
                             g_value_set_object(&value, icon->pixbuf);
                         }
-
-                        
+#endif
                         break;
                     }
                     case UI_ICON_TEXT:
                     case UI_ICON_TEXT_FREE: {
+                        UiIcon *icon = data;
+                        char *str = model->getvalue(elm, c);
+#if GTK_MAJOR_VERSION >= 4
+                        GValue iconvalue = G_VALUE_INIT;
+                        g_value_init(&iconvalue, G_TYPE_OBJECT);
+                        g_value_set_object(&iconvalue, icon->info);
+                        gtk_list_store_set_value(store, &iter, c, &iconvalue);
+#else
                         GValue pixbufvalue = G_VALUE_INIT;
-                        UiIcon *icon = data;
                         if(!icon->pixbuf && icon->info) {
                             GError *error = NULL;
                             GdkPixbuf *pixbuf = gtk_icon_info_load_icon(icon->info, &error);
@@ -120,9 +129,8 @@
                         g_value_init(&pixbufvalue, G_TYPE_OBJECT);
                         g_value_set_object(&pixbufvalue, icon->pixbuf);
                         gtk_list_store_set_value(store, &iter, c, &pixbufvalue);
+#endif
                         c++;
-                        
-                        char *str = model->getvalue(elm, c);
                         g_value_init(&value, G_TYPE_STRING);
                         g_value_set_string(&value, str);
                         if(model->types[i] == UI_ICON_TEXT_FREE) {
@@ -205,12 +213,12 @@
     }
     
     // add widget to the current container
-    GtkWidget *scroll_area = gtk_scrolled_window_new(NULL, NULL);
+    GtkWidget *scroll_area = SCROLLEDWINDOW_NEW();
     gtk_scrolled_window_set_policy(
             GTK_SCROLLED_WINDOW(scroll_area),
             GTK_POLICY_AUTOMATIC,
             GTK_POLICY_AUTOMATIC); // GTK_POLICY_ALWAYS  
-    gtk_container_add(GTK_CONTAINER(scroll_area), view);
+    SCROLLEDWINDOW_SET_CHILD(scroll_area, view);
     
     UI_APPLY_LAYOUT1(current, args);
     current->container->add(current->container, scroll_area, FALSE);
@@ -222,6 +230,7 @@
     return scroll_area;
 }
 
+/*
 static void drag_begin(GtkWidget *widget, GdkDragContext *context, gpointer udata) {
     printf("drag begin\n");
     
@@ -236,13 +245,16 @@
     printf("drag end\n");
     
 }
+*/
 
+/*
 static GtkTargetEntry targetentries[] =
     {
       { "STRING",        0, 0 },
       { "text/plain",    0, 1 },
       { "text/uri-list", 0, 2 },
     };
+*/
 
 UIWIDGET ui_table_create(UiObject *obj, UiListArgs args) {
     UiObject* current = uic_current_obj(obj);
@@ -356,12 +368,12 @@
     gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
     
     // add widget to the current container
-    GtkWidget *scroll_area = gtk_scrolled_window_new(NULL, NULL);
+    GtkWidget *scroll_area = SCROLLEDWINDOW_NEW();
     gtk_scrolled_window_set_policy(
             GTK_SCROLLED_WINDOW(scroll_area),
             GTK_POLICY_AUTOMATIC,
             GTK_POLICY_AUTOMATIC); // GTK_POLICY_ALWAYS  
-    gtk_container_add(GTK_CONTAINER(scroll_area), view);
+    SCROLLEDWINDOW_SET_CHILD(scroll_area, view);
     
     UI_APPLY_LAYOUT1(current, args);
     current->container->add(current->container, scroll_area, FALSE);
@@ -375,11 +387,7 @@
 
 
 GtkWidget* ui_get_tree_widget(UIWIDGET widget) {
-    GList *c = gtk_container_get_children(GTK_CONTAINER(widget));
-    if(c) {
-        return c->data;
-    }
-    return NULL;
+    return SCROLLEDWINDOW_GET_CHILD(widget);
 }
 
 static char** targets2array(char *target0, va_list ap, int *nelm) {
@@ -402,6 +410,7 @@
     return targets;
 }
 
+/*
 static GtkTargetEntry* targetstr2gtktargets(char **str, int nelm) {
     GtkTargetEntry *targets = calloc(nelm, sizeof(GtkTargetEntry));
     for(int i=0;i<nelm;i++) {
@@ -409,6 +418,7 @@
     }
     return targets;
 }
+*/
 
 void ui_table_dragsource(UIWIDGET tablewidget, int actions, char *target0, ...) { 
     va_list ap;

mercurial