Author: peter
Date: 2007-01-23 15:23:34 +0000 (Tue, 23 Jan 2007)
New Revision: 24711

Modified:
   squeeze/trunk/libsqueeze/archive.c
   squeeze/trunk/src/archive_store.c
Log:
none utf-8 filenames seem to work


Modified: squeeze/trunk/libsqueeze/archive.c
===================================================================
--- squeeze/trunk/libsqueeze/archive.c  2007-01-23 14:51:57 UTC (rev 24710)
+++ squeeze/trunk/libsqueeze/archive.c  2007-01-23 15:23:34 UTC (rev 24711)
@@ -661,8 +661,17 @@
        }
        else
        {
-               entry->filename = g_locale_to_utf8(filename, -1, NULL, NULL, 
NULL);
-               lsq_archive_iter_set_mime(archive, entry, 
thunar_vfs_mime_database_get_info_for_name(lsq_mime_database, entry->filename));
+               entry->filename = g_strdup(filename);
+               if(g_utf8_validate (filename, -1, NULL))
+               {
+                       lsq_archive_iter_set_mime(archive, entry, 
thunar_vfs_mime_database_get_info_for_name(lsq_mime_database, entry->filename));
+               }
+               else
+               {
+                       gchar *utf8_file = g_convert(filename, -1, "UTF-8", 
"WINDOWS-1252", NULL, NULL, NULL);
+                       lsq_archive_iter_set_mime(archive, entry, 
thunar_vfs_mime_database_get_info_for_name(lsq_mime_database, utf8_file));
+                       g_free(utf8_file);
+               }
        }
 
        return entry;
@@ -1136,7 +1145,9 @@
 static const gchar *
 lsq_archive_iter_get_mimetype(const LSQArchive *archive, const LSQArchiveIter 
*iter)
 {
-       return thunar_vfs_mime_info_get_name(((LSQEntry *)iter)->mime_info);
+       if(((LSQEntry *)iter)->mime_info)
+               return thunar_vfs_mime_info_get_name(((LSQEntry 
*)iter)->mime_info);
+       return NULL;
 }
 
 /**
@@ -1595,11 +1606,11 @@
 lsq_archive_iter_get_icon_name(const LSQArchive *archive, const LSQArchiveIter 
*iter, GValue *value, GtkIconTheme *icon_theme)
 {
        g_value_init(value, G_TYPE_STRING);
+       if(!iter->mime_info)
+               return;
        const gchar *icon_name = 
thunar_vfs_mime_info_lookup_icon_name(iter->mime_info, icon_theme);
-       if(gtk_icon_theme_has_icon(icon_theme, icon_name))
+       if(icon_name && gtk_icon_theme_has_icon(icon_theme, icon_name))
                g_value_set_string(value, icon_name);
-       else
-               g_value_set_string(value, NULL);
 }
 
 void

Modified: squeeze/trunk/src/archive_store.c
===================================================================
--- squeeze/trunk/src/archive_store.c   2007-01-23 14:51:57 UTC (rev 24710)
+++ squeeze/trunk/src/archive_store.c   2007-01-23 15:23:34 UTC (rev 24711)
@@ -508,11 +508,8 @@
                {
                        if(column < (gint)lsq_archive_n_property(archive))
                                lsq_archive_iter_get_prop_value(archive, entry, 
column, value);
-                       else
-                       {
-                               g_value_init(value, G_TYPE_STRING);
-                               g_value_set_string(value, "..");
-                       }
+                       if(G_VALUE_HOLDS_STRING(value) && 
!g_utf8_validate(g_value_get_string(value), -1, NULL))
+                               g_value_take_string(value, 
g_convert(g_value_get_string(value), -1, "UTF-8", "WINDOWS-1252", NULL, NULL, 
NULL));
                }
        }
        else

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to