[Goodies-commits] r4867 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Sat May 31 00:23:08 CEST 2008


Author: stephan
Date: 2008-05-30 22:23:08 +0000 (Fri, 30 May 2008)
New Revision: 4867

Modified:
   ristretto/trunk/src/navigator.c
Log:
Do not generate thumbnails from thumbnails



Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2008-05-30 16:41:28 UTC (rev 4866)
+++ ristretto/trunk/src/navigator.c	2008-05-30 22:23:08 UTC (rev 4867)
@@ -846,6 +846,8 @@
 GdkPixbuf *
 rstto_navigator_entry_get_thumb(RsttoNavigatorEntry *entry, gint size)
 {
+    ThunarVfsPath *home_path = thunar_vfs_path_get_for_home();
+    ThunarVfsPath *thumbnail_path = thunar_vfs_path_relative (home_path, ".thumbnails");
     if(entry->thumb)    
     {
         if(!(gdk_pixbuf_get_width(entry->thumb) == size || gdk_pixbuf_get_height(entry->thumb) == size))
@@ -859,47 +861,56 @@
         gchar *thumbnail = thunar_vfs_thumb_factory_lookup_thumbnail(entry->navigator->factory, info);
         if (thumbnail == NULL)
         {
-            GdkPixbuf *pixbuf = thunar_vfs_thumb_factory_generate_thumbnail(entry->navigator->factory, info);
-            if (pixbuf != NULL)
+            if (!thunar_vfs_path_is_ancestor (info->path, thumbnail_path))
             {
-                if (!thunar_vfs_thumb_factory_store_thumbnail(entry->navigator->factory, pixbuf, info, NULL))
+                GdkPixbuf *pixbuf = thunar_vfs_thumb_factory_generate_thumbnail(entry->navigator->factory, info);
+                if (pixbuf != NULL)
                 {
-                    g_critical("Storing thumbnail failed");
-                }
+                    if (!thunar_vfs_thumb_factory_store_thumbnail(entry->navigator->factory, pixbuf, info, NULL))
+                    {
+                        g_critical("Storing thumbnail failed");
+                    }
 
-                gint width = gdk_pixbuf_get_width(pixbuf);
-                gint height = gdk_pixbuf_get_height(pixbuf);
+                    gint width = gdk_pixbuf_get_width(pixbuf);
+                    gint height = gdk_pixbuf_get_height(pixbuf);
 
-                if (width > height)
-                {
-                    entry->thumb = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
-                                                  gdk_pixbuf_get_has_alpha(pixbuf),
-                                                  gdk_pixbuf_get_bits_per_sample(pixbuf),
-                                                  size,
-                                                  height*size/width);
+                    if (width > height)
+                    {
+                        entry->thumb = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
+                                                      gdk_pixbuf_get_has_alpha(pixbuf),
+                                                      gdk_pixbuf_get_bits_per_sample(pixbuf),
+                                                      size,
+                                                      height*size/width);
+                    }
+                    else
+                    {
+                        entry->thumb = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
+                                                      gdk_pixbuf_get_has_alpha(pixbuf),
+                                                      gdk_pixbuf_get_bits_per_sample(pixbuf),
+                                                      width*size/height,
+                                                      size);
+                    }
+                    gdk_pixbuf_scale(pixbuf, entry->thumb,
+                                     0, 0, 
+                                     gdk_pixbuf_get_width(entry->thumb),
+                                     gdk_pixbuf_get_height(entry->thumb),
+                                     0, 0,
+                                     ((gdouble)gdk_pixbuf_get_width(entry->thumb)) / (gdouble)width,
+                                     ((gdouble)gdk_pixbuf_get_height(entry->thumb)) / (gdouble)height,
+                                     GDK_INTERP_BILINEAR);
                 }
                 else
                 {
-                    entry->thumb = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
-                                                  gdk_pixbuf_get_has_alpha(pixbuf),
-                                                  gdk_pixbuf_get_bits_per_sample(pixbuf),
-                                                  width*size/height,
-                                                  size);
+                    thumbnail = thunar_vfs_path_dup_string(info->path);
+                    entry->thumb = gdk_pixbuf_new_from_file_at_scale(thumbnail, size, size, TRUE, NULL);
+                    g_free(thumbnail);
                 }
-                gdk_pixbuf_scale(pixbuf, entry->thumb,
-                                 0, 0, 
-                                 gdk_pixbuf_get_width(entry->thumb),
-                                 gdk_pixbuf_get_height(entry->thumb),
-                                 0, 0,
-                                 ((gdouble)gdk_pixbuf_get_width(entry->thumb)) / (gdouble)width,
-                                 ((gdouble)gdk_pixbuf_get_height(entry->thumb)) / (gdouble)height,
-                                 GDK_INTERP_BILINEAR);
             }
             else
             {
-                thumbnail = thunar_vfs_path_dup_string(info->path);
-                entry->thumb = gdk_pixbuf_new_from_file_at_scale(thumbnail, size, size, TRUE, NULL);
-                g_free(thumbnail);
+                GtkIconTheme *theme = gtk_icon_theme_get_default();
+                entry->thumb = gtk_icon_theme_load_icon (theme, thunar_vfs_mime_info_lookup_icon_name (info->mime_info, theme), size, 0, NULL);
+                
             }
         }
         else




More information about the Goodies-commits mailing list