summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2008-10-23 10:07:45 +0000
committerAlexander Larsson <alexl@src.gnome.org>2008-10-23 10:07:45 +0000
commit151ad87355a763e45a7e222f8e9df7402a364517 (patch)
tree7526edf8fbfb71095ab85c1b7261f417a91bc311
parentc14cba60ebc2e579f812650fe418337f1c96aceb (diff)
downloadnautilus-151ad87355a763e45a7e222f8e9df7402a364517.tar.gz
Merged from trunk:
2008-10-23 Alexander Larsson <alexl@redhat.com> Merged from trunk: * libnautilus-private/nautilus-file.c: * libnautilus-private/nautilus-icon-info.[ch]: Manually fall back to default fallback icon for files if not found. Goes with the corresponding glib/gvfs change to not add the fallback icon to the end of files icons. (#528320) svn path=/branches/gnome-2-24/; revision=14760
-rw-r--r--ChangeLog11
-rw-r--r--libnautilus-private/nautilus-file.c25
-rw-r--r--libnautilus-private/nautilus-icon-info.c6
-rw-r--r--libnautilus-private/nautilus-icon-info.h1
4 files changed, 41 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 827e5c065..549cac444 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-10-23 Alexander Larsson <alexl@redhat.com>
+
+ Merged from trunk:
+
+ * libnautilus-private/nautilus-file.c:
+ * libnautilus-private/nautilus-icon-info.[ch]:
+ Manually fall back to default fallback icon for
+ files if not found. Goes with the corresponding
+ glib/gvfs change to not add the fallback icon to
+ the end of files icons. (#528320)
+
2008-10-22 Alexander Larsson <alexl@redhat.com>
Merged from trunk:
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 5dc7e7bcf..2959f808c 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -3482,6 +3482,23 @@ nautilus_file_get_gicon (NautilusFile *file,
return g_themed_icon_new ("text-x-generic");
}
+static GIcon *
+get_default_file_icon (NautilusFileIconFlags flags)
+{
+ static GIcon *fallback_icon = NULL;
+ static GIcon *fallback_icon_preview = NULL;
+ if (fallback_icon == NULL) {
+ fallback_icon = g_themed_icon_new ("text-x-generic");
+ fallback_icon_preview = g_themed_icon_new ("text-x-preview");
+ g_themed_icon_append_name (G_THEMED_ICON (fallback_icon_preview), "text-x-generic");
+ }
+ if (flags & NAUTILUS_FILE_ICON_FLAGS_EMBEDDING_TEXT) {
+ return fallback_icon_preview;
+ } else {
+ return fallback_icon;
+ }
+}
+
NautilusIconInfo *
nautilus_file_get_icon (NautilusFile *file,
int size,
@@ -3573,11 +3590,15 @@ nautilus_file_get_icon (NautilusFile *file,
if (gicon) {
icon = nautilus_icon_info_lookup (gicon, size);
+ if (nautilus_icon_info_is_fallback (icon)) {
+ g_object_unref (icon);
+ icon = nautilus_icon_info_lookup (get_default_file_icon (flags), size);
+ }
g_object_unref (gicon);
return icon;
+ } else {
+ return nautilus_icon_info_lookup (get_default_file_icon (flags), size);
}
-
- return nautilus_icon_info_new_for_pixbuf (NULL);
}
GdkPixbuf *
diff --git a/libnautilus-private/nautilus-icon-info.c b/libnautilus-private/nautilus-icon-info.c
index c53696705..802c74582 100644
--- a/libnautilus-private/nautilus-icon-info.c
+++ b/libnautilus-private/nautilus-icon-info.c
@@ -59,6 +59,12 @@ nautilus_icon_info_init (NautilusIconInfo *icon)
icon->sole_owner = TRUE;
}
+gboolean
+nautilus_icon_info_is_fallback (NautilusIconInfo *icon)
+{
+ return icon->pixbuf == NULL;
+}
+
static void
pixbuf_toggle_notify (gpointer info,
GObject *object,
diff --git a/libnautilus-private/nautilus-icon-info.h b/libnautilus-private/nautilus-icon-info.h
index 9d556e46b..5d37d2339 100644
--- a/libnautilus-private/nautilus-icon-info.h
+++ b/libnautilus-private/nautilus-icon-info.h
@@ -58,6 +58,7 @@ NautilusIconInfo * nautilus_icon_info_lookup (GIcon
int size);
NautilusIconInfo * nautilus_icon_info_lookup_from_name (const char *name,
int size);
+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,