GTK4 and Drag&Drop

This program works perfectly when I drag the first data into the window. But if I do it multiple times, the following error occurs:

./main
Data: /home/tux/Desktop/sound

(main:12945): Gdk-CRITICAL **: 15:42:29.018: gdk_drop_set_actions: assertion 'priv->state == GDK_DROP_STATE_NONE' failed
Data: /home/tux/Desktop/sound

(main:12945): Gdk-CRITICAL **: 15:42:41.471: gdk_drop_set_actions: assertion 'priv->state == GDK_DROP_STATE_NONE' failed
'/home/tux/Desktop/sound'

What’s going wrong?


// gcc -o main main.c `pkg-config --cflags --libs gtk4`

#include <gtk/gtk.h>

static gboolean on_drop(GtkDropTarget *drop_target, const GValue *value, double x, double y, gpointer user_data) {
    if (G_VALUE_HOLDS(value, G_TYPE_STRING)) {
        const char *uri_list = g_value_get_string(value);
        g_print("Empfangene URIs:\n%s\n", uri_list);

        return TRUE;
    }
    return FALSE;
}

static void on_activate(GtkApplication *app, gpointer user_data) {
    GtkWidget *window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "Drag-and-Drop Example");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);

    GtkDropTarget *drop_target = gtk_drop_target_new(G_TYPE_STRING, GDK_ACTION_COPY);
    g_signal_connect(drop_target, "drop", G_CALLBACK(on_drop), NULL);
    gtk_widget_add_controller(GTK_WIDGET(window), GTK_EVENT_CONTROLLER(drop_target));

    gtk_window_present(GTK_WINDOW(window));
}

int main(int argc, char *argv[]) {
    GtkApplication *app = gtk_application_new("com.example.draganddrop", G_APPLICATION_DEFAULT_FLAGS);
    g_signal_connect(app, "activate", G_CALLBACK(on_activate), NULL);

    int status = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return status;
}