2007-04-18 [paul] 2.9.0cvs7
[claws.git] / src / messageview.c
index 781672129305d9c354cd5685b14ecf1ec55186e9..dbfcc8df4a9e0ba2080989ce4bfa63845306a0ff 100644 (file)
@@ -856,13 +856,18 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
        textview_set_all_headers(messageview->mimeview->textview, 
                        messageview->all_headers);
 
+#ifdef MAEMO
+       maemo_window_full_screen_if_needed(GTK_WINDOW(messageview->window));
+#endif
+       if (messageview->window) {
+               gtk_window_set_title(GTK_WINDOW(messageview->window), 
+                               _("Claws Mail - Message View"));
+               GTK_EVENTS_FLUSH();
+       }
        mimeview_show_message(messageview->mimeview, mimeinfo, file);
        
        messageview_set_position(messageview, 0);
 
-       if (messageview->window)
-               gtk_window_set_title(GTK_WINDOW(messageview->window), 
-                               _("Claws Mail - Message View"));
        if (messageview->window && msginfo->subject) {
                subject = g_strdup(msginfo->subject);
                if (!g_utf8_validate(subject, -1, NULL)) {
@@ -903,9 +908,6 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
        }
 
        g_free(file);
-#ifdef MAEMO
-       maemo_window_full_screen_if_needed(GTK_WINDOW(messageview->window));
-#endif
 
        return 0;
 }
@@ -1170,7 +1172,19 @@ static void messageview_save_as(MessageView *messageview)
                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;