diff -r ef01d2c90128 -r 473954dc6b74 ui/gtk/tree.c --- a/ui/gtk/tree.c Mon Jun 17 21:20:58 2024 +0200 +++ b/ui/gtk/tree.c Sun Sep 29 13:32:51 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,19 @@ if(icon->pixbuf) { g_value_set_object(&value, icon->pixbuf); } - - +#endif break; } case UI_ICON_TEXT: case UI_ICON_TEXT_FREE: { + UiIcon *icon = data; +#if GTK_MAJOR_VERSION >= 4 + GValue iconvalue = G_VALUE_INIT; + g_value_init(&iconvalue, G_TYPE_OBJECT); + g_value_set_object(&iconvalue, ui_icon_pixbuf(icon)); + 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,6 +128,7 @@ 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); @@ -205,12 +214,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 +231,7 @@ return scroll_area; } +/* static void drag_begin(GtkWidget *widget, GdkDragContext *context, gpointer udata) { printf("drag begin\n"); @@ -236,13 +246,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 +369,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 +388,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 +411,7 @@ return targets; } +/* static GtkTargetEntry* targetstr2gtktargets(char **str, int nelm) { GtkTargetEntry *targets = calloc(nelm, sizeof(GtkTargetEntry)); for(int i=0;i