2007-04-18 [paul] 2.9.0cvs7
authorPaul Mangan <paul@claws-mail.org>
Wed, 18 Apr 2007 08:28:32 +0000 (08:28 +0000)
committerPaul Mangan <paul@claws-mail.org>
Wed, 18 Apr 2007 08:28:32 +0000 (08:28 +0000)
* src/messageview.c
* src/mimeview.c
* src/summaryview.c
* src/gtk/filesel.c
Fix encoding woes wrt saving of
mails and parts
Thanks to Colin

ChangeLog
PATCHSETS
configure.ac
src/gtk/filesel.c
src/messageview.c
src/mimeview.c
src/summaryview.c

index 1f3811e80dd809720063d600bbb796ef11f4730d..0d1489e4d7b452f8f056066ebd513b5fe32b0f9e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-04-18 [paul]      2.9.0cvs7
+
+       * src/messageview.c
+       * src/mimeview.c
+       * src/summaryview.c
+       * src/gtk/filesel.c
+               Fix encoding woes wrt saving of
+               mails and parts
+               Thanks to Colin
+
 2007-04-18 [colin]     2.9.0cvs6
 
        * src/gtk/pluginwindow.c
 2007-04-18 [colin]     2.9.0cvs6
 
        * src/gtk/pluginwindow.c
index d77c4641da67a3523627748c02e273f1191ba6f5..17f1566bf363cae46e87203a6b0534a399007cb2 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/ldapupdate.c;  ) > 2.9.0cvs4.patchset
 ( cvs diff -u -r 1.9.2.14 -r 1.9.2.15 src/addressadd.c;  cvs diff -u -r 1.60.2.85 -r 1.60.2.86 src/addressbook.c;  cvs diff -u -r 1.28.2.26 -r 1.28.2.27 src/addrindex.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/ldapupdate.c;  ) > 2.9.0cvs5.patchset
 ( cvs diff -u -r 1.5.2.44 -r 1.5.2.45 src/gtk/pluginwindow.c;  ) > 2.9.0cvs6.patchset
 ( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/ldapupdate.c;  ) > 2.9.0cvs4.patchset
 ( cvs diff -u -r 1.9.2.14 -r 1.9.2.15 src/addressadd.c;  cvs diff -u -r 1.60.2.85 -r 1.60.2.86 src/addressbook.c;  cvs diff -u -r 1.28.2.26 -r 1.28.2.27 src/addrindex.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/ldapupdate.c;  ) > 2.9.0cvs5.patchset
 ( cvs diff -u -r 1.5.2.44 -r 1.5.2.45 src/gtk/pluginwindow.c;  ) > 2.9.0cvs6.patchset
+( cvs diff -u -r 1.94.2.131 -r 1.94.2.132 src/messageview.c;  cvs diff -u -r 1.83.2.104 -r 1.83.2.105 src/mimeview.c;  cvs diff -u -r 1.395.2.295 -r 1.395.2.296 src/summaryview.c;  cvs diff -u -r 1.2.2.32 -r 1.2.2.33 src/gtk/filesel.c;  ) > 2.9.0cvs7.patchset
index 0a09ed69837c5a0636b26fe3dcb172410edda4f9..15b075b8506ebbb28761add5f0338364b7df37de 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=6
+EXTRA_VERSION=7
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index 6000a63eaeace0e84bb8f68e368c65216ae8653a..ab133494f7137c485dadab02e8b603dd6336c5ef 100644 (file)
@@ -134,17 +134,18 @@ static GList *filesel_create(const gchar *title, const gchar *path,
                        g_free(realpath); 
                        realpath = g_strdup(get_home_dir());
                }
                        g_free(realpath); 
                        realpath = g_strdup(get_home_dir());
                }
+               tmp = NULL;
                if (g_utf8_validate(realpath, -1, NULL))
                        tmp = g_filename_from_utf8(realpath, -1, NULL, NULL, NULL);
                if (g_utf8_validate(realpath, -1, NULL))
                        tmp = g_filename_from_utf8(realpath, -1, NULL, NULL, NULL);
-               else
+               if (tmp == NULL)
                        tmp = g_strdup(realpath);
                gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), tmp);
                g_free(tmp);
                        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 (action == GTK_FILE_CHOOSER_ACTION_SAVE) {
+                       tmp = NULL;
                        if (g_utf8_validate(filename, -1, NULL))
                                tmp = g_filename_from_utf8(filename, -1, NULL, NULL, NULL);
                        if (g_utf8_validate(filename, -1, NULL))
                                tmp = g_filename_from_utf8(filename, -1, NULL, NULL, NULL);
-                       else
+                       if (tmp == NULL)
                                tmp = g_strdup(filename);
                        gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), tmp);
                        g_free(tmp);
                                tmp = g_strdup(filename);
                        gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), tmp);
                        g_free(tmp);
@@ -156,7 +157,7 @@ static GList *filesel_create(const gchar *title, const gchar *path,
                        prefs_common.attach_load_dir = g_strdup_printf("%s%c", get_home_dir(), G_DIR_SEPARATOR);
                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);
                        prefs_common.attach_load_dir = g_strdup_printf("%s%c", get_home_dir(), G_DIR_SEPARATOR);
                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
+               if (tmp == NULL)
                        tmp = g_strdup(prefs_common.attach_load_dir);
                gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), tmp);
                g_free(tmp);
                        tmp = g_strdup(prefs_common.attach_load_dir);
                gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), tmp);
                g_free(tmp);
index 5779e9dea5abb2d3ae207134b49080770f90c9d5..dbfcc8df4a9e0ba2080989ce4bfa63845306a0ff 100644 (file)
@@ -1172,7 +1172,19 @@ static void messageview_save_as(MessageView *messageview)
                Xstrdup_a(filename, msginfo->subject, return);
                subst_for_filename(filename);
        }
                Xstrdup_a(filename, msginfo->subject, return);
                subst_for_filename(filename);
        }
-       dest = filesel_select_file_save(_("Save as"), filename);
+       if (filename && !g_utf8_validate(filename, -1, NULL)) {
+               gchar *oldstr = filename;
+               filename = conv_codeset_strdup(filename,
+                                              conv_get_locale_charset_str(),
+                                              CS_UTF_8);
+               if (!filename) {
+                       g_warning("messageview_save_as(): faild to convert character set.");
+                       filename = g_strdup(oldstr);
+               }
+               dest = filesel_select_file_save(_("Save as"), filename);
+               g_free(filename);
+       } else
+               dest = filesel_select_file_save(_("Save as"), filename);
        if (!dest) return;
        if (is_file_exist(dest)) {
                AlertValue aval;
        if (!dest) return;
        if (is_file_exist(dest)) {
                AlertValue aval;
index 562f67b76e34957ce90acabec82b57a6bfea4283..fbacdcef593c60097cb0b2444afb25623aaf8d5a 100644 (file)
@@ -1370,10 +1370,14 @@ static void mimeview_drag_data_get(GtkWidget        *widget,
        }
        if (filename == NULL)
                filename = g_path_get_basename("Unnamed part");
        }
        if (filename == NULL)
                filename = g_path_get_basename("Unnamed part");
-               
 
 
-       tmp = g_filename_from_utf8(filename, -1, NULL, NULL, NULL);
-       
+       if (!g_utf8_validate(filename, -1, NULL))
+               tmp = conv_codeset_strdup(filename,
+                               conv_get_locale_charset_str(),
+                               CS_UTF_8);
+       else
+               tmp = g_strdup(filename);
+
        if (tmp == NULL) {
                g_warning("filename not in UTF-8");
                tmp = g_strdup("Unnamed part");
        if (tmp == NULL) {
                g_warning("filename not in UTF-8");
                tmp = g_strdup("Unnamed part");
@@ -1589,8 +1593,15 @@ static void mimeview_save_as(MimeView *mimeview)
        
        if (!g_utf8_validate(partname, -1, NULL)) {
                gchar *tmp = conv_filename_to_utf8(partname);
        
        if (!g_utf8_validate(partname, -1, NULL)) {
                gchar *tmp = conv_filename_to_utf8(partname);
-               g_free(partname);
-               partname = tmp;
+               if (!tmp) {
+                       tmp = conv_codeset_strdup(partname,
+                               conv_get_locale_charset_str(),
+                               CS_UTF_8);
+               }
+               if (tmp) {
+                       g_free(partname);
+                       partname = tmp;
+               }
        }
 
        subst_for_filename(partname);
        }
 
        subst_for_filename(partname);
index a9459849f7ba183799b987255aef70f492449d83..9dcb96971ea0c8ab8b715c7c3bfda98329b6a4ad 100644 (file)
@@ -4174,8 +4174,7 @@ void summary_save_as(SummaryView *summaryview)
                Xstrdup_a(filename, msginfo->subject, return);
                subst_for_filename(filename);
        }
                Xstrdup_a(filename, msginfo->subject, return);
                subst_for_filename(filename);
        }
-       if (g_getenv ("G_BROKEN_FILENAMES") &&
-           filename && !g_utf8_validate(filename, -1, NULL)) {
+       if (filename && !g_utf8_validate(filename, -1, NULL)) {
                gchar *oldstr = filename;
                filename = conv_codeset_strdup(filename,
                                               conv_get_locale_charset_str(),
                gchar *oldstr = filename;
                filename = conv_codeset_strdup(filename,
                                               conv_get_locale_charset_str(),