may I please commit.
authorColin Leroy <colin@colino.net>
Thu, 22 Sep 2005 21:08:02 +0000 (21:08 +0000)
committerColin Leroy <colin@colino.net>
Thu, 22 Sep 2005 21:08:02 +0000 (21:08 +0000)
ChangeLog-gtk2.claws
PATCHSETS
configure.ac
src/codeconv.c
src/codeconv.h
src/compose.c
src/compose.h
src/prefs_common.c
src/prefs_common.h
src/quote_fmt_parse.y
src/summaryview.c

index 65700ca10eec4e09533a2160e0a89fee6f6f6525..0c9235e3a08d8f55a077a71e33d1c900c4c7045b 100644 (file)
@@ -1,3 +1,25 @@
+2005-09-22 [colin]     1.9.14cvs49
+
+       * src/codeconv.c
+       * src/codeconv.h
+               Add a strict mode that doesn't replace with _
+       * src/compose.c
+       * src/compose.h
+               Use strict conversion while sending
+               Fix race when drafting while sending (happens
+               on IMAP)
+               Fix d'n'd of messages from summaryview
+       * src/prefs_common.c
+       * src/prefs_common.h
+               add hidden utf8_instead_of_locale_for_broken_mail 
+               pref for people that preferred the default charset 
+               to be utf8 for broken mails
+       * src/quote_fmt_parse.y
+               fix bug #815 (No quote insert if "From:" fied 
+               contained Russian letters)
+       * src/summaryview.c
+               Fix d'n'd of messages to compose
+
 2005-09-22 [paul]      1.9.14cvs48
 
        * src/compose.c
index e90df89afb0c629c029867ea04b4e0c224968f41..8de5862ef52f3a581e092505c8561a86f9d40640 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/gedit-print.c;  cvs diff -u -r 1.150.2.44 -r 1.150.2.45 src/procmsg.c;  cvs diff -u -r 1.60.2.17 -r 1.60.2.18 src/procmsg.h;  cvs diff -u -r 1.395.2.124 -r 1.395.2.125 src/summaryview.c;  cvs diff -u -r 1.96.2.76 -r 1.96.2.77 src/textview.c;  ) > 1.9.14cvs46.patchset
 ( cvs diff -u -r 1.8.2.2 -r 1.8.2.3 README;  cvs diff -u -r 1.7.2.2 -r 1.7.2.3 README.jp;  cvs diff -u -r 1.654.2.858 -r 1.654.2.859 configure.ac;  cvs diff -u -r 1.1 -r 1.2 config/config.rpath;  cvs diff -u -r 1.5.2.2 -r 1.5.2.3 doc/manual/en/sylpheed-20.html;  cvs diff -u -r 1.1 -r 1.2 doc/manual/es/sylpheed-20.html;  cvs diff -u -r 1.21.2.2 -r 1.21.2.3 po/bg.po;  cvs diff -u -r 1.1.2.4 -r 1.1.2.5 po/ca.po;  cvs diff -u -r 1.58.2.12 -r 1.58.2.13 po/de.po;  cvs diff -u -r 1.60.2.14 -r 1.60.2.15 po/es.po;  cvs diff -u -r 1.42.2.14 -r 1.42.2.15 po/fr.po;  cvs diff -u -r 1.34.2.11 -r 1.34.2.12 po/it.po;  cvs diff -u -r 1.50.2.10 -r 1.50.2.11 po/pt_BR.po;  cvs diff -u -r 1.2.2.15 -r 1.2.2.16 po/sk.po;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 po/zh_TW.po;  cvs diff -u -r 1.61.2.37 -r 1.61.2.38 src/account.c;  cvs diff -u -r 1.11.2.1 -r 1.11.2.2 src/account.h;  cvs diff -u -r 1.12.2.25 -r 1.12.2.26 src/action.c;  cvs diff -u -r 1.3.2.3 -r 1.3.2.4 src/action.h;  cvs diff -u -r 1.1 -r 1.2 src/adbookbase.h;  cvs diff -u -r 1.27.2.13 -r 1.27.2.14 src/addr_compl.c;  cvs diff -u -r 1.8.2.2 -r 1.8.2.3 src/addr_compl.h;  cvs diff -u -r 1.22.2.4 -r 1.22.2.5 src/addrbook.c;  cvs diff -u -r 1.7 -r 1.8 src/addrbook.h;  cvs diff -u -r 1.15.2.5 -r 1.15.2.6 src/addrcache.c;  cvs diff -u -r 1.9.2.1 -r 1.9.2.2 src/addrcache.h;  cvs diff -u -r 1.1 -r 1.2 src/addrcindex.c;  cvs diff -u -r 1.1 -r 1.2 src/addrcindex.h;  cvs diff -u -r 1.5 -r 1.6 src/addrclip.c;  cvs diff -u -r 1.1 -r 1.2 src/addrclip.h;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/addrdefs.h;  cvs diff -u -r 1.9.2.4 -r 1.9.2.5 src/addressadd.c;  cvs diff -u -r 1.2 -r 1.3 src/addressadd.h;  cvs diff -u -r 1.60.2.31 -r 1.60.2.32 src/addressbook.c;  cvs diff -u -r 1.18 -r 1.19 src/addressbook.h;  cvs diff -u -r 1.5.2.3 -r 1.5.2.4 src/addressitem.h;  cvs diff -u -r 1.5.10.10 -r 1.5.10.11 src/addrgather.c;  cvs diff -u -r 1.3 -r 1.4 src/addrgather.h;  cvs diff -u -r 1.6.10.8 -r 1.6.10.9 src/addrharvest.c;  cvs diff -u -r 1.4 -r 1.5 src/addrharvest.h;  cvs diff -u -r 1.28.2.10 -r 1.28.2.11 src/addrindex.c;  cvs diff -u -r 1.9.2.4 -r 1.9.2.5 src/addrindex.h;  cvs diff -u -r 1.13.2.2 -r 1.13.2.3 src/addritem.c;  cvs diff -u -r 1.12.2.2 -r 1.12.2.3 src/addritem.h;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/addrquery.c;  cvs diff -u -r 1.3.2.1 -r 1.3.2.2 src/addrquery.h;  cvs diff -u -r 1.3.2.1 -r 1.3.2.2 src/addrselect.c;  cvs diff -u -r 1.1.14.1 -r 1.1.14.2 src/addrselect.h;  cvs diff -u -r 1.17.2.18 -r 1.17.2.19 src/alertpanel.c;  cvs diff -u -r 1.5.2.5 -r 1.5.2.6 src/alertpanel.h;  cvs diff -u -r 1.2.4.8 -r 1.2.4.9 src/browseldap.c;  cvs diff -u -r 1.2.4.1 -r 1.2.4.2 src/browseldap.h;  cvs diff -u -r 1.65.2.37 -r 1.65.2.38 src/codeconv.c;  cvs diff -u -r 1.15.2.11 -r 1.15.2.12 src/codeconv.h;  cvs diff -u -r 1.382.2.173 -r 1.382.2.174 src/compose.c;  cvs diff -u -r 1.50.2.11 -r 1.50.2.12 src/compose.h;  cvs diff -u -r 1.23.2.12 -r 1.23.2.13 src/crash.c;  cvs diff -u -r 1.1 -r 1.2 src/crash.h;  cvs diff -u -r 1.5.2.4 -r 1.5.2.5 src/customheader.c;  cvs diff -u -r 1.2.16.1 -r 1.2.16.2 src/customheader.h;  cvs diff -u -r 1.2 -r 1.3 src/displayheader.c;  cvs diff -u -r 1.2 -r 1.3 src/displayheader.h;  cvs diff -u -r 1.14.2.10 -r 1.14.2.11 src/editaddress.c;  cvs diff -u -r 1.3 -r 1.4 src/editaddress.h;  cvs diff -u -r 1.5.12.3 -r 1.5.12.4 src/editbook.c;  cvs diff -u -r 1.2 -r 1.3 src/editbook.h;  cvs diff -u -r 1.11.2.7 -r 1.11.2.8 src/editgroup.c;  cvs diff -u -r 1.3 -r 1.4 src/editgroup.h;  cvs diff -u -r 1.5.12.5 -r 1.5.12.6 src/editjpilot.c;  cvs diff -u -r 1.3 -r 1.4 src/editjpilot.h;  cvs diff -u -r 1.8.2.6 -r 1.8.2.7 src/editldap.c;  cvs diff -u -r 1.4 -r 1.5 src/editldap.h;  cvs diff -u -r 1.10.2.4 -r 1.10.2.5 src/editldap_basedn.c;  cvs diff -u -r 1.3 -r 1.4 src/editldap_basedn.h;  cvs diff -u -r 1.5.12.4 -r 1.5.12.5 src/editvcard.c;  cvs diff -u -r 1.3 -r 1.4 src/editvcard.h;  cvs diff -u -r 1.3.2.2 -r 1.3.2.3 src/enriched.c;  cvs diff -u -r 1.1 -r 1.2 src/enriched.h;  cvs diff -u -r 1.3.2.11 -r 1.3.2.12 src/exphtmldlg.c;  cvs diff -u -r 1.2 -r 1.3 src/exphtmldlg.h;  cvs diff -u -r 1.1.4.13 -r 1.1.4.14 src/expldifdlg.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/expldifdlg.h;  cvs diff -u -r 1.8.2.8 -r 1.8.2.9 src/export.c;  cvs diff -u -r 1.1 -r 1.2 src/export.h;  cvs diff -u -r 1.5.2.6 -r 1.5.2.7 src/exporthtml.c;  cvs diff -u -r 1.1 -r 1.2 src/exporthtml.h;  cvs diff -u -r 1.1.4.6 -r 1.1.4.7 src/exportldif.c;  cvs diff -u -r 1.1 -r 1.2 src/exportldif.h;  cvs diff -u -r 1.60.2.7 -r 1.60.2.8 src/filtering.c;  cvs diff -u -r 1.21.2.2 -r 1.21.2.3 src/filtering.h;  cvs diff -u -r 1.213.2.56 -r 1.213.2.57 src/folder.c;  cvs diff -u -r 1.87.2.18 -r 1.87.2.19 src/folder.h;  cvs diff -u -r 1.2.2.8 -r 1.2.2.9 src/folder_item_prefs.c;  cvs diff -u -r 1.2.2.2 -r 1.2.2.3 src/folder_item_prefs.h;  cvs diff -u -r 1.26.2.19 -r 1.26.2.20 src/foldersel.c;  cvs diff -u -r 1.4 -r 1.5 src/foldersel.h;  cvs diff -u -r 1.3.2.7 -r 1.3.2.8 src/folderutils.c;  cvs diff -u -r 1.1.4.2 -r 1.1.4.3 src/folderutils.h;  cvs diff -u -r 1.207.2.64 -r 1.207.2.65 src/folderview.c;  cvs diff -u -r 1.20.2.7 -r 1.20.2.8 src/folderview.h;  cvs diff -u -r 1.14.2.10 -r 1.14.2.11 src/grouplistdialog.c;  cvs diff -u -r 1.3 -r 1.4 src/grouplistdialog.h;  cvs diff -u -r 1.8.2.9 -r 1.8.2.10 src/headerview.c;  cvs diff -u -r 1.2.2.1 -r 1.2.2.2 src/headerview.h;  cvs diff -u -r 1.12.2.9 -r 1.12.2.10 src/html.c;  cvs diff -u -r 1.3.2.2 -r 1.3.2.3 src/html.h;  cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/image_viewer.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/image_viewer.h;  cvs diff -u -r 1.179.2.71 -r 1.179.2.72 src/imap.c;  cvs diff -u -r 1.34.2.2 -r 1.34.2.3 src/imap.h;  cvs diff -u -r 1.1.2.20 -r 1.1.2.21 src/imap_gtk.c;  cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/imap_gtk.h;  cvs diff -u -r 1.13.2.8 -r 1.13.2.9 src/import.c;  cvs diff -u -r 1.2 -r 1.3 src/import.h;  cvs diff -u -r 1.14.2.5 -r 1.14.2.6 src/importldif.c;  cvs diff -u -r 1.4 -r 1.5 src/importldif.h;  cvs diff -u -r 1.4.12.7 -r 1.4.12.8 src/importmutt.c;  cvs diff -u -r 1.2 -r 1.3 src/importmutt.h;  cvs diff -u -r 1.1.14.7 -r 1.1.14.8 src/importpine.c;  cvs diff -u -r 1.1 -r 1.2 src/importpine.h;  cvs diff -u -r 1.149.2.33 -r 1.149.2.34 src/inc.c;  cvs diff -u -r 1.29.2.6 -r 1.29.2.7 src/inc.h;  cvs diff -u -r 1.18.2.12 -r 1.18.2.13 src/jpilot.c;  cvs diff -u -r 1.10 -r 1.11 src/jpilot.h;  cvs diff -u -r 1.2.2.2 -r 1.2.2.3 src/ldapctrl.c;  cvs diff -u -r 1.1.4.2 -r 1.1.4.3 src/ldapctrl.h;  cvs diff -u -r 1.1.4.2 -r 1.1.4.3 src/ldaplocate.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/ldaplocate.h;  cvs diff -u -r 1.3.2.5 -r 1.3.2.6 src/ldapquery.c;  cvs diff -u -r 1.4.2.3 -r 1.4.2.4 src/ldapquery.h;  cvs diff -u -r 1.4.2.4 -r 1.4.2.5 src/ldapserver.c;  cvs diff -u -r 1.2.2.3 -r 1.2.2.4 src/ldapserver.h;  cvs diff -u -r 1.1 -r 1.2 src/ldaputil.c;  cvs diff -u -r 1.1 -r 1.2 src/ldaputil.h;  cvs diff -u -r 1.12.2.3 -r 1.12.2.4 src/ldif.c;  cvs diff -u -r 1.5 -r 1.6 src/ldif.h;  cvs diff -u -r 1.3.4.2 -r 1.3.4.3 src/localfolder.c;  cvs diff -u -r 1.2.4.1 -r 1.2.4.2 src/localfolder.h;  cvs diff -u -r 1.115.2.54 -r 1.115.2.55 src/main.c;  cvs diff -u -r 1.7.2.1 -r 1.7.2.2 src/main.h;  cvs diff -u -r 1.274.2.67 -r 1.274.2.68 src/mainwindow.c;  cvs diff -u -r 1.39.2.7 -r 1.39.2.8 src/mainwindow.h;  cvs diff -u -r 1.11 -r 1.12 src/manual.c;  cvs diff -u -r 1.8 -r 1.9 src/manual.h;  cvs diff -u -r 1.75.2.9 -r 1.75.2.10 src/matcher.c;  cvs diff -u -r 1.39.2.4 -r 1.39.2.5 src/matcher.h;  cvs diff -u -r 1.4.2.3 -r 1.4.2.4 src/matcher_parser.h;  cvs diff -u -r 1.16.2.4 -r 1.16.2.5 src/matcher_parser_lex.l;  cvs diff -u -r 1.25.2.11 -r 1.25.2.12 src/matcher_parser_parse.y;  cvs diff -u -r 1.28.2.8 -r 1.28.2.9 src/mbox.c;  cvs diff -u -r 1.3.2.4 -r 1.3.2.5 src/mbox.h;  cvs diff -u -r 1.3.12.10 -r 1.3.12.11 src/message_search.c;  cvs diff -u -r 1.1 -r 1.2 src/message_search.h;  cvs diff -u -r 1.94.2.64 -r 1.94.2.65 src/messageview.c;  cvs diff -u -r 1.19.2.4 -r 1.19.2.5 src/messageview.h;  cvs diff -u -r 1.79.2.18 -r 1.79.2.19 src/mh.c;  cvs diff -u -r 1.9.2.1 -r 1.9.2.2 src/mh.h;  cvs diff -u -r 1.2.2.11 -r 1.2.2.12 src/mh_gtk.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/mh_gtk.h;  cvs diff -u -r 1.83.2.39 -r 1.83.2.40 src/mimeview.c;  cvs diff -u -r 1.20.2.4 -r 1.20.2.5 src/mimeview.h;  cvs diff -u -r 1.16.2.26 -r 1.16.2.27 src/msgcache.c;  cvs diff -u -r 1.5.2.1 -r 1.5.2.2 src/msgcache.h;  cvs diff -u -r 1.6.10.4 -r 1.6.10.5 src/mutt.c;  cvs diff -u -r 1.3 -r 1.4 src/mutt.h;  cvs diff -u -r 1.101.2.15 -r 1.101.2.16 src/news.c;  cvs diff -u -r 1.21.2.1 -r 1.21.2.2 src/news.h;  cvs diff -u -r 1.2.2.10 -r 1.2.2.11 src/news_gtk.c;  cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/news_gtk.h;  cvs diff -u -r 1.5.2.7 -r 1.5.2.8 src/noticeview.c;  cvs diff -u -r 1.3.8.2 -r 1.3.8.3 src/noticeview.h;  cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/partial_download.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/partial_download.h;  cvs diff -u -r 1.6.2.3 -r 1.6.2.4 src/pine.c;  cvs diff -u -r 1.1 -r 1.2 src/pine.h;  cvs diff -u -r 1.56.2.39 -r 1.56.2.40 src/pop.c;  cvs diff -u -r 1.17.2.14 -r 1.17.2.15 src/pop.h;  cvs diff -u -r 1.105.2.35 -r 1.105.2.36 src/prefs_account.c;  cvs diff -u -r 1.49.2.15 -r 1.49.2.16 src/prefs_account.h;  cvs diff -u -r 1.60.2.23 -r 1.60.2.24 src/prefs_actions.c;  cvs diff -u -r 1.5 -r 1.6 src/prefs_actions.h;  cvs diff -u -r 1.204.2.57 -r 1.204.2.58 src/prefs_common.c;  cvs diff -u -r 1.103.2.28 -r 1.103.2.29 src/prefs_common.h;  cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/prefs_compose_writing.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_compose_writing.h;  cvs diff -u -r 1.16.2.14 -r 1.16.2.15 src/prefs_customheader.c;  cvs diff -u -r 1.2 -r 1.3 src/prefs_customheader.h;  cvs diff -u -r 1.16.2.14 -r 1.16.2.15 src/prefs_display_header.c;  cvs diff -u -r 1.1 -r 1.2 src/prefs_display_header.h;  cvs diff -u -r 1.3.2.6 -r 1.3.2.7 src/prefs_ext_prog.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/prefs_ext_prog.h;  cvs diff -u -r 1.59.2.23 -r 1.59.2.24 src/prefs_filtering.c;  cvs diff -u -r 1.6.2.1 -r 1.6.2.2 src/prefs_filtering.h;  cvs diff -u -r 1.1.4.19 -r 1.1.4.20 src/prefs_filtering_action.c;  cvs diff -u -r 1.1 -r 1.2 src/prefs_filtering_action.h;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_folder_column.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/prefs_folder_column.h;  cvs diff -u -r 1.52.2.13 -r 1.52.2.14 src/prefs_folder_item.c;  cvs diff -u -r 1.17 -r 1.18 src/prefs_folder_item.h;  cvs diff -u -r 1.4.2.12 -r 1.4.2.13 src/prefs_fonts.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/prefs_fonts.h;  cvs diff -u -r 1.10.2.13 -r 1.10.2.14 src/prefs_gtk.c;  cvs diff -u -r 1.5.2.3 -r 1.5.2.4 src/prefs_gtk.h;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_image_viewer.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/prefs_image_viewer.h;  cvs diff -u -r 1.43.2.24 -r 1.43.2.25 src/prefs_matcher.c;  cvs diff -u -r 1.4.2.1 -r 1.4.2.2 src/prefs_matcher.h;  cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/prefs_message.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_message.h;  cvs diff -u -r 1.1.2.9 -r 1.1.2.10 src/prefs_msg_colors.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/prefs_msg_colors.h;  cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/prefs_other.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_other.h;  cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/prefs_quote.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_quote.h;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_receive.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_receive.h;  cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/prefs_send.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_send.h;  cvs diff -u -r 1.5.2.12 -r 1.5.2.13 src/prefs_spelling.c;  cvs diff -u -r 1.1 -r 1.2 src/prefs_spelling.h;  cvs diff -u -r 1.1.2.12 -r 1.1.2.13 src/prefs_summaries.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_summaries.h;  cvs diff -u -r 1.10.2.10 -r 1.10.2.11 src/prefs_summary_column.c;  cvs diff -u -r 1.1 -r 1.2 src/prefs_summary_column.h;  cvs diff -u -r 1.12.2.14 -r 1.12.2.15 src/prefs_template.c;  cvs diff -u -r 1.1 -r 1.2 src/prefs_template.h;  cvs diff -u -r 1.3.2.27 -r 1.3.2.28 src/prefs_themes.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/prefs_themes.h;  cvs diff -u -r 1.30.2.17 -r 1.30.2.18 src/prefs_toolbar.c;  cvs diff -u -r 1.5 -r 1.6 src/prefs_toolbar.h;  cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/prefs_wrapping.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/prefs_wrapping.h;  cvs diff -u -r 1.10.2.6 -r 1.10.2.7 src/privacy.c;  cvs diff -u -r 1.10.2.4 -r 1.10.2.5 src/privacy.h;  cvs diff -u -r 1.47.2.23 -r 1.47.2.24 src/procheader.c;  cvs diff -u -r 1.11.2.3 -r 1.11.2.4 src/procheader.h;  cvs diff -u -r 1.49.2.62 -r 1.49.2.63 src/procmime.c;  cvs diff -u -r 1.17.2.11 -r 1.17.2.12 src/procmime.h;  cvs diff -u -r 1.150.2.45 -r 1.150.2.46 src/procmsg.c;  cvs diff -u -r 1.60.2.18 -r 1.60.2.19 src/procmsg.h;  cvs diff -u -r 1.8.2.3 -r 1.8.2.4 src/quote_fmt.c;  cvs diff -u -r 1.22.2.12 -r 1.22.2.13 src/quote_fmt_parse.y;  cvs diff -u -r 1.17.2.5 -r 1.17.2.6 src/recv.c;  cvs diff -u -r 1.6 -r 1.7 src/recv.h;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/remotefolder.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/remotefolder.h;  cvs diff -u -r 1.17.2.18 -r 1.17.2.19 src/send_message.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/send_message.h;  cvs diff -u -r 1.5.2.7 -r 1.5.2.8 src/setup.c;  cvs diff -u -r 1.1.1.1.16.1 -r 1.1.1.1.16.2 src/setup.h;  cvs diff -u -r 1.1.16.1 -r 1.1.16.2 src/simple-gettext.c;  cvs diff -u -r 1.9.2.14 -r 1.9.2.15 src/sourcewindow.c;  cvs diff -u -r 1.1.1.1 -r 1.1.1.2 src/sourcewindow.h;  cvs diff -u -r 1.3.2.13 -r 1.3.2.14 src/ssl_manager.c;  cvs diff -u -r 1.2 -r 1.3 src/ssl_manager.h;  cvs diff -u -r 1.5.2.6 -r 1.5.2.7 src/statusbar.c;  cvs diff -u -r 1.3.2.2 -r 1.3.2.3 src/statusbar.h;  cvs diff -u -r 1.25.2.17 -r 1.25.2.18 src/stock_pixmap.c;  cvs diff -u -r 1.18.2.11 -r 1.18.2.12 src/stock_pixmap.h;  cvs diff -u -r 1.15.2.17 -r 1.15.2.18 src/summary_search.c;  cvs diff -u -r 1.3 -r 1.4 src/summary_search.h;  cvs diff -u -r 1.395.2.125 -r 1.395.2.126 src/summaryview.c;  cvs diff -u -r 1.68.2.12 -r 1.68.2.13 src/summaryview.h;  cvs diff -u -r 1.16.2.1 -r 1.16.2.2 src/syldap.c;  cvs diff -u -r 1.9 -r 1.10 src/syldap.h;  cvs diff -u -r 1.96.2.77 -r 1.96.2.78 src/textview.c;  cvs diff -u -r 1.12.2.7 -r 1.12.2.8 src/textview.h;  cvs diff -u -r 1.43.2.25 -r 1.43.2.26 src/toolbar.c;  cvs diff -u -r 1.19.2.5 -r 1.19.2.6 src/toolbar.h;  cvs diff -u -r 1.13.2.3 -r 1.13.2.4 src/undo.c;  cvs diff -u -r 1.5.14.2 -r 1.5.14.3 src/undo.h;  cvs diff -u -r 1.8.2.6 -r 1.8.2.7 src/unmime.c;  cvs diff -u -r 1.2.10.1 -r 1.2.10.2 src/unmime.h;  cvs diff -u -r 1.14.2.4 -r 1.14.2.5 src/vcard.c;  cvs diff -u -r 1.5 -r 1.6 src/vcard.h;  cvs diff -u -r 1.1.2.10 -r 1.1.2.11 src/wizard.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/wizard.h;  cvs diff -u -r 1.1.4.2 -r 1.1.4.3 src/common/base64.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/common/base64.h;  cvs diff -u -r 1.9.2.16 -r 1.9.2.17 src/common/defs.h;  cvs diff -u -r 1.10.2.1 -r 1.10.2.2 src/common/hooks.c;  cvs diff -u -r 1.6 -r 1.7 src/common/hooks.h;  cvs diff -u -r 1.6.2.4 -r 1.6.2.5 src/common/log.c;  cvs diff -u -r 1.4.2.1 -r 1.4.2.2 src/common/log.h;  cvs diff -u -r 1.2.2.1 -r 1.2.2.2 src/common/md5.c;  cvs diff -u -r 1.1 -r 1.2 src/common/md5.h;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/common/mgutils.c;  cvs diff -u -r 1.1 -r 1.2 src/common/mgutils.h;  cvs diff -u -r 1.6.2.6 -r 1.6.2.7 src/common/nntp.c;  cvs diff -u -r 1.4 -r 1.5 src/common/nntp.h;  cvs diff -u -r 1.3 -r 1.4 src/common/passcrypt.c;  cvs diff -u -r 1.1 -r 1.2 src/common/passcrypt.h.in;  cvs diff -u -r 1.13.2.7 -r 1.13.2.8 src/common/plugin.c;  cvs diff -u -r 1.5.2.1 -r 1.5.2.2 src/common/plugin.h;  cvs diff -u -r 1.5.2.2 -r 1.5.2.3 src/common/prefs.c;  cvs diff -u -r 1.3 -r 1.4 src/common/prefs.h;  cvs diff -u -r 1.1 -r 1.2 src/common/progressindicator.c;  cvs diff -u -r 1.1 -r 1.2 src/common/progressindicator.h;  cvs diff -u -r 1.3.2.3 -r 1.3.2.4 src/common/quoted-printable.c;  cvs diff -u -r 1.3 -r 1.4 src/common/quoted-printable.h;  cvs diff -u -r 1.23.2.6 -r 1.23.2.7 src/common/session.c;  cvs diff -u -r 1.8.2.5 -r 1.8.2.6 src/common/session.h;  cvs diff -u -r 1.11.2.12 -r 1.11.2.13 src/common/smtp.c;  cvs diff -u -r 1.6.2.7 -r 1.6.2.8 src/common/smtp.h;  cvs diff -u -r 1.13.2.15 -r 1.13.2.16 src/common/socket.c;  cvs diff -u -r 1.13.2.3 -r 1.13.2.4 src/common/socket.h;  cvs diff -u -r 1.9.2.7 -r 1.9.2.8 src/common/ssl.c;  cvs diff -u -r 1.2.2.1 -r 1.2.2.2 src/common/ssl.h;  cvs diff -u -r 1.4.2.2 -r 1.4.2.3 src/common/ssl_certificate.c;  cvs diff -u -r 1.1 -r 1.2 src/common/ssl_certificate.h;  cvs diff -u -r 1.1.4.2 -r 1.1.4.3 src/common/string_match.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/common/string_match.h;  cvs diff -u -r 1.2.2.1 -r 1.2.2.2 src/common/stringtable.c;  cvs diff -u -r 1.7.2.4 -r 1.7.2.5 src/common/sylpheed.c;  cvs diff -u -r 1.5.2.1 -r 1.5.2.2 src/common/sylpheed.h;  cvs diff -u -r 1.2.4.13 -r 1.2.4.14 src/common/template.c;  cvs diff -u -r 1.1 -r 1.2 src/common/template.h;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/common/timing.h;  cvs diff -u -r 1.36.2.44 -r 1.36.2.45 src/common/utils.c;  cvs diff -u -r 1.20.2.24 -r 1.20.2.25 src/common/utils.h;  cvs diff -u -r 1.1 -r 1.2 src/common/uuencode.c;  cvs diff -u -r 1.1 -r 1.2 src/common/uuencode.h;  cvs diff -u -r 1.3.2.1 -r 1.3.2.2 src/common/version.h.in;  cvs diff -u -r 1.1.4.12 -r 1.1.4.13 src/common/xml.c;  cvs diff -u -r 1.1.4.4 -r 1.1.4.5 src/common/xml.h;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/common/xmlprops.c;  cvs diff -u -r 1.2 -r 1.3 src/common/xmlprops.h;  cvs diff -u -r 1.4.2.17 -r 1.4.2.18 src/gtk/about.c;  cvs diff -u -r 1.1 -r 1.2 src/gtk/about.h;  cvs diff -u -r 1.2.2.7 -r 1.2.2.8 src/gtk/colorlabel.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/gtk/colorlabel.h;  cvs diff -u -r 1.1.4.5 -r 1.1.4.6 src/gtk/colorsel.c;  cvs diff -u -r 1.1 -r 1.2 src/gtk/colorsel.h;  cvs diff -u -r 1.5.2.13 -r 1.5.2.14 src/gtk/description_window.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/gtk/description_window.h;  cvs diff -u -r 1.2.2.15 -r 1.2.2.16 src/gtk/filesel.c;  cvs diff -u -r 1.1.4.5 -r 1.1.4.6 src/gtk/filesel.h;  cvs diff -u -r 1.1.2.6 -r 1.1.2.7 src/gtk/foldersort.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/gtk/foldersort.h;  cvs diff -u -r 1.5.2.13 -r 1.5.2.14 src/gtk/gtkutils.c;  cvs diff -u -r 1.4.2.11 -r 1.4.2.12 src/gtk/gtkutils.h;  cvs diff -u -r 1.2.2.10 -r 1.2.2.11 src/gtk/inputdialog.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/gtk/inputdialog.h;  cvs diff -u -r 1.1.4.11 -r 1.1.4.12 src/gtk/logwindow.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/gtk/logwindow.h;  cvs diff -u -r 1.1 -r 1.2 src/gtk/manage_window.c;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/gtk/manage_window.h;  cvs diff -u -r 1.5.2.16 -r 1.5.2.17 src/gtk/menu.c;  cvs diff -u -r 1.4.2.6 -r 1.4.2.7 src/gtk/menu.h;  cvs diff -u -r 1.5.2.18 -r 1.5.2.19 src/gtk/pluginwindow.c;  cvs diff -u -r 1.1 -r 1.2 src/gtk/pluginwindow.h;  cvs diff -u -r 1.12.2.21 -r 1.12.2.22 src/gtk/prefswindow.c;  cvs diff -u -r 1.7.2.3 -r 1.7.2.4 src/gtk/prefswindow.h;  cvs diff -u -r 1.1.4.14 -r 1.1.4.15 src/gtk/progressdialog.c;  cvs diff -u -r 1.1.4.7 -r 1.1.4.8 src/gtk/progressdialog.h;  cvs diff -u -r 1.1.2.21 -r 1.1.2.22 src/gtk/quicksearch.c;  cvs diff -u -r 1.1.2.6 -r 1.1.2.7 src/gtk/quicksearch.h;  cvs diff -u -r 1.9.2.5 -r 1.9.2.6 src/gtk/sslcertwindow.c;  cvs diff -u -r 1.6 -r 1.7 src/gtk/sslcertwindow.h;  cvs diff -u -r 1.13.2.9 -r 1.13.2.10 src/plugins/clamav/clamav_plugin.c;  cvs diff -u -r 1.3.2.1 -r 1.3.2.2 src/plugins/clamav/clamav_plugin.h;  cvs diff -u -r 1.9.2.8 -r 1.9.2.9 src/plugins/clamav/clamav_plugin_gtk.c;  cvs diff -u -r 1.13.2.1 -r 1.13.2.2 src/plugins/demo/demo.c;  cvs diff -u -r 1.5.2.6 -r 1.5.2.7 src/plugins/dillo_viewer/dillo_prefs.c;  cvs diff -u -r 1.2 -r 1.3 src/plugins/dillo_viewer/dillo_prefs.h;  cvs diff -u -r 1.12.2.5 -r 1.12.2.6 src/plugins/dillo_viewer/dillo_viewer.c;  cvs diff -u -r 1.9.2.4 -r 1.9.2.5 src/plugins/mathml_viewer/mathml_viewer.c;  cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/plugins/pgpcore/passphrase.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpcore/passphrase.h;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpcore/plugin.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/plugins/pgpcore/prefs_gpg.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/plugins/pgpcore/prefs_gpg.h;  cvs diff -u -r 1.1.2.6 -r 1.1.2.7 src/plugins/pgpcore/select-keys.c;  cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/plugins/pgpcore/select-keys.h;  cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/plugins/pgpcore/sgpgme.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpcore/sgpgme.h;  cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/plugins/pgpinline/pgpinline.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpinline/pgpinline.h;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/plugins/pgpinline/plugin.c;  cvs diff -u -r 1.1.2.23 -r 1.1.2.24 src/plugins/pgpmime/pgpmime.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/pgpmime.h;  cvs diff -u -r 1.1.2.11 -r 1.1.2.12 src/plugins/pgpmime/plugin.c;  cvs diff -u -r 1.18.2.8 -r 1.18.2.9 src/plugins/spamassassin/spamassassin.c;  cvs diff -u -r 1.4.2.2 -r 1.4.2.3 src/plugins/spamassassin/spamassassin.h;  cvs diff -u -r 1.23.2.11 -r 1.23.2.12 src/plugins/spamassassin/spamassassin_gtk.c;  cvs diff -u -r 1.14.2.19 -r 1.14.2.20 src/plugins/trayicon/trayicon.c;  cvs diff -u -r 1.3 -r 1.4 tools/OOo2sylpheed.pl;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 tools/acroread2sylpheed.pl;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 tools/asus_mailled.sh;  cvs diff -u -r 1.16.2.1 -r 1.16.2.2 tools/filter_conv.pl;  cvs diff -u -r 1.3 -r 1.4 tools/freshmeat_search.pl;  cvs diff -u -r 1.3 -r 1.4 tools/google_search.pl;  cvs diff -u -r 1.1 -r 1.2 tools/kmail2sylpheed.pl;  cvs diff -u -r 1.3 -r 1.4 tools/kmail2sylpheed_v2.pl;  cvs diff -u -r 1.2.2.1 -r 1.2.2.2 tools/maildir2sylpheed.pl;  cvs diff -u -r 1.3 -r 1.4 tools/multiwebsearch.pl;  cvs diff -u -r 1.2 -r 1.3 tools/newscache_clean.pl;  cvs diff -u -r 1.2 -r 1.3 tools/outlook2sylpheed.pl;  cvs diff -u -r 1.1 -r 1.2 tools/sylpheed-switcher;  cvs diff -u -r 1.2 -r 1.3 tools/update-po;  cvs diff -u -r 1.1.4.1 -r 1.1.4.2 tools/vcard2xml.py;  cvs diff -u -r 1.5.2.1 -r 1.5.2.2 tools/kdeservicemenu/sylpheed-kdeservicemenu.pl;  ) > 1.9.14cvs47.patchset
 ( cvs diff -u -r 1.382.2.174 -r 1.382.2.175 src/compose.c;  ) > 1.9.14cvs48.patchset
+( cvs diff -u -r 1.65.2.38 -r 1.65.2.39 src/codeconv.c;  cvs diff -u -r 1.15.2.12 -r 1.15.2.13 src/codeconv.h;  cvs diff -u -r 1.382.2.175 -r 1.382.2.176 src/compose.c;  cvs diff -u -r 1.50.2.12 -r 1.50.2.13 src/compose.h;  cvs diff -u -r 1.204.2.58 -r 1.204.2.59 src/prefs_common.c;  cvs diff -u -r 1.103.2.29 -r 1.103.2.30 src/prefs_common.h;  cvs diff -u -r 1.22.2.13 -r 1.22.2.14 src/quote_fmt_parse.y;  cvs diff -u -r 1.395.2.126 -r 1.395.2.127 src/summaryview.c;  ) > 1.9.14cvs49.patchset
index 2af63e837bd0b4839929b76a6842a583085b0453..5af67dd9438c575e90ed03986a7e0b99a0acb819 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=14
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=48
+EXTRA_VERSION=49
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index 2c4f0177b03b5993542525099ae42e624be93806..fbac9bcdbce4ae87e8b24b086d124914a817fb72 100644 (file)
@@ -126,6 +126,13 @@ static void conv_anytodisp(gchar *outbuf, gint outlen, const gchar *inbuf);
 static void conv_ustodisp(gchar *outbuf, gint outlen, const gchar *inbuf);
 static void conv_noconv(gchar *outbuf, gint outlen, const gchar *inbuf);
 
+static gboolean strict_mode = FALSE;
+
+void codeconv_set_strict(gboolean mode)
+{
+       strict_mode = mode;
+}
+
 static void conv_jistoeuc(gchar *outbuf, gint outlen, const gchar *inbuf)
 {
        const guchar *in = inbuf;
@@ -907,6 +914,10 @@ gchar *conv_iconv_strdup_with_cd(const gchar *inbuf, iconv_t cd)
        while ((n_conv = iconv(cd, (ICONV_CONST gchar **)&inbuf_p, &in_left,
                               &outbuf_p, &out_left)) == (size_t)-1) {
                if (EILSEQ == errno) {
+                       if (strict_mode) {
+                               g_free(outbuf);
+                               return NULL;
+                       }
                        //g_print("iconv(): at %d: %s\n", in_size - in_left, g_strerror(errno));
                        inbuf_p++;
                        in_left--;
index e5283c52bd05a7bba21dcee22e1ec3dfdca5c8e9..4318ae665891c7a163ed036f78b9008bcdd01fc1 100644 (file)
@@ -227,5 +227,5 @@ void conv_encode_header_full                (gchar          *dest,
 
 gchar *conv_filename_from_utf8         (const gchar    *utf8_file);
 gchar *conv_filename_to_utf8           (const gchar    *fs_file);
-
+void codeconv_set_strict               (gboolean        mode);
 #endif /* __CODECONV_H__ */
index ece0f4960d512a38da86a5ba4c9c64902888060a..7e59990c0e945daa513f40510ae7c2dfec0e964c 100644 (file)
@@ -79,6 +79,7 @@
 #  include <wctype.h>
 #endif
 
+#include "sylpheed.h"
 #include "main.h"
 #include "mainwindow.h"
 #include "compose.h"
@@ -494,7 +495,7 @@ static void compose_check_forwards_go          (Compose *compose);
 static gint compose_defer_auto_save_draft      (Compose        *compose);
 static PrefsAccount *compose_guess_forward_account_from_msginfo        (MsgInfo *msginfo);
 
-static void compose_close      (Compose *compose);
+static gboolean compose_close  (Compose *compose);
 
 static GtkItemFactoryEntry compose_popup_entries[] =
 {
@@ -3430,7 +3431,10 @@ gint compose_send(Compose *compose)
        val = compose_queue(compose, &msgnum, &folder);
 
        if (val) {
-               if (val == -3) {
+               if (val == -4) {
+                       alertpanel_error(_("Could not queue message for sending:\n\n"
+                                          "Charset conversion failed."));
+               } else if (val == -3) {
                        alertpanel_error(_("Could not queue message for sending:\n\n"
                                           "Signature failed."));
                } else if (val == -2) {
@@ -3762,8 +3766,10 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action)
                            src_codeset, out_codeset, procmime_get_encoding_str(encoding));
 
                if (action == COMPOSE_WRITE_FOR_SEND) {
+                       codeconv_set_strict(TRUE);
                        buf = conv_codeset_strdup(chars, src_codeset, out_codeset);
-                       
+                       codeconv_set_strict(FALSE);
+
                        if (!buf) {
                                AlertValue aval;
                                gchar *msg;
@@ -3777,7 +3783,7 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action)
 
                                if (aval != G_ALERTDEFAULT) {
                                        g_free(chars);
-                                       return -1;
+                                       return -3;
                                } else {
                                        buf = chars;
                                        out_codeset = src_codeset;
@@ -4134,7 +4140,7 @@ static gint compose_queue_sub(Compose *compose, gint *msgnum, FolderItem **item,
                        fclose(fp);
                        g_unlink(tmp);
                        g_free(tmp);
-                       return result - 1; /* -2 for a generic error, -3 for signing error */
+                       return result - 1; /* -2 for a generic error, -3 for signing error, -4 for encoding */
                }
        }
 
@@ -4965,7 +4971,9 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
        titles[COL_NAME]     = _("Name");
 
        compose->account = account;
-
+       
+       compose->mutex = g_mutex_new();
+       
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
        gtk_widget_set_size_request(window, -1, prefs_common.compose_height);
@@ -5751,6 +5759,7 @@ static void compose_destroy(Compose *compose)
        gtk_widget_destroy(compose->window);
        toolbar_destroy(compose->toolbar);
        g_free(compose->toolbar);
+       g_mutex_free(compose->mutex);
        g_free(compose);
 }
 
@@ -6590,14 +6599,23 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget)
 
        draft = account_get_special_folder(compose->account, F_DRAFT);
        g_return_if_fail(draft != NULL);
-
+       
+       if (!g_mutex_trylock(compose->mutex)) {
+               /* we don't want to lock the mutex once it's available,
+                * because as the only other part of compose.c locking
+                * it is compose_close - which means once unlocked,
+                * the compose struct will be freed */
+               debug_print("couldn't lock mutex, probably sending\n");
+               return;
+       }
+       
        lock = TRUE;
 
        tmp = g_strdup_printf("%s%cdraft.%p", get_tmp_dir(),
                              G_DIR_SEPARATOR, compose);
        if ((fp = g_fopen(tmp, "wb")) == NULL) {
                FILE_OP_ERROR(tmp, "fopen");
-               return;
+               goto unlock;
        }
 
        /* chmod for security */
@@ -6627,8 +6645,7 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget)
                fclose(fp);
                g_unlink(tmp);
                g_free(tmp);
-               lock = FALSE;
-               return;
+               goto unlock;
        }
        fclose(fp);
 
@@ -6636,10 +6653,9 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget)
        if ((msgnum = folder_item_add_msg(draft, tmp, &flag, TRUE)) < 0) {
                g_unlink(tmp);
                g_free(tmp);
-               lock = FALSE;
                if (action != COMPOSE_AUTO_SAVE)
                        alertpanel_error(_("Could not save draft."));
-               return;
+               goto unlock;
        }
        g_free(tmp);
        draft->mtime = 0;       /* force updating */
@@ -6661,11 +6677,12 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget)
        
        folder_item_scan(draft);
        
-       lock = FALSE;
-
-       if (action == COMPOSE_QUIT_EDITING)
+       if (action == COMPOSE_QUIT_EDITING) {
+               lock = FALSE;
+               g_mutex_unlock(compose->mutex); /* must be done before closing */
                compose_close(compose);
-       else {
+               return;
+       } else {
                struct stat s;
                gchar *path;
 
@@ -6674,8 +6691,7 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget)
                if (g_stat(path, &s) < 0) {
                        FILE_OP_ERROR(path, "stat");
                        g_free(path);
-                       lock = FALSE;
-                       return;
+                       goto unlock;
                }
                g_free(path);
 
@@ -6693,6 +6709,9 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget)
                compose->modified = FALSE;
                compose_set_title(compose);
        }
+unlock:
+       lock = FALSE;
+       g_mutex_unlock(compose->mutex);
 }
 
 static void compose_attach_cb(gpointer data, guint action, GtkWidget *widget)
@@ -7435,8 +7454,9 @@ static void compose_attach_drag_received_cb (GtkWidget            *widget,
 {
        Compose *compose = (Compose *)user_data;
        GList *list, *tmp;
-       
-       if (gdk_atom_name(data->type) && !strcmp(gdk_atom_name(data->type), "text/uri-list")) {
+
+       if (gdk_atom_name(data->type) && 
+           !strcmp(gdk_atom_name(data->type), "text/uri-list")) {
                list = uri_list_extract_filenames((const gchar *)data->data);
                for (tmp = list; tmp != NULL; tmp = tmp->next)
                        compose_attach_append
@@ -7445,6 +7465,32 @@ static void compose_attach_drag_received_cb (GtkWidget           *widget,
                if (list) compose_changed_cb(NULL, compose);
                list_free_strings(list);
                g_list_free(list);
+       } else if (gdk_atom_name(data->type) && 
+                  !strcmp(gdk_atom_name(data->type), "text/plain") &&
+                  data->data && !strcmp(data->data, "Dummy-Summaryview")) {
+               /* comes from our summaryview */
+               SummaryView * summaryview = NULL;
+               GSList * list = NULL, *cur = NULL;
+               
+               if (mainwindow_get_mainwindow())
+                       summaryview = mainwindow_get_mainwindow()->summaryview;
+               
+               if (summaryview)
+                       list = summary_get_selected_msg_list(summaryview);
+               
+               for (cur = list; cur; cur = cur->next) {
+                       MsgInfo *msginfo = (MsgInfo *)cur->data;
+                       gchar *file = NULL;
+                       if (msginfo)
+                               file = procmsg_get_message_file_full(msginfo, 
+                                       TRUE, TRUE);
+                       if (file) {
+                               compose_attach_append(compose, (const gchar *)file, 
+                                       (const gchar *)file, "message/rfc822");
+                               g_free(file);
+                       }
+               }
+               g_slist_free(list);
        }
 }
 
@@ -7745,15 +7791,25 @@ static PrefsAccount *compose_guess_forward_account_from_msginfo(MsgInfo *msginfo
        return account;
 }
 
-static void compose_close(Compose *compose)
+static gboolean compose_close(Compose *compose)
 {
        gint x, y;
 
-       g_return_if_fail(compose);
+       if (!g_mutex_trylock(compose->mutex)) {
+               /* we have to wait for the (possibly deferred by auto-save)
+                * drafting to be done, before destroying the compose under
+                * it. */
+               debug_print("waiting for drafting to finish...\n");
+               g_timeout_add (500, (GSourceFunc) compose_close, compose);
+               return FALSE;
+       }
+       g_return_val_if_fail(compose, FALSE);
        gtkut_widget_get_uposition(compose->window, &x, &y);
        prefs_common.compose_x = x;
        prefs_common.compose_y = y;
+       g_mutex_unlock(compose->mutex);
        compose_destroy(compose);
+       return FALSE;
 }
 
 /**
index 12df03afb405d781f4a087e303afa3a319ebc939..f06de82748b942beb3145e2c464d4af08c022fef 100644 (file)
@@ -216,6 +216,7 @@ struct _Compose
        guint draft_timeout_tag;
        
        GtkTextTag *no_wrap_tag;
+       GMutex *mutex;
 };
 
 struct _AttachInfo
index 5caed61b82a702a368ed0aa5ce19eff02c03752a..acc109bd4238f6b1beb4a2771c291c3642ee709a 100644 (file)
@@ -239,8 +239,6 @@ static PrefParam param[] = {
         NULL, NULL, NULL},
 
        /* Display: Summary View */
-       {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
-        NULL, NULL, NULL},
        {"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
         NULL, NULL, NULL},
        {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
@@ -248,14 +246,8 @@ static PrefParam param[] = {
        {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
         P_STRING, NULL, NULL, NULL},
 
-       {"enable_rules_hint", "TRUE", &prefs_common.enable_rules_hint, P_BOOL,
-        NULL, NULL, NULL},
-       {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
-        NULL, NULL, NULL},
        {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
         NULL, NULL, NULL},
-       {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
-       P_INT, NULL, NULL, NULL },
 
        {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
         NULL, NULL, NULL},
@@ -268,9 +260,6 @@ static PrefParam param[] = {
        {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
         NULL, NULL, NULL},
 
-       {"folderview_vscrollbar_policy", "0",
-        &prefs_common.folderview_vscrollbar_policy, P_ENUM,
-        NULL, NULL, NULL},
 
        {"summary_col_show_mark", "TRUE",
         &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
@@ -455,9 +444,6 @@ static PrefParam param[] = {
         NULL, NULL, NULL},
        {"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
         NULL, NULL, NULL},
-       {"textview_cursor_visible", "FALSE",
-        &prefs_common.textview_cursor_visible, P_BOOL,
-        NULL, NULL, NULL},
        {"line_space", "2", &prefs_common.line_space, P_INT,
         NULL, NULL, NULL},
 
@@ -490,8 +476,6 @@ static PrefParam param[] = {
         NULL, NULL, NULL},
        {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
         NULL, NULL, NULL},
-       {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
-        NULL, NULL, NULL},
 
        /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
         NULL, NULL, NULL}, */
@@ -517,9 +501,6 @@ static PrefParam param[] = {
         &prefs_common.pixmap_theme_path, P_STRING,
         NULL, NULL, NULL},
 
-       {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
-        NULL, NULL, NULL},
-       
        /* Other */
        {"uri_open_command", DEFAULT_BROWSER_CMD,
         &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
@@ -542,8 +523,6 @@ static PrefParam param[] = {
         NULL, NULL, NULL},
        {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
         NULL, NULL, NULL},
-       {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
-        NULL, NULL, NULL},
        {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
         NULL, NULL, NULL},
 
@@ -558,11 +537,6 @@ static PrefParam param[] = {
        {"log_length", "500", &prefs_common.loglength, P_INT,
         NULL, NULL, NULL},
 
-       {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
-        NULL, NULL, NULL},
-       {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
-        NULL, NULL, NULL},
-
        {"color_new", "179", &prefs_common.color_new, P_COLOR,
         NULL, NULL, NULL},
 
@@ -570,8 +544,37 @@ static PrefParam param[] = {
         NULL, NULL, NULL},
        {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
         NULL, NULL, NULL},
+
+       /* Hidden */
        {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
         NULL, NULL, NULL},
+       {"utf8_instead_of_locale_for_broken_mail", "0", 
+        &prefs_common.broken_are_utf8, P_INT,
+        NULL, NULL, NULL},
+       {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
+        NULL, NULL, NULL},
+       {"enable_rules_hint", "TRUE", &prefs_common.enable_rules_hint, P_BOOL,
+        NULL, NULL, NULL},
+       {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
+        NULL, NULL, NULL},
+       {"folderview_vscrollbar_policy", "0",
+        &prefs_common.folderview_vscrollbar_policy, P_ENUM,
+        NULL, NULL, NULL},
+       {"textview_cursor_visible", "FALSE",
+        &prefs_common.textview_cursor_visible, P_BOOL,
+        NULL, NULL, NULL},
+       {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
+        NULL, NULL, NULL},
+       {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
+        NULL, NULL, NULL},
+       {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
+        NULL, NULL, NULL},
+       {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
+       P_INT, NULL, NULL, NULL },
+       {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
+        NULL, NULL, NULL},
+       {"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
+        NULL, NULL, NULL},
 
        {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
 };
index 27d2cd536ce793ebf602bde5e78b399d3b8ceaf8..2bcf8ba75e02a43844df07d279fb12f50230c738 100644 (file)
@@ -324,6 +324,7 @@ struct _PrefsCommon
        gint filteringwin_width;
        gint filteringwin_height;
        gint warn_dnd;
+       gint broken_are_utf8;
 };
 
 extern PrefsCommon prefs_common;
index 7baf7f2eeafc78aad66ab7641b4665b777a7f499..e7938691e2d00944d065c276ed41418ffb5a3c62 100644 (file)
@@ -304,7 +304,7 @@ static void quote_fmt_show_sender_initial(const MsgInfo *msginfo)
        p = msginfo->fromname;
        cur = tmp;
        while (*p) {
-               if (*p && isalnum(*p)) {
+               if (*p && g_utf8_validate(p, 1, NULL)) {
                        *cur = toupper(*p);
                                cur++;
                        len++;
index 462b6aa7baccb0e714727165244ce05c26220bb0..3a5f4b30fbaa4b83298d51f9a80385c9bb28bd62 100644 (file)
@@ -5028,7 +5028,8 @@ static void summary_drag_data_get(GtkWidget        *widget,
                if (GTK_CLIST(summaryview->ctree)->selection)
                        gtk_selection_data_set(selection_data,
                                               selection_data->target, 8,
-                                              "Dummy", 6);
+                                              "Dummy-Summaryview", 
+                                              strlen("Dummy-Summaryview")+1);
        }
 }