diff options
author | Ondrej Holy <oholy@redhat.com> | 2022-02-11 14:35:55 +0100 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2022-02-11 14:59:48 +0100 |
commit | f567b2856c445c32dc98bc7901f5876d70fd875d (patch) | |
tree | 7ebb9c34a931657898525b5f49781dc1c63e114e | |
parent | 536ba0f3842be4d0cf9d44d340c06bc6aa6f149d (diff) | |
download | nautilus-f567b2856c445c32dc98bc7901f5876d70fd875d.tar.gz |
Revert "icon-info: Remove unused or single-use API"
This reverts commit 88b3e193476660a8dcbf760acf0cbd86d900fe0a.
-rw-r--r-- | src/nautilus-files-view.c | 12 | ||||
-rw-r--r-- | src/nautilus-icon-info.c | 65 | ||||
-rw-r--r-- | src/nautilus-icon-info.h | 9 | ||||
-rw-r--r-- | src/nautilus-properties-window.c | 6 |
4 files changed, 86 insertions, 6 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 29d5051de..956f7328b 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -4864,9 +4864,17 @@ static GdkPixbuf * get_menu_icon_for_file (NautilusFile *file, GtkWidget *widget) { - int scale = gtk_widget_get_scale_factor (widget); + NautilusIconInfo *info; + GdkPixbuf *pixbuf; + int scale; - return nautilus_file_get_icon_pixbuf (file, 16, scale, 0); + scale = gtk_widget_get_scale_factor (widget); + + info = nautilus_file_get_icon (file, 16, scale, 0); + pixbuf = nautilus_icon_info_get_pixbuf_nodefault_at_size (info, NAUTILUS_LIST_ICON_SIZE_SMALL); + g_object_unref (info); + + return pixbuf; } static GList * diff --git a/src/nautilus-icon-info.c b/src/nautilus-icon-info.c index fee560806..45e66c570 100644 --- a/src/nautilus-icon-info.c +++ b/src/nautilus-icon-info.c @@ -439,7 +439,38 @@ nautilus_icon_info_lookup (GIcon *icon, } } -static GdkPixbuf * +NautilusIconInfo * +nautilus_icon_info_lookup_from_name (const char *name, + int size, + int scale) +{ + GIcon *icon; + NautilusIconInfo *info; + + icon = g_themed_icon_new (name); + info = nautilus_icon_info_lookup (icon, size, scale); + g_object_unref (icon); + return info; +} + +NautilusIconInfo * +nautilus_icon_info_lookup_from_path (const char *path, + int size, + int scale) +{ + GFile *icon_file; + GIcon *icon; + NautilusIconInfo *info; + + icon_file = g_file_new_for_path (path); + icon = g_file_icon_new (icon_file); + info = nautilus_icon_info_lookup (icon, size, scale); + g_object_unref (icon); + g_object_unref (icon_file); + return info; +} + +GdkPixbuf * nautilus_icon_info_get_pixbuf_nodefault (NautilusIconInfo *icon) { GdkPixbuf *res; @@ -481,6 +512,38 @@ nautilus_icon_info_get_pixbuf (NautilusIconInfo *icon) } GdkPixbuf * +nautilus_icon_info_get_pixbuf_nodefault_at_size (NautilusIconInfo *icon, + gsize forced_size) +{ + GdkPixbuf *pixbuf, *scaled_pixbuf; + int w, h, s; + double scale; + + pixbuf = nautilus_icon_info_get_pixbuf_nodefault (icon); + + if (pixbuf == NULL) + { + return NULL; + } + + w = gdk_pixbuf_get_width (pixbuf) / icon->orig_scale; + h = gdk_pixbuf_get_height (pixbuf) / icon->orig_scale; + s = MAX (w, h); + if (s == forced_size) + { + return pixbuf; + } + + scale = (double) forced_size / s; + scaled_pixbuf = gdk_pixbuf_scale_simple (pixbuf, + w * scale, h * scale, + GDK_INTERP_BILINEAR); + g_object_unref (pixbuf); + return scaled_pixbuf; +} + + +GdkPixbuf * nautilus_icon_info_get_pixbuf_at_size (NautilusIconInfo *icon, gsize forced_size) { diff --git a/src/nautilus-icon-info.h b/src/nautilus-icon-info.h index 518db76a9..ed321dbfa 100644 --- a/src/nautilus-icon-info.h +++ b/src/nautilus-icon-info.h @@ -22,8 +22,17 @@ NautilusIconInfo * nautilus_icon_info_new_for_pixbuf (GdkPixbuf NautilusIconInfo * nautilus_icon_info_lookup (GIcon *icon, int size, int scale); +NautilusIconInfo * nautilus_icon_info_lookup_from_name (const char *name, + int size, + int scale); +NautilusIconInfo * nautilus_icon_info_lookup_from_path (const char *path, + int size, + int scale); gboolean nautilus_icon_info_is_fallback (NautilusIconInfo *icon); GdkPixbuf * nautilus_icon_info_get_pixbuf (NautilusIconInfo *icon); +GdkPixbuf * nautilus_icon_info_get_pixbuf_nodefault (NautilusIconInfo *icon); +GdkPixbuf * nautilus_icon_info_get_pixbuf_nodefault_at_size (NautilusIconInfo *icon, + gsize forced_size); GdkPixbuf * nautilus_icon_info_get_pixbuf_at_size (NautilusIconInfo *icon, gsize forced_size); const char * nautilus_icon_info_get_used_name (NautilusIconInfo *icon); diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c index 6a233370f..16fb23e40 100644 --- a/src/nautilus-properties-window.c +++ b/src/nautilus-properties-window.c @@ -432,9 +432,9 @@ get_image_for_properties_window (NautilusPropertiesWindow *self, if (!icon) { - g_autoptr (GIcon) gicon = g_themed_icon_new ("text-x-generic"); - - icon = nautilus_icon_info_lookup (gicon, NAUTILUS_GRID_ICON_SIZE_STANDARD, icon_scale); + icon = nautilus_icon_info_lookup_from_name ("text-x-generic", + NAUTILUS_GRID_ICON_SIZE_STANDARD, + icon_scale); } if (icon_name != NULL) |