dragicon: Provide default icons for more types
authorMatthias Clasen <mclasen@redhat.com>
Mon, 13 Dec 2021 01:43:50 +0000 (20:43 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 13 Dec 2021 02:29:36 +0000 (21:29 -0500)
Provide default icons for paintables and files.
This is easy to do, and makes sense.

fixup drag icon

gtk/gtkdragicon.c

index e4deb8adf71a674e4fbbb1b6d49f2eb030547951..02c20d42e5649e03604d7a0f2d6f95bd00238f3c 100644 (file)
@@ -532,6 +532,15 @@ gtk_drag_icon_create_widget_for_value (const GValue *value)
     {
       return gtk_label_new (g_value_get_string (value));
     }
+  else if (G_VALUE_HOLDS (value, GDK_TYPE_PAINTABLE))
+    {
+      GtkWidget *image;
+
+      image = gtk_image_new_from_paintable (g_value_get_object (value));
+      gtk_widget_add_css_class (image, "large-icons");
+
+      return image;
+    }
   else if (G_VALUE_HOLDS (value, GDK_TYPE_RGBA))
     {
       GtkWidget *swatch;
@@ -541,6 +550,18 @@ gtk_drag_icon_create_widget_for_value (const GValue *value)
 
       return swatch;
     }
+  else if (G_VALUE_HOLDS (value, G_TYPE_FILE))
+    {
+      GFileInfo *info;
+      GtkWidget *image;
+
+      info = g_file_query_info (G_FILE (g_value_get_object (value)), "standard::icon", 0, NULL, NULL);
+      image = gtk_image_new_from_gicon (g_file_info_get_icon (info));
+      gtk_widget_add_css_class (image, "large-icons");
+      g_object_unref (info);
+
+      return image;
+    }
   else if (G_VALUE_HOLDS (value, GTK_TYPE_TEXT_BUFFER))
     {
       GtkTextBuffer *buffer = g_value_get_object (value);