summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2022-02-11 14:35:55 +0100
committerOndrej Holy <oholy@redhat.com>2022-02-11 14:59:48 +0100
commitf567b2856c445c32dc98bc7901f5876d70fd875d (patch)
tree7ebb9c34a931657898525b5f49781dc1c63e114e
parent536ba0f3842be4d0cf9d44d340c06bc6aa6f149d (diff)
downloadnautilus-f567b2856c445c32dc98bc7901f5876d70fd875d.tar.gz
Revert "icon-info: Remove unused or single-use API"
This reverts commit 88b3e193476660a8dcbf760acf0cbd86d900fe0a.
-rw-r--r--src/nautilus-files-view.c12
-rw-r--r--src/nautilus-icon-info.c65
-rw-r--r--src/nautilus-icon-info.h9
-rw-r--r--src/nautilus-properties-window.c6
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)