2006-12-17 [colin] 2.6.1cvs46
authorColin Leroy <colin@colino.net>
Sun, 17 Dec 2006 13:36:22 +0000 (13:36 +0000)
committerColin Leroy <colin@colino.net>
Sun, 17 Dec 2006 13:36:22 +0000 (13:36 +0000)
* src/mimeview.c
* src/textview.c
* src/gtk/filesel.c
Correctly convert from/to UTF8/filename encoding
when loading and saving files. Probably fixes
bug 1068, 'Claws-Mail uses 100% CPU when looking
for a file to attach and is blocked...'

ChangeLog
PATCHSETS
configure.ac
src/gtk/filesel.c
src/mimeview.c
src/textview.c

index db32b19c98b4a713079023dd8b39bf1e8b0beb67..c9277fd7751831077260a02548cfebf1f9fa10ca 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-12-17 [colin]     2.6.1cvs46
+
+       * src/mimeview.c
+       * src/textview.c
+       * src/gtk/filesel.c
+               Correctly convert from/to UTF8/filename encoding
+               when loading and saving files. Probably fixes
+               bug 1068, 'Claws-Mail uses 100% CPU when looking 
+               for a file to attach and is blocked...'
+
 2006-12-17 [colin]     2.6.1cvs45
 
        * src/gtk/logwindow.c
index 79e20908d4d4e365709882c6aa98e066f16d18ba..c1adb78f1a8a242003021bf0324dfadf1da3094c 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.53.2.20 -r 1.53.2.21 po/POTFILES.in;  cvs diff -u -r 1.179.2.139 -r 1.179.2.140 src/imap.c;  cvs diff -u -r 1.6.2.10 -r 1.6.2.11 src/common/nntp.c;  cvs diff -u -r 1.23.2.10 -r 1.23.2.11 src/common/session.c;  ) > 2.6.1cvs43.patchset
 ( cvs diff -u -r 1.43.2.56 -r 1.43.2.57 src/toolbar.c;  cvs diff -u -r 1.19.2.12 -r 1.19.2.13 src/toolbar.h;  ) > 2.6.1cvs44.patchset
 ( cvs diff -u -r 1.1.4.22 -r 1.1.4.23 src/gtk/logwindow.c;  ) > 2.6.1cvs45.patchset
+( cvs diff -u -r 1.83.2.94 -r 1.83.2.95 src/mimeview.c;  cvs diff -u -r 1.96.2.162 -r 1.96.2.163 src/textview.c;  cvs diff -u -r 1.2.2.27 -r 1.2.2.28 src/gtk/filesel.c;  ) > 2.6.1cvs46.patchset
index 03df00ef929a2cc8cc3e774fcefc548a08201c76..72ee40d91e4a55e5242a646d689b1ba792be4a21 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=6
 MICRO_VERSION=1
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=45
+EXTRA_VERSION=46
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index 2c309a1b249e208adeb7cf0977333846139be87b..46110cdb26e8fd02e8a60a8c31f60a6a824cfb38 100644 (file)
@@ -122,6 +122,7 @@ static GList *filesel_create(const gchar *title, const gchar *path,
        if (path && strlen(path) > 0) {
                char *filename = NULL;
                char *realpath = strdup(path);
+               char *tmp = NULL;
                if (path[strlen(path)-1] == G_DIR_SEPARATOR) {
                        filename = "";
                } else if ((filename = strrchr(path, G_DIR_SEPARATOR)) != NULL) {
@@ -132,15 +133,32 @@ static GList *filesel_create(const gchar *title, const gchar *path,
                        free(realpath); 
                        realpath = strdup(get_home_dir());
                }
-               gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), realpath);
-               if (action == GTK_FILE_CHOOSER_ACTION_SAVE)
-                       gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), filename);
+               if (g_utf8_validate(realpath, -1, NULL))
+                       tmp = g_filename_from_utf8(realpath, -1, NULL, NULL, NULL);
+               else
+                       tmp = g_strdup(realpath);
+               gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), tmp);
+               g_free(tmp);
+               
+               if (action == GTK_FILE_CHOOSER_ACTION_SAVE) {
+                       if (g_utf8_validate(filename, -1, NULL))
+                               tmp = g_filename_from_utf8(filename, -1, NULL, NULL, NULL);
+                       else
+                               tmp = g_strdup(filename);
+                       gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), tmp);
+                       g_free(tmp);
+               }
                free(realpath);
        } else {
+               gchar *tmp = NULL;
                if (!prefs_common.attach_load_dir)
                        prefs_common.attach_load_dir = g_strdup_printf("%s%c", get_home_dir(), G_DIR_SEPARATOR);
-
-               gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), prefs_common.attach_load_dir);
+               if (g_utf8_validate(prefs_common.attach_load_dir, -1, NULL))
+                       tmp = g_filename_from_utf8(prefs_common.attach_load_dir, -1, NULL, NULL, NULL);
+               else
+                       tmp = g_strdup(prefs_common.attach_load_dir);
+               gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), tmp);
+               g_free(tmp);
        }
 
        if (gtk_dialog_run (GTK_DIALOG (chooser)) == GTK_RESPONSE_ACCEPT) 
@@ -161,7 +179,7 @@ static GList *filesel_create(const gchar *title, const gchar *path,
                        *(strrchr(tmp, G_DIR_SEPARATOR)+1) = '\0';
 
                if (!path)
-                       prefs_common.attach_load_dir = g_strdup(tmp);
+                       prefs_common.attach_load_dir = g_filename_to_utf8(tmp, -1, NULL, NULL, NULL);
 
                g_free(tmp);
        }
index 67ff4473bc589d37e437ebe5a0ee6b206a593efd..a66c54f2053bd4a6d08a2accb8868b288ae2173c 100644 (file)
@@ -1516,7 +1516,8 @@ static void mimeview_save_all(MimeView *mimeview)
 
        g_free(prefs_common.attach_save_dir);
        g_free(startdir);
-       prefs_common.attach_save_dir = g_strdup(dirname);
+       prefs_common.attach_save_dir = g_filename_to_utf8(dirname,
+                                       -1, NULL, NULL, NULL);
 }
 
 static MimeInfo *mimeview_get_part_to_use(MimeView *mimeview)
@@ -1589,7 +1590,7 @@ static void mimeview_save_as(MimeView *mimeview)
        filedir = g_path_get_dirname(filename);
        if (filedir && strcmp(filedir, ".")) {
                g_free(prefs_common.attach_save_dir);
-               prefs_common.attach_save_dir = g_strdup(filedir);
+               prefs_common.attach_save_dir = g_filename_to_utf8(filedir, -1, NULL, NULL, NULL);
        }
 
        g_free(filedir);
index cefe1500fbb66db764cf759e918503f9236f74b0..19db904913a4d94b5e5dccd1908c4ed1f7d579e2 100644 (file)
@@ -2665,7 +2665,7 @@ static void save_file_cb (TextView *textview, guint action, void *data)
        filedir = g_path_get_dirname(filename);
        if (filedir && strcmp(filedir, ".")) {
                g_free(prefs_common.attach_save_dir);
-               prefs_common.attach_save_dir = g_strdup(filedir);
+               prefs_common.attach_save_dir = g_filename_to_utf8(filedir, -1, NULL, NULL, NULL);
        }
 
        g_free(filedir);