inital gtk2 patch
authorThorsten Maerz <torte@netztorte.de>
Sun, 5 Oct 2003 10:10:30 +0000 (10:10 +0000)
committerThorsten Maerz <torte@netztorte.de>
Sun, 5 Oct 2003 10:10:30 +0000 (10:10 +0000)
116 files changed:
ChangeLog-gtk2 [new file with mode: 0644]
ChangeLog-gtk2.jp [new file with mode: 0644]
Makefile.am
TODO-gtk2 [new file with mode: 0644]
TODO-gtk2.jp [new file with mode: 0644]
autogen.sh
configure.ac
po/Makefile.in.in
src/Makefile.am
src/account.c
src/action.c
src/addr_compl.c
src/addressadd.c
src/addressbook.c
src/addrgather.c
src/alertpanel.c
src/codeconv.c
src/codeconv.h
src/common/defs.h
src/common/intl.h
src/common/socket.c
src/common/sylpheed.c
src/common/template.c
src/common/utils.c
src/common/utils.h
src/common/xml.c
src/compose.c
src/compose.h
src/editaddress.c
src/editbook.c
src/editgroup.c
src/editjpilot.c
src/editldap.c
src/editldap_basedn.c
src/editvcard.c
src/exphtmldlg.c
src/expldifdlg.c
src/export.c
src/folder.h
src/foldersel.c
src/folderview.c
src/grouplistdialog.c
src/gtk/Makefile.am
src/gtk/about.c
src/gtk/colorlabel.c
src/gtk/colorlabel.h
src/gtk/description_window.c
src/gtk/filesel.c
src/gtk/gtksctree.c
src/gtk/gtksctree.h
src/gtk/gtkshruler.c
src/gtk/gtkshruler.h
src/gtk/gtkutils.c
src/gtk/gtkutils.h
src/gtk/manage_window.h
src/gtk/menu.c
src/gtk/menu.h
src/gtk/pluginwindow.c
src/gtk/sylpheed-marshal.list [new file with mode: 0644]
src/headerview.c
src/imap.c
src/import.c
src/importldif.c
src/importmutt.c
src/importpine.c
src/inc.c
src/inputdialog.c
src/jpilot.c
src/logwindow.c
src/main.c
src/mainwindow.c
src/matcher.h
src/matcher_parser.h
src/matcher_parser_parse.y
src/mbox.h
src/message_search.c
src/messageview.c
src/mh.c
src/mimeview.c
src/mutt.c
src/passphrase.c
src/pine.c
src/plugins/image_viewer/Makefile.am
src/plugins/image_viewer/viewer.c
src/prefs_account.c
src/prefs_actions.c
src/prefs_common.c
src/prefs_common.h
src/prefs_customheader.c
src/prefs_display_header.c
src/prefs_filtering.c
src/prefs_filtering_action.c
src/prefs_folder_item.c
src/prefs_gtk.c
src/prefs_matcher.c
src/prefs_scoring.c
src/prefs_summary_column.c
src/prefs_template.c
src/prefs_toolbar.c
src/procheader.c
src/procmime.c
src/procmsg.h
src/progressdialog.c
src/select-keys.c
src/sigstatus.c
src/sourcewindow.c
src/stock_pixmap.c
src/summary_search.c
src/summaryview.c
src/textview.c
src/textview.h
src/toolbar.c
src/undo.c
src/undo.h
src/unmime.c
src/vcard.c

diff --git a/ChangeLog-gtk2 b/ChangeLog-gtk2
new file mode 100644 (file)
index 0000000..d01a864
--- /dev/null
@@ -0,0 +1,130 @@
+2003-09-14 Takuro Ashie <ashie@homa.ne.jp>
+
+        * Enabled to compile on sylpheed-claws.
+       (tray-icon plugin still cannot compile yet.)
+
+2003-09-06 Takuro Ashie <ashie@homa.ne.jp>
+
+        * Updated to 0.9.5.
+
+2003-08-02 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Updated to 0.9.4.
+       * Ported monitoring SSL mechanism to GSource of GLib2
+       (I don't confirm it)
+       * Added _gtk2 suffix to key name of font preference to avoid
+       ovverwriting preference of Gtk+-1.2 version.
+
+2003-06-09 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Updated to 0.9.2.
+
+2003-05-30 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Updated to 0.9.1.
+        * Translate po files into UTF-8 when execute autogen.sh.
+
+2003-05-28 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Updated to 0.9.0.
+
+2003-04-29 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Plugged GError related memory leaks.
+
+2003-04-28 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Changed default size of fonts.
+       * Enabled to set titile font size of warning dialog.
+
+2003-04-23 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Embed a sylpheed icon into executable binary on Windows.
+
+2003-04-21 Takuro Ashie <ashie@homa.ne.jp>
+
+       * I forgot to traslate character set of element string in src/xml.c.
+
+2003-04-18 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Fixed detecting bind_textdomain_codeset in configure.in.
+       * The bug in which "Example" of "Date fromat" preference isn't displayed
+       correctly has been fixed.
+
+2003-04-04 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Added bind_textdomain_codeset into AC_CHECK_FUNCS.
+         Replaced AM_GLIB_GNU_GETTEXT to AM_GNU_GETTEXT.
+         glib-gettextize
+         Removed intl directory.
+         Translated po files into UTF-8.
+         (Thanks! Ryuji Abe)
+
+2003-03-28 Takuro Ashie <ashie@homa.ne.jp>
+
+       * The bug which doesn't unscape string in xml.c has been fixed.
+
+2003-03-27 Takuro Ashie <ashie@homa.ne.jp>
+
+       * The bug which is failed to translate encoding of file name thorough
+       file dialog has been fixed.
+
+2003-03-25 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Modified to translate file names which is used in inporting/expoting
+       mbox feature and "Save as" feature into locale encoding.
+       * Translate file names into locale encoding when "Attache file" and
+       "Insert file".
+       * Force set G_BROKEN_FILENAMES environment variable.
+       * Other minor fixes.
+
+2003-03-17 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Modified to treat MH folder's name as locale encoding.
+
+2003-03-16 Takuro Ashie <ashie@homa.ne.jp>
+
+       * The bug which clash on switching candidates of auto completion of
+       addresses, cannot use auto completion in Japanesse is fixed
+       (Thanks! Tokunaga-san)¡¥
+
+2003-03-14 Takuro Ashie <ashie@homa.ne.jp>
+
+       * The bug which cannot switch key accelerator preference has been fixed
+       (Thanks! smbd-san)¡¥
+
+2003-03-14 Takuro Ashie <ashie@homa.ne.jp>
+
+       * version 0.8.11-gtk2-20030314
+
+2003-03-14 Takuro Ashie <ashie@homa.ne.jp>
+
+       * The bug in which character set conversion of filtering messages has
+       been fixed.(Thanks! COCOA-san).
+
+2003-03-13 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Revived "Leave space on head" preference in "Message" category.
+       * A bug which clash when put the cursor to end of buffer and execute
+       "Wrap current paragraph" was fixed.(Thanks! Tokunaga-san)
+
+2003-03-12 Takuro Ashie <ashie@homa.ne.jp>
+
+       * version 0.8.11-gtk2-20030312
+
+2003-03-12 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Fixed position of  switching account popup (Thanks! Ikezoe-san)¡¥
+       * Modified to use Pango's API directly for font preference.
+       * Integrated GtkTextView of textview to one widget.
+       * Set fonts of header title in textview by "header_title" tag.
+       * Removed some deprecated codes.
+
+2003-03-11 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Updated to 0.8.11.
+       * Merged cygwin patch(Thanks! Sakai-san).
+
+2003-03-09 Takuro Ashie <ashie@homa.ne.jp>
+
+       * version 0.8.10-gtk2-20030309
diff --git a/ChangeLog-gtk2.jp b/ChangeLog-gtk2.jp
new file mode 100644 (file)
index 0000000..5e33ff6
--- /dev/null
@@ -0,0 +1,126 @@
+2003-09-14 Takuro Ashie <ashie@homa.ne.jp>
+
+        * sylpheed-claws¤Ç¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤ë¤è¤¦¤Ë¤·¤¿
+       (¥È¥ì¥¤¥¢¥¤¥³¥ó¥×¥é¥°¥¤¥ó¤Ï¤Þ¤À¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤Ê¤¤)
+
+2003-09-06 Takuro Ashie <ashie@homa.ne.jp>
+
+        * 0.9.5¤ËÄɽ¾
+
+2003-08-02 Takuro Ashie <ashie@homa.ne.jp>
+
+       * 0.9.4¤ËÄɽ¾
+       * SSL´Æ»ëµ¡¹½¤òGLib2¤ÎGSource¤ËÂбþ¤µ¤»¤¿(Æ°ºî̤³Îǧ)
+       * ¥Õ¥©¥ó¥ÈÀßÄê¤Î¥­¡¼Ì¾¤Ë_gtk2¥µ¥Õ¥£¥Ã¥¯¥¹¤ò¤Ä¤±¡¤Gtk+-1.2¥Ð¡¼¥¸¥ç¥ó¤È
+       ¶¦Â¸¤Ç¤­¤ë¤è¤¦¤Ë¤·¤¿
+
+2003-06-09 Takuro Ashie <ashie@homa.ne.jp>
+
+       * 0.9.2¤ËÄɽ¾
+
+2003-05-30 Takuro Ashie <ashie@homa.ne.jp>
+
+       * 0.9.1¤ËÄɽ¾
+        * po¥Õ¥¡¥¤¥ë¤Ïautogen.sh¤ÇÊÑ´¹¤¹¤ë¤è¤¦¤Ë¤·¤¿
+
+2003-05-28 Takuro Ashie <ashie@homa.ne.jp>
+
+       * 0.9.0¤ËÄɽ¾
+
+2003-04-29 Takuro Ashie <ashie@homa.ne.jp>
+
+       * GError¤Î¥á¥â¥ê¥ê¡¼¥¯¤ò½¤Àµ
+
+2003-04-28 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¥Õ¥©¥ó¥È¤Î¥Ç¥Õ¥©¥ë¥È¥µ¥¤¥º¤òÊѹ¹
+       * ·Ù¹ð¥À¥¤¥¢¥í¥°¤Î¥¿¥¤¥È¥ë¥Õ¥©¥ó¥È¤òÀßÄê¤Ç¤­¤ë¤è¤¦¤Ë¤·¤¿
+
+2003-04-23 Takuro Ashie <ashie@homa.ne.jp>
+
+       * Windows¤Ç¤Î¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¡¤¼Â¹Ô¥Õ¥¡¥¤¥ë¤Ë¥¢¥¤¥³¥ó¤òËä¤á¹þ¤à¤è¤¦¤Ë¤·¤¿
+
+2003-04-21 Takuro Ashie <ashie@homa.ne.jp>
+
+       * src/xml.cÆâ¤Ç¥¨¥ì¥á¥ó¥È¤Îʸ»ú¥³¡¼¥ÉÊÑ´¹¤¬È´¤±¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ
+
+2003-04-18 Takuro Ashie <ashie@homa.ne.jp>
+
+       * bind_textdomain_codeset¤Î¸¡½Ð¤ò½¤Àµ
+       * ÆüÉդνñ¼°ÀßÄê¤Îɽ¼¨Î㤬Àµ¤·¤¯É½¼¨¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¤Î¤ò½¤Àµ
+
+2003-04-04 Takuro Ashie <ashie@homa.ne.jp>
+
+       * AC_CHECK_FUNCS¤Ëbind_textdomain_codeset¤òÄɲÃ
+         AM_GNU_GETTEXT¤òAM_GLIB_GNU_GETTEXT¤ËÃÖ¤­´¹¤¨
+         glib-gettextize
+         intl¥Ç¥£¥ì¥¯¥È¥ê¤òºï½ü
+         po¥Õ¥¡¥¤¥ë¤òUTF-8¤ËÊÑ´¹
+         (Thanks! °ÂÉôεÆ󤵤ó)
+
+2003-03-28 Takuro Ashie <ashie@homa.ne.jp>
+
+       * xml.cÆâ¤ÇunescapeÁ°¤Ëʸ»ú¥³¡¼¥ÉÊÑ´¹¤ò¹Ô¤Ã¤Æ¤¤¤¿ÌäÂê¤ò½¤Àµ
+
+2003-03-27 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¥Õ¥¡¥¤¥ëÁªÂò¥À¥¤¥¢¥í¥°·Ðͳ¤Î½èÍý¤ÎºÝ¤Ëʸ»ú¥³¡¼¥ÉÊÑ´¹¤Ë¼ºÇÔ¤·¤Æ¤¤¤¿ÌäÂê
+       ¤ò½¤Àµ
+
+2003-03-25 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¡Ömbox¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥Ý¡¼¥È/¥¨¥¯¥¹¥Ý¡¼¥È¡×µÚ¤Ó¡Ö̾Á°¤òÉÕ¤±¤ÆÊݸ¡×»þ¤Î
+       ¥Õ¥¡¥¤¥ë̾¤òlocale¤Îʸ»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥
+       * ¡Ö¥Õ¥¡¥¤¥ëźÉաס֥ե¡¥¤¥ëÁÞÆþ¡×»þ¤Î¥Õ¥¡¥¤¥ë̾¤òlocale¤Îʸ»ú¥³¡¼¥É¤ËÊÑ
+       ´¹¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥
+       * ¶¯À©Åª¤Ë´Ä¶­ÊÑ¿ôG_BROKEN_FILENAMES¤ò¥»¥Ã¥È¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥
+       * ¤½¤Î¾ºÙ¤«¤¤½¤Àµ
+
+2003-03-17 Takuro Ashie <ashie@homa.ne.jp>
+
+       * MH¥Õ¥©¥ë¥À¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤òlocale¤Îʸ»ú¥³¡¼¥É¤Ç°·¤¦¤è¤¦¤Ë½¤Àµ¡¥
+
+2003-03-16 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¥¢¥É¥ì¥¹Êä´°»þ¤Ë¸õÊä¤òÀÚÂؤ¨¤ë¤ÈÍî¤Á¤ëÌäÂꡤµÚ¤ÓÆüËܸì¤ÇÊä´°¤Ç¤­¤Ê¤¤Ìä
+       Âê¤ò½¤Àµ(Thanks! ÆÁ±Ê¤µ¤ó)¡¥
+
+2003-03-14 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¥­¡¼¥¢¥¯¥»¥é¥ì¡¼¥¿¤ÎÀßÄê¤òÀÚÂؤ¨¤é¤ì¤Ê¤¤ÌäÂê¤ò½¤Àµ(Thanks! smbd¤µ¤ó)¡¥
+
+2003-03-14 Takuro Ashie <ashie@homa.ne.jp>
+
+       * version 0.8.11-gtk2-20030314
+
+2003-03-14 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¿¶¤êʬ¤±ÀßÄê¤Îʸ»ú¥³¡¼¥ÉÊÑ´¹¤¬²õ¤ì¤Æ¤¤¤¿¥Ð¥°¤ò½¤Àµ(Thanks! COCOA¤µ¤ó)¡¥
+
+2003-03-13 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¹Ô´Ö¤ª¤è¤Ó¹ÔƬ¤Î¶õÇò¤ÎÀßÄê¤òÉü¸µ¡¥
+       * ¥«¡¼¥½¥ë¤òʸËö¤ËÃÖ¤¤¤¿¾õÂ֤ǡָ½ºß¤ÎÃÊÍî¤òÀ°·Á¤¹¤ë¡×¤ò¼Â¹Ô¤¹¤ë¤ÈÍî¤Á¤ë
+       ÌäÂê¤ò½¤Àµ(Thanks! ÆÁ±Ê¤µ¤ó)¡¥
+
+2003-03-12 Takuro Ashie <ashie@homa.ne.jp>
+
+       * version 0.8.11-gtk2-20030312
+
+2003-03-12 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¥¢¥«¥¦¥ó¥ÈÀÚÂؤ¨¥Ü¥¿¥ó¤Î¥á¥Ë¥å¡¼½Ð¸½°ÌÃÖ¤ò½¤Àµ(Thanks! ÃÓź¤µ¤ó)¡¥
+       * ¥Õ¥©¥ó¥ÈÀßÄêÍѤΥ³¡¼¥É¤òPango¤ÎAPI¤òľÀÜ»ÈÍѤ¹¤ë¤è¤¦¤ËÊѹ¹¡¥
+       * textview¤ÎGtkTextView¥¦¥£¥¸¥§¥Ã¥È¤ò°ì¤Ä¤ËÅý¹ç¡¥
+       * textview¤Î¥Ø¥Ã¥À¥¿¥¤¥È¥ë¤Î¥Õ¥©¥ó¥È¤ò¡Öheader_title¡×¥¿¥°¤ÇÀßÄꤹ¤ë¤è¤¦
+        ¤Ë¤·¤¿¡¥
+       * Deprecated¤Ê¥³¡¼¥É¤òÀ°Íý¡¥
+
+2003-03-11 Takuro Ashie <ashie@homa.ne.jp>
+
+       * ¥Ù¡¼¥¹¤ò0.8.11¤Ë¹¹¿·¡¥
+       * cygwin¥Ñ¥Ã¥Á¤ò¥Þ¡¼¥¸(Thanks! ¼ò°æ¤µ¤ó)¡¥
+
+2003-03-09 Takuro Ashie <ashie@homa.ne.jp>
+
+       * version 0.8.10-gtk2-20030309
index 945e0e1912218fdea5f3561567f76847c459074c..97c77bd1d10e8bfe60466f52602b3cde9b0f3c20 100644 (file)
@@ -1,8 +1,10 @@
-SUBDIRS = ac po src man manual faq tools config intl
+SUBDIRS = ac po src man manual faq tools config
 
 EXTRA_DIST = \
        ChangeLog.claws \
        ChangeLog.jp \
 
 EXTRA_DIST = \
        ChangeLog.claws \
        ChangeLog.jp \
+       ChangeLog-gtk2 \
+       ChangeLog-gtk2.jp \
        README.claws \
        README.jp \
        sylpheed-128x128.png \
        README.claws \
        README.jp \
        sylpheed-128x128.png \
@@ -15,6 +17,8 @@ EXTRA_DIST = \
        TODO \
        TODO.claws \
        TODO.jp \
        TODO \
        TODO.claws \
        TODO.jp \
+       TODO-gtk2 \
+       TODO-gtk2.jp \
        autogen.sh 
 
 if SYLPHEED_GNOME
        autogen.sh 
 
 if SYLPHEED_GNOME
diff --git a/TODO-gtk2 b/TODO-gtk2
new file mode 100644 (file)
index 0000000..7bfea4a
--- /dev/null
+++ b/TODO-gtk2
@@ -0,0 +1,23 @@
+Bugfixes
+    * SSL support seems broken.
+    * Chracter set conversion
+        * Modify codeconv.c for UTF-8
+        * Should we prepare functions  for locale <-> UTF-8?
+          (Use conv_localetodisp()?)
+        * Character set of file name.
+          (Should we use g_filename_from_locale() and g_filename_to_locale()?)
+        * Character set conversion for "Action" feature.
+        * Character set conversion for jpilot
+        * vCard is ok?(<- I don't understand about it)
+    * URI of uri_list_extract_filenames()
+        * Host name.
+        * Should we add a argument for length of string?
+    * Revive ruler of compose(adjust start point)
+    * Case sensitive searching feature in message.
+    * Remove all deprecated codes (About 90% completed except CList/CTree)
+    * Verify all #warning FIXME_GTK2
+    * Remove all warnings of Gtk+
+    * Fix other unknown bugs.
+
+Features
+    * I want a dialog for character set conversion when invoke external editor.
diff --git a/TODO-gtk2.jp b/TODO-gtk2.jp
new file mode 100644 (file)
index 0000000..8da3d0c
--- /dev/null
@@ -0,0 +1,22 @@
+¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+    * SSL¥µ¥Ý¡¼¥È
+    * Ê¸»ú¥³¡¼¥ÉÊÑ´¹¤Î¥³¡¼¥É¸«Ä¾¤·
+        * codeconv.c¤òUTF-8¤ò¥á¥¤¥ó¤Ë½¤Àµ?
+        * locale <-> UTF-8 ¤ÏŬÅö¤Ê´Ø¿ô¤òÍÑ°Õ¤¹¤Ù¤­?(conv_localetodisp()¤ò»ÈÍÑ?)
+        * ¥Õ¥¡¥¤¥ë̾¤Îʸ»ú¥³¡¼¥É¤Î°·¤¤
+          (g_filename_from_locale()µÚ¤Óg_filename_to_locale()¤ò»ÈÍѤ¹¤Ù¤­?)
+        * ¡Ö¥¢¥¯¥·¥ç¥ó¡×Åù¤Ç¥³¥Þ¥ó¥É¤ËÅϤ¹Ê¸»úÎó¤Îʸ»ú¥³¡¼¥ÉÊÑ´¹
+        * jpilot¤Îʸ»ú¥³¡¼¥ÉÊÑ´¹
+        * vCard¤ÏÂç¾æÉ×?(<-Á´Á³Ê¬¤«¤Ã¤Æ¤Ê¤¤)
+    * uri_list_extract_filenames()¤Ç¤ÎURI¤Î°·¤¤
+        * ¥Û¥¹¥È̾¤Î°·¤¤(»ö¼Â¾å¡¤Æ°ºî¤Ë¤Ï»Ù¾ã̵¤¤?)
+        * °ú¿ô¤Ëʸ»úÎóŤò²Ã¤¨¤ë¤Ù¤­?
+    * Compose¤Î¥ë¡¼¥é¤òÉü¸µ(»ÏÅÀ¤ÎÄ´À°)
+    * ¥á¥Ã¥»¡¼¥¸Æ⸡º÷¤Ç¤ÎÂçʸ»ú/¾®Ê¸»ú¤Î¶èÊÌ
+    * Deprecated¤Ê¥³¡¼¥É¤ò°ìÁÝ(CList/CTree°Ê³°¤Ï9³äÊý½ªÎ»)
+    * Á´¤Æ¤Î #warning FIXME_GTK2 ¤ò¸¡¾Ú/Áݽü
+    * Gtk+¤¬ÅǤ¯Á´¤Æ¤ÎWarning¤òËõ»¦
+    * ¤½¤Î¾Á´¤Æ¤Î̤ÃΤΥХ°¤Î½¤Àµ
+
+µ¡Ç½³ÈÄ¥
+    * ³°Éô¥¨¥Ç¥£¥¿Åù¤ËÅϤ¹ºÝ¤Îʸ»ú¥³¡¼¥É»ØÄêÍѤΥÀ¥¤¥¢¥í¥°¤¬¤¢¤ë¤ÈÎɤ¤¤«¤â
index 517d398b48f2b3f819e9ed48702c794b70a23908..4f75a6da0fe3dff02635570fd462cfb5e39964af 100644 (file)
@@ -1,5 +1,9 @@
 #!/bin/sh
 
 #!/bin/sh
 
+cd po
+/bin/sh poconv.sh
+cd ..
+
 aclocal -I ac \
   && libtoolize --force --copy \
   && autoheader \
 aclocal -I ac \
   && libtoolize --force --copy \
   && autoheader \
index f3f4621f85eec6a4135885866f043460b4168e01..78ae27fd37f95dc0d0773d6a133c9f6c5f348e10 100644 (file)
@@ -79,18 +79,58 @@ AC_PROG_YACC
 AM_PROG_LIBTOOL
 
 SYLPHEED_ACLOCAL_INCLUDE(ac)
 AM_PROG_LIBTOOL
 
 SYLPHEED_ACLOCAL_INCLUDE(ac)
+  
+dnl ******************************
+dnl Checks for host
+dnl ******************************
+AC_CANONICAL_HOST
+
+dnl Copied from the official gtk+-2 configure.in
+AC_MSG_CHECKING([for some Win32 platform])
+case "$host" in
+  *-*-mingw*|*-*-cygwin*)
+    platform_win32=yes
+    LDFLAGS="$LDFLAGS -mwindows"
+    ;;
+  *)
+    platform_win32=no
+    ;;
+esac
+AC_MSG_RESULT([$platform_win32])
+AM_CONDITIONAL(PLATFORM_WIN32, test x"$platform_win32" = x"yes")
+
+if test x"$platform_win32" = x"yes"; then
+    WINDRES=windres
+    AC_SUBST(WINDRES)
+fi
+
+AC_MSG_CHECKING([for native Win32])
+case "$host" in
+  *-*-mingw*)
+    os_win32=yes
+    ;;
+  *)
+    os_win32=no
+    ;;
+esac
+AC_MSG_RESULT([$os_win32])
+AM_CONDITIONAL(OS_WIN32, test x"$os_win32" = x"yes")
 
 case "$target" in
 *-darwin*)
        CFLAGS="$CFLAGS -traditional-cpp -fno-common"
        ;;
 esac
 
 case "$target" in
 *-darwin*)
        CFLAGS="$CFLAGS -traditional-cpp -fno-common"
        ;;
 esac
-
+  
+dnl Checks for iconv
 AM_ICONV
 
 dnl for gettext
 ALL_LINGUAS="bg cs de el en_GB es fr hr hu it ja ko nl pl pt_BR ru sk sr sv zh_TW.Big5"
 AM_ICONV
 
 dnl for gettext
 ALL_LINGUAS="bg cs de el en_GB es fr hr hu it ja ko nl pl pt_BR ru sk sr sv zh_TW.Big5"
-AM_GNU_GETTEXT([use-libtool])
+GETTEXT_PACKAGE=sylpheed
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Define text domain.])
+AM_GLIB_GNU_GETTEXT
 dnl AC_CHECK_FUNC(gettext, AC_CHECK_LIB(intl, gettext))
 localedir='${prefix}/${DATADIRNAME}/locale'
 AC_SUBST(localedir)
 dnl AC_CHECK_FUNC(gettext, AC_CHECK_LIB(intl, gettext))
 localedir='${prefix}/${DATADIRNAME}/locale'
 AC_SUBST(localedir)
@@ -187,9 +227,15 @@ dnl ** common code **
 dnl *****************
 
 dnl check for glib
 dnl *****************
 
 dnl check for glib
-AM_PATH_GLIB(1.2.6,,
+AM_PATH_GLIB_2_0(2.0.0,,
        AC_MSG_ERROR(Test for GLIB failed. See the file 'INSTALL' for help.),
        AC_MSG_ERROR(Test for GLIB failed. See the file 'INSTALL' for help.),
-       gthread)
+       gmodule gobject gthread)
+
+dnl Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
+syl_save_LIBS=$LIBS
+LIBS="$LIBS $GTK_LIBS"
+AC_CHECK_FUNCS(bind_textdomain_codeset)
+LIBS=$syl_save_LIBS
 
 dnl check for IPv6 option
 AC_ARG_ENABLE(ipv6,
 
 dnl check for IPv6 option
 AC_ARG_ENABLE(ipv6,
@@ -240,7 +286,7 @@ dnl ** GTK user interface **
 dnl ************************
 
 dnl Checks for GTK
 dnl ************************
 
 dnl Checks for GTK
-AM_PATH_GTK(1.2.6,,
+AM_PATH_GTK_2_0(2.0.0,,
        AC_MSG_ERROR(Test for GTK failed. See the file 'INSTALL' for help.))
 
 dnl check if gdk / gtk was compiled with USE_XIM
        AC_MSG_ERROR(Test for GTK failed. See the file 'INSTALL' for help.))
 
 dnl check if gdk / gtk was compiled with USE_XIM
@@ -433,20 +479,14 @@ if test x"$ac_cv_enable_image_viewer_plugin" = xyes; then
                [ac_cv_enable_imlib=$enableval], [ac_cv_enable_imlib=yes])
 
        if test "$ac_cv_enable_gdk_pixbuf" = yes; then
                [ac_cv_enable_imlib=$enableval], [ac_cv_enable_imlib=yes])
 
        if test "$ac_cv_enable_gdk_pixbuf" = yes; then
-               AM_PATH_GDK_PIXBUF(0.8.0,
-                       [AC_DEFINE(HAVE_GDK_PIXBUF, 1, Define if you use gdk-pixbuf to support image viewer)
-                        ac_cv_enable_imlib=no], [ac_cv_enable_gdk_pixbuf=no])
-       fi
-       if test "$ac_cv_enable_imlib" = yes; then
-               AM_PATH_GDK_IMLIB(1.9,
-                       AC_DEFINE(HAVE_GDK_IMLIB, 1, Define if you use gdk_imlib to support image viewer),
-                       [ac_cv_enable_imlib=no])
+               PKG_CHECK_MODULES(GDK_PIXBUF, \
+                       [ gdk-pixbuf-2.0 ],
+                       [ AC_DEFINE(HAVE_GDK_PIXBUF, 1, Define if you use gdk-pixbuf to support image viewer) ],
+                       [ ac_cv_enable_gdk_pixbuf=no ])
        fi
 
        if test "$ac_cv_enable_gdk_pixbuf" = yes; then
                PLUGINS="image-viewer(gdk-pixbuf) $PLUGINS"
        fi
 
        if test "$ac_cv_enable_gdk_pixbuf" = yes; then
                PLUGINS="image-viewer(gdk-pixbuf) $PLUGINS"
-       elif test "$ac_cv_enable_imlib" = yes; then
-               PLUGINS="image-viewer(gdk_imlib) $PLUGINS"
        else
                ac_cv_enable_image_viewer_plugin=no
        fi
        else
                ac_cv_enable_image_viewer_plugin=no
        fi
@@ -496,7 +536,6 @@ dnl ****************************
 AC_OUTPUT([
 Makefile
 sylpheed.spec
 AC_OUTPUT([
 Makefile
 sylpheed.spec
-intl/Makefile
 ac/Makefile
 po/Makefile.in
 src/common/version.h
 ac/Makefile
 po/Makefile.in
 src/common/version.h
index 27b721aa8a7b79e43db586f8251ff6b51b684304..435cd18280dad1ec822b7efc9f565a5a53e82455 100644 (file)
@@ -1,13 +1,18 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2003 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
 #
 #
-# This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
+# This file file be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+#
+# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+#   instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob@ximian.com> to install
+#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
 
 
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 PACKAGE = @PACKAGE@
 VERSION = @VERSION@
 
 PACKAGE = @PACKAGE@
 VERSION = @VERSION@
 
@@ -21,333 +26,218 @@ VPATH = @srcdir@
 prefix = @prefix@
 exec_prefix = @exec_prefix@
 datadir = @datadir@
 prefix = @prefix@
 exec_prefix = @exec_prefix@
 datadir = @datadir@
-localedir = $(datadir)/locale
-gettextsrcdir = $(datadir)/gettext/po
+libdir = @libdir@
+localedir = $(libdir)/locale
+gnulocaledir = $(datadir)/locale
+gettextsrcdir = $(datadir)/glib-2.0/gettext/po
+subdir = po
 
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
+MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
 
 
+CC = @CC@
+GENCAT = @GENCAT@
 GMSGFMT = @GMSGFMT@
 MSGFMT = @MSGFMT@
 XGETTEXT = @XGETTEXT@
 MSGMERGE = msgmerge
 GMSGFMT = @GMSGFMT@
 MSGFMT = @MSGFMT@
 XGETTEXT = @XGETTEXT@
 MSGMERGE = msgmerge
-MSGMERGE_UPDATE = @MSGMERGE@ --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
 
 
+DEFS = @DEFS@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+INCLUDES = -I.. -I$(top_srcdir)/intl
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+SOURCES = 
 POFILES = @POFILES@
 GMOFILES = @GMOFILES@
 POFILES = @POFILES@
 GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \
+$(POFILES) $(GMOFILES) $(SOURCES)
 
 POTFILES = \
 
 CATALOGS = @CATALOGS@
 
 POTFILES = \
 
 CATALOGS = @CATALOGS@
-
-# Makevars gets inserted here. (Don't remove this line!)
+CATOBJEXT = @CATOBJEXT@
+INSTOBJEXT = @INSTOBJEXT@
 
 .SUFFIXES:
 
 .SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update
+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
+
+.c.o:
+       $(COMPILE) $<
+
+.po.pox:
+       $(MAKE) $(GETTEXT_PACKAGE).pot
+       $(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox
 
 .po.mo:
 
 .po.mo:
-       @echo "$(MSGFMT) -c -o $@ $<"; \
-       $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+       $(MSGFMT) -o $@ $<
 
 .po.gmo:
 
 .po.gmo:
-       @lang=`echo $* | sed -e 's,.*/,,'`; \
-       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
-       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+       file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
+         && rm -f $$file && $(GMSGFMT) -o $$file $<
 
 
-.sin.sed:
-       sed -e '/^#/d' $< > t-$@
-       mv t-$@ $@
+.po.cat:
+       sed -f ../intl/po2msg.sed < $< > $*.msg \
+         && rm -f $@ && $(GENCAT) $@ $*.msg
 
 
 all: all-@USE_NLS@
 
 
 
 all: all-@USE_NLS@
 
-all-yes: stamp-po
+all-yes: $(CATALOGS)
 all-no:
 
 all-no:
 
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
-       test -z "$(CATALOGS)" || $(MAKE) $(CATALOGS)
-       @echo "touch stamp-po"
-       @echo timestamp > stamp-poT
-       @mv stamp-poT stamp-po
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
-       $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-         --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+$(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
+       $(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \
+         --add-comments --keyword=_ --keyword=N_ \
          --files-from=$(srcdir)/POTFILES.in \
          --files-from=$(srcdir)/POTFILES.in \
-         --copyright-holder='$(COPYRIGHT_HOLDER)' \
-         --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)'
-       test ! -f $(DOMAIN).po || { \
-         if test -f $(srcdir)/$(DOMAIN).pot; then \
-           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
-           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
-           if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
-             rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
-           else \
-             rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
-             mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-           fi; \
-         else \
-           mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-         fi; \
-       }
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
-       $(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
-       @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
-       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-       echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
-       cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot
-
+       && test ! -f $(GETTEXT_PACKAGE).po \
+          || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \
+               && mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot )
 
 install: install-exec install-data
 install-exec:
 install-data: install-data-@USE_NLS@
 
 install: install-exec install-data
 install-exec:
 install-data: install-data-@USE_NLS@
-       if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
-         for file in $(DISTFILES.common) Makevars.template; do \
-           $(INSTALL_DATA) $(srcdir)/$$file \
-                           $(DESTDIR)$(gettextsrcdir)/$$file; \
-         done; \
-         for file in Makevars; do \
-           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-         done; \
-       else \
-         : ; \
-       fi
 install-data-no: all
 install-data-yes: all
 install-data-no: all
 install-data-yes: all
-       $(mkinstalldirs) $(DESTDIR)$(datadir)
+       if test -r "$(MKINSTALLDIRS)"; then \
+         $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
+       else \
+         $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
+       fi
        @catalogs='$(CATALOGS)'; \
        for cat in $$catalogs; do \
          cat=`basename $$cat`; \
        @catalogs='$(CATALOGS)'; \
        for cat in $$catalogs; do \
          cat=`basename $$cat`; \
-         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-         dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkinstalldirs) $(DESTDIR)$$dir; \
-         if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
-         $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
-         echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
-         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-           if test -n "$$lc"; then \
-             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
-               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
-               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-                for file in *; do \
-                  if test -f $$file; then \
-                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-                  fi; \
-                done); \
-               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-             else \
-               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-                 :; \
-               else \
-                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-               fi; \
-             fi; \
-             rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-             ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-             ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-             cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-             echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+         case "$$cat" in \
+           *.gmo) destdir=$(gnulocaledir);; \
+           *)     destdir=$(localedir);; \
+         esac; \
+         lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+         dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
+         if test -r "$(MKINSTALLDIRS)"; then \
+           $(MKINSTALLDIRS) $$dir; \
+         else \
+           $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
+         fi; \
+         if test -r $$cat; then \
+           $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+           echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+         else \
+           $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+           echo "installing $(srcdir)/$$cat as" \
+                "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+         fi; \
+         if test -r $$cat.m; then \
+           $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+           echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+         else \
+           if test -r $(srcdir)/$$cat.m ; then \
+             $(INSTALL_DATA) $(srcdir)/$$cat.m \
+               $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+             echo "installing $(srcdir)/$$cat as" \
+                  "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+           else \
+             true; \
            fi; \
            fi; \
-         done; \
+         fi; \
        done
        done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data-@USE_NLS@
-       if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+       if test "$(PACKAGE)" = "glib"; then \
+         if test -r "$(MKINSTALLDIRS)"; then \
+           $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
+         else \
+           $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
+         fi; \
+         $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+                         $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
        else \
          : ; \
        fi
        else \
          : ; \
        fi
-installdirs-data-no:
-installdirs-data-yes:
-       $(mkinstalldirs) $(DESTDIR)$(datadir)
-       @catalogs='$(CATALOGS)'; \
-       for cat in $$catalogs; do \
-         cat=`basename $$cat`; \
-         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-         dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkinstalldirs) $(DESTDIR)$$dir; \
-         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-           if test -n "$$lc"; then \
-             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
-               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
-               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-                for file in *; do \
-                  if test -f $$file; then \
-                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-                  fi; \
-                done); \
-               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-             else \
-               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-                 :; \
-               else \
-                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-               fi; \
-             fi; \
-           fi; \
-         done; \
-       done
 
 # Define this as empty until I found a useful application.
 installcheck:
 
 
 # Define this as empty until I found a useful application.
 installcheck:
 
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data-@USE_NLS@
-       if test "$(PACKAGE)" = "gettext-tools"; then \
-         for file in $(DISTFILES.common) Makevars.template; do \
-           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-         done; \
-       else \
-         : ; \
-       fi
-uninstall-data-no:
-uninstall-data-yes:
+uninstall:
        catalogs='$(CATALOGS)'; \
        for cat in $$catalogs; do \
          cat=`basename $$cat`; \
        catalogs='$(CATALOGS)'; \
        for cat in $$catalogs; do \
          cat=`basename $$cat`; \
-         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-         for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
-           rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-         done; \
+         lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+         rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+         rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+         rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+         rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
        done
        done
+       rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
 
 check: all
 
 
 check: all
 
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
+dvi info tags TAGS ID:
 
 mostlyclean:
 
 mostlyclean:
-       rm -f remove-potcdate.sed
-       rm -f stamp-poT
-       rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+       rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
        rm -fr *.o
 
 clean: mostlyclean
 
 distclean: clean
        rm -fr *.o
 
 clean: mostlyclean
 
 distclean: clean
-       rm -f Makefile Makefile.in POTFILES *.mo
+       rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
 
 maintainer-clean: distclean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
 
 maintainer-clean: distclean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
-       rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
-       $(MAKE) update-po
-       @$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: $(DISTFILES)
+       rm -f $(GMOFILES)
+
+distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: update-po $(DISTFILES)
        dists="$(DISTFILES)"; \
        dists="$(DISTFILES)"; \
-       if test "$(PACKAGE)" = "gettext-tools"; then \
-         dists="$$dists Makevars.template"; \
-       fi; \
-       if test -f $(srcdir)/ChangeLog; then \
-         dists="$$dists ChangeLog"; \
-       fi; \
-       for i in 0 1 2 3 4 5 6 7 8 9; do \
-         if test -f $(srcdir)/ChangeLog.$$i; then \
-           dists="$$dists ChangeLog.$$i"; \
-         fi; \
-       done; \
-       if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
        for file in $$dists; do \
        for file in $$dists; do \
-         if test -f $$file; then \
-           cp -p $$file $(distdir); \
-         else \
-           cp -p $(srcdir)/$$file $(distdir); \
-         fi; \
+         ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+           || cp -p $(srcdir)/$$file $(distdir); \
        done
 
 update-po: Makefile
        done
 
 update-po: Makefile
-       $(MAKE) $(DOMAIN).pot-update
-       test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
-       $(MAKE) update-gmo
-
-# General rule for updating PO files.
-
-.nop.po-update:
-       @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
-       if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
-       tmpdir=`pwd`; \
-       echo "$$lang:"; \
-       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-       echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+       $(MAKE) $(GETTEXT_PACKAGE).pot
        cd $(srcdir); \
        cd $(srcdir); \
-       if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
-         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
-           rm -f $$tmpdir/$$lang.new.po; \
+       catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+         mv $$lang.po $$lang.old.po; \
+         echo "$$lang:"; \
+         if $(MSGMERGE) $$lang.old.po $(GETTEXT_PACKAGE).pot -o $$lang.po; then \
+           rm -f $$lang.old.po; \
          else \
          else \
-           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
-             :; \
-           else \
-             echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
-             exit 1; \
-           fi; \
+           echo "msgmerge for $$cat failed!"; \
+           rm -f $$lang.po; \
+           mv $$lang.old.po $$lang.po; \
          fi; \
          fi; \
-       else \
-         echo "msgmerge for $$lang.po failed!" 1>&2; \
-         rm -f $$tmpdir/$$lang.new.po; \
-       fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
-       @:
+       done
 
 
-Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@
-       cd $(top_builddir) \
+# POTFILES is created from POTFILES.in by stripping comments, empty lines
+# and Intltool tags (enclosed in square brackets), and appending a full
+# relative path to them
+POTFILES: POTFILES.in
+       ( if test 'x$(srcdir)' != 'x.'; then \
+           posrcprefix='$(top_srcdir)/'; \
+         else \
+           posrcprefix="../"; \
+         fi; \
+         rm -f $@-t $@ \
+           && (sed -e '/^#/d'                                          \
+                   -e "s/^\[.*\] +//"                                  \
+                   -e '/^[     ]*$$/d'                                 \
+                   -e "s@.*@   $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
+               | sed -e '$$s/\\$$//') > $@-t \
+           && chmod a-w $@-t \
+           && mv $@-t $@ )
+
+Makefile: Makefile.in.in ../config.status POTFILES
+       cd .. \
          && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
               $(SHELL) ./config.status
 
          && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
               $(SHELL) ./config.status
 
-force:
-
 # Tell versions [3.59,3.63) of GNU make not to export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
 # Tell versions [3.59,3.63) of GNU make not to export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 5e6672421074f77e9a9fbe133d23073108fcb02a..320f1a80617f6ff676fc08add87d081cfaddaede 100644 (file)
@@ -1,5 +1,19 @@
 SUBDIRS = common gtk plugins
 
 SUBDIRS = common gtk plugins
 
+
+if PLATFORM_WIN32
+
+SYLPHEED_RES = sylpheed.res
+
+sylpheed.rc:
+       echo "SYLPHEED ICON sylpheed.ico" > sylpheed.rc
+
+sylpheed.res: sylpheed.rc
+       $(WINDRES) $< -O coff -o $@
+
+endif
+
+
 bin_PROGRAMS = sylpheed
 
 sylpheed_SOURCES = \
 bin_PROGRAMS = sylpheed
 
 sylpheed_SOURCES = \
@@ -246,6 +260,7 @@ BUILT_SOURCES = \
        quote_fmt_parse.h
 
 EXTRA_DIST = \
        quote_fmt_parse.h
 
 EXTRA_DIST = \
+       sylpheed.ico \
        pixmaps/address_book.xpm \
        pixmaps/address_search.xpm \
        pixmaps/address.xpm \
        pixmaps/address_book.xpm \
        pixmaps/address_search.xpm \
        pixmaps/address.xpm \
@@ -346,7 +361,8 @@ sylpheed_LDADD = \
        $(GPGME_LIBS) \
        $(LDAP_LIBS) \
        $(OPENSSL_LIBS) \
        $(GPGME_LIBS) \
        $(LDAP_LIBS) \
        $(OPENSSL_LIBS) \
-       $(LIBICONV)
+       $(LIBICONV) \
+       $(SYLPHEED_RES)
 
 AM_CPPFLAGS = \
        -DG_LOG_DOMAIN=\"Sylpheed\" \
 
 AM_CPPFLAGS = \
        -DG_LOG_DOMAIN=\"Sylpheed\" \
index ecc47fb83f34cb1063d66f6f52b55de5a2b1d428..9930980a0c3d7e428b045786b214a0a9f6f6c792 100644 (file)
@@ -99,7 +99,7 @@ static void account_selected          (GtkCList       *clist,
 static void account_row_moved          (GtkCList       *clist,
                                         gint            source_row,
                                         gint            dest_row);
 static void account_row_moved          (GtkCList       *clist,
                                         gint            source_row,
                                         gint            dest_row);
-static void account_key_pressed                (GtkWidget      *widget,
+static gboolean account_key_pressed    (GtkWidget      *widget,
                                         GdkEventKey    *event,
                                         gpointer        data);
 
                                         GdkEventKey    *event,
                                         gpointer        data);
 
@@ -549,15 +549,15 @@ static void account_edit_create(void)
 
        debug_print("Creating account edit window...\n");
 
 
        debug_print("Creating account edit window...\n");
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize (window, 500, 320);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request (window, 500, 320);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_set_title (GTK_WINDOW (window), _("Edit accounts"));
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_set_title (GTK_WINDOW (window), _("Edit accounts"));
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
-       gtk_signal_connect (GTK_OBJECT (window), "delete_event",
-                           GTK_SIGNAL_FUNC (account_delete_event), NULL);
-       gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
-                           GTK_SIGNAL_FUNC (account_key_pressed), NULL);
+       g_signal_connect (G_OBJECT (window), "delete_event",
+                         G_CALLBACK (account_delete_event), NULL);
+       g_signal_connect (G_OBJECT (window), "key_press_event",
+                         G_CALLBACK (account_key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT (window);
        gtk_widget_realize(window);
 
        MANAGE_WINDOW_SIGNALS_CONNECT (window);
        gtk_widget_realize(window);
 
@@ -612,10 +612,10 @@ static void account_edit_create(void)
                GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(clist)->column[i].button,
                                       GTK_CAN_FOCUS);
 
                GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(clist)->column[i].button,
                                       GTK_CAN_FOCUS);
 
-       gtk_signal_connect (GTK_OBJECT (clist), "select_row",
-                           GTK_SIGNAL_FUNC (account_selected), NULL);
-       gtk_signal_connect_after (GTK_OBJECT (clist), "row_move",
-                                 GTK_SIGNAL_FUNC (account_row_moved), NULL);
+       g_signal_connect (G_OBJECT (clist), "select_row",
+                         G_CALLBACK (account_selected), NULL);
+       g_signal_connect_after (G_OBJECT (clist), "row_move",
+                               G_CALLBACK (account_row_moved), NULL);
 
        vbox2 = gtk_vbox_new (FALSE, 0);
        gtk_widget_show (vbox2);
 
        vbox2 = gtk_vbox_new (FALSE, 0);
        gtk_widget_show (vbox2);
@@ -624,32 +624,32 @@ static void account_edit_create(void)
        add_btn = gtk_button_new_with_label (_("Add"));
        gtk_widget_show (add_btn);
        gtk_box_pack_start (GTK_BOX (vbox2), add_btn, FALSE, FALSE, 4);
        add_btn = gtk_button_new_with_label (_("Add"));
        gtk_widget_show (add_btn);
        gtk_box_pack_start (GTK_BOX (vbox2), add_btn, FALSE, FALSE, 4);
-       gtk_signal_connect (GTK_OBJECT(add_btn), "clicked",
-                           GTK_SIGNAL_FUNC (account_add), NULL);
+       g_signal_connect (G_OBJECT(add_btn), "clicked",
+                         G_CALLBACK (account_add), NULL);
 
        edit_btn = gtk_button_new_with_label (_("Edit"));
        gtk_widget_show (edit_btn);
        gtk_box_pack_start (GTK_BOX (vbox2), edit_btn, FALSE, FALSE, 4);
 
        edit_btn = gtk_button_new_with_label (_("Edit"));
        gtk_widget_show (edit_btn);
        gtk_box_pack_start (GTK_BOX (vbox2), edit_btn, FALSE, FALSE, 4);
-       gtk_signal_connect (GTK_OBJECT(edit_btn), "clicked",
-                           GTK_SIGNAL_FUNC (account_edit_prefs), NULL);
+       g_signal_connect (G_OBJECT(edit_btn), "clicked",
+                         G_CALLBACK (account_edit_prefs), NULL);
 
        del_btn = gtk_button_new_with_label (_(" Delete "));
        gtk_widget_show (del_btn);
        gtk_box_pack_start (GTK_BOX (vbox2), del_btn, FALSE, FALSE, 4);
 
        del_btn = gtk_button_new_with_label (_(" Delete "));
        gtk_widget_show (del_btn);
        gtk_box_pack_start (GTK_BOX (vbox2), del_btn, FALSE, FALSE, 4);
-       gtk_signal_connect (GTK_OBJECT(del_btn), "clicked",
-                           GTK_SIGNAL_FUNC (account_delete), NULL);
+       g_signal_connect (G_OBJECT(del_btn), "clicked",
+                         G_CALLBACK (account_delete), NULL);
 
        down_btn = gtk_button_new_with_label (_("Down"));
        gtk_widget_show (down_btn);
        gtk_box_pack_end (GTK_BOX (vbox2), down_btn, FALSE, FALSE, 4);
 
        down_btn = gtk_button_new_with_label (_("Down"));
        gtk_widget_show (down_btn);
        gtk_box_pack_end (GTK_BOX (vbox2), down_btn, FALSE, FALSE, 4);
-       gtk_signal_connect (GTK_OBJECT(down_btn), "clicked",
-                           GTK_SIGNAL_FUNC (account_down), NULL);
+       g_signal_connect (G_OBJECT(down_btn), "clicked",
+                         G_CALLBACK (account_down), NULL);
 
        up_btn = gtk_button_new_with_label (_("Up"));
        gtk_widget_show (up_btn);
        gtk_box_pack_end (GTK_BOX (vbox2), up_btn, FALSE, FALSE, 4);
 
        up_btn = gtk_button_new_with_label (_("Up"));
        gtk_widget_show (up_btn);
        gtk_box_pack_end (GTK_BOX (vbox2), up_btn, FALSE, FALSE, 4);
-       gtk_signal_connect (GTK_OBJECT(up_btn), "clicked",
-                           GTK_SIGNAL_FUNC (account_up), NULL);
+       g_signal_connect (G_OBJECT(up_btn), "clicked",
+                         G_CALLBACK (account_up), NULL);
 
        hbox = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox);
 
        hbox = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox);
@@ -662,8 +662,8 @@ static void account_edit_create(void)
        default_btn = gtk_button_new_with_label (_(" Set as default account "));
        gtk_widget_show (default_btn);
        gtk_box_pack_start (GTK_BOX (vbox2), default_btn, TRUE, FALSE, 0);
        default_btn = gtk_button_new_with_label (_(" Set as default account "));
        gtk_widget_show (default_btn);
        gtk_box_pack_start (GTK_BOX (vbox2), default_btn, TRUE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT(default_btn), "clicked",
-                           GTK_SIGNAL_FUNC (account_set_default), NULL);
+       g_signal_connect (G_OBJECT(default_btn), "clicked",
+                         G_CALLBACK (account_set_default), NULL);
 
        gtkut_button_set_create(&hbbox, &close_btn, _("Close"),
                                NULL, NULL, NULL, NULL);
 
        gtkut_button_set_create(&hbbox, &close_btn, _("Close"),
                                NULL, NULL, NULL, NULL);
@@ -671,9 +671,9 @@ static void account_edit_create(void)
        gtk_box_pack_end (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default (close_btn);
 
        gtk_box_pack_end (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default (close_btn);
 
-       gtk_signal_connect (GTK_OBJECT (close_btn), "clicked",
-                           GTK_SIGNAL_FUNC (account_edit_close),
-                           NULL);
+       g_signal_connect (G_OBJECT (close_btn), "clicked",
+                         G_CALLBACK (account_edit_close),
+                         NULL);
 
        stock_pixmap_gdk(clist, STOCK_PIXMAP_MARK, &markxpm, &markxpmmask);
        stock_pixmap_gdk(clist, STOCK_PIXMAP_CHECKBOX_ON,
 
        stock_pixmap_gdk(clist, STOCK_PIXMAP_MARK, &markxpm, &markxpmmask);
        stock_pixmap_gdk(clist, STOCK_PIXMAP_CHECKBOX_ON,
@@ -853,11 +853,12 @@ static void account_row_moved(GtkCList *clist, gint source_row, gint dest_row)
                gtk_clist_moveto(clist, dest_row, -1, 0.5, 0.0);
 }
 
                gtk_clist_moveto(clist, dest_row, -1, 0.5, 0.0);
 }
 
-static void account_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                               gpointer data)
+static gboolean account_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                   gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                account_edit_close();
 {
        if (event && event->keyval == GDK_Escape)
                account_edit_close();
+       return FALSE;
 }
 
 /* set one CList row or add new row */
 }
 
 /* set one CList row or add new row */
index fc5bc801a599c859b06c77b1a860857e17955b38..913a06fb54cf6869bc4ef00b7e10ecf77c3ce671 100644 (file)
@@ -26,7 +26,9 @@
 #include <glib.h>
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 #include <glib.h>
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
-#include <gdk/gdkx.h>
+#ifdef GDK_WINDOWING_X11
+#      include <gdk/gdkx.h>
+#endif /* GDK_WINDOWING_X11 */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -47,7 +49,6 @@
 #include "action.h"
 #include "compose.h"
 #include "procmsg.h"
 #include "action.h"
 #include "compose.h"
 #include "procmsg.h"
-#include "gtkstext.h"
 #include "textview.h"
 
 typedef struct _Children               Children;
 #include "textview.h"
 
 typedef struct _Children               Children;
@@ -74,7 +75,8 @@ struct _Children
        gboolean         output;
 
        GtkWidget       *msg_text;
        gboolean         output;
 
        GtkWidget       *msg_text;
-       GdkFont         *msgfont;
+
+       gboolean         is_selection;
 };
 
 struct _ChildInfo
 };
 
 struct _ChildInfo
@@ -115,7 +117,6 @@ static void message_actions_execute (MessageView    *msgview,
 static gboolean execute_actions                (gchar          *action, 
                                         GSList         *msg_list, 
                                         GtkWidget      *text,
 static gboolean execute_actions                (gchar          *action, 
                                         GSList         *msg_list, 
                                         GtkWidget      *text,
-                                        GdkFont        *msgfont,
                                         gint            body_pos,
                                         MimeInfo       *partinfo);
 
                                         gint            body_pos,
                                         MimeInfo       *partinfo);
 
@@ -475,7 +476,7 @@ static void compose_actions_execute_cb(Compose *compose, guint action_nb,
                return;
        }
 
                return;
        }
 
-       execute_actions(action, NULL, compose->text, NULL, 0, NULL);
+       execute_actions(action, NULL, compose->text, 0, NULL);
 }
 
 static void mainwin_actions_execute_cb(MainWindow *mainwin, guint action_nb,
 }
 
 static void mainwin_actions_execute_cb(MainWindow *mainwin, guint action_nb,
@@ -507,7 +508,6 @@ static void message_actions_execute(MessageView *msgview, guint action_nb,
        gchar *buf;
        gchar *action;
        GtkWidget *text = NULL;
        gchar *buf;
        gchar *action;
        GtkWidget *text = NULL;
-       GdkFont *msgfont = NULL;
        guint body_pos = 0;
        ActionType action_type;
        
        guint body_pos = 0;
        ActionType action_type;
        
@@ -516,7 +516,7 @@ static void message_actions_execute(MessageView *msgview, guint action_nb,
        buf = (gchar *)g_slist_nth_data(prefs_common.actions_list, action_nb);
 
        g_return_if_fail(buf);
        buf = (gchar *)g_slist_nth_data(prefs_common.actions_list, action_nb);
 
        g_return_if_fail(buf);
-       g_return_if_fail(action = strstr(buf, ": "));
+       g_return_if_fail((action = strstr(buf, ": ")));
 
        /* Point to the beginning of the command-line */
        action += 2;
 
        /* Point to the beginning of the command-line */
        action += 2;
@@ -524,7 +524,6 @@ static void message_actions_execute(MessageView *msgview, guint action_nb,
        textview = messageview_get_current_textview(msgview);
        if (textview) {
                text     = textview->text;
        textview = messageview_get_current_textview(msgview);
        if (textview) {
                text     = textview->text;
-               msgfont  = textview->msgfont;
                body_pos = textview->body_pos;
        }
        partinfo = messageview_get_selected_mime_part(msgview);
                body_pos = textview->body_pos;
        }
        partinfo = messageview_get_selected_mime_part(msgview);
@@ -534,11 +533,11 @@ static void message_actions_execute(MessageView *msgview, guint action_nb,
        if (action_type & (ACTION_PIPE_OUT | ACTION_INSERT))
                msgview->filtered = TRUE;
 
        if (action_type & (ACTION_PIPE_OUT | ACTION_INSERT))
                msgview->filtered = TRUE;
 
-       execute_actions(action, msg_list, text, msgfont, body_pos, partinfo);
+       execute_actions(action, msg_list, text, body_pos, partinfo);
 }
 
 static gboolean execute_actions(gchar *action, GSList *msg_list,
 }
 
 static gboolean execute_actions(gchar *action, GSList *msg_list,
-                               GtkWidget *text, GdkFont *msgfont,
+                               GtkWidget *text,
                                gint body_pos, MimeInfo *partinfo)
 {
        GSList *children_list = NULL;
                                gint body_pos, MimeInfo *partinfo)
 {
        GSList *children_list = NULL;
@@ -549,11 +548,12 @@ static gboolean execute_actions(gchar *action, GSList *msg_list,
        ActionType action_type;
        MsgInfo *msginfo;
        gchar *cmd;
        ActionType action_type;
        MsgInfo *msginfo;
        gchar *cmd;
-       guint start = 0, end = 0;
        gchar *sel_str = NULL;
        gchar *msg_str = NULL;
        gchar *user_str = NULL;
        gchar *user_hidden_str = NULL;
        gchar *sel_str = NULL;
        gchar *msg_str = NULL;
        gchar *user_str = NULL;
        gchar *user_hidden_str = NULL;
+       GtkTextIter start_iter, end_iter;
+       gboolean is_selection = FALSE;
 
        g_return_val_if_fail(action && *action, FALSE);
 
 
        g_return_val_if_fail(action && *action, FALSE);
 
@@ -580,32 +580,21 @@ static gboolean execute_actions(gchar *action, GSList *msg_list,
        }
 
        if (text) {
        }
 
        if (text) {
-               if (GTK_EDITABLE(text)->has_selection) {
-                       start = GTK_EDITABLE(text)->selection_start_pos;
-                       end   = GTK_EDITABLE(text)->selection_end_pos;
-                       if (start > end) {
-                               guint tmp;
-                               tmp = start;
-                               start = end;
-                               end = tmp;
-                       }
-
-                       if (start == end) {
-                               start = body_pos;
-                               end = gtk_stext_get_length(GTK_STEXT(text));
-                               msg_str = gtk_editable_get_chars
-                                       (GTK_EDITABLE(text), start, end);
-                       } else {
-                               sel_str = gtk_editable_get_chars
-                                       (GTK_EDITABLE(text), start, end);
-                               msg_str = g_strdup(sel_str);
-                       }
-               } else {
-                       start = body_pos;
-                       end = gtk_stext_get_length(GTK_STEXT(text));
-                       msg_str = gtk_editable_get_chars(GTK_EDITABLE(text),
-                                                        start, end);
+               GtkTextBuffer *textbuf;
+
+               textbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+               is_selection = gtk_text_buffer_get_selection_bounds(textbuf,
+                                                                   &start_iter,
+                                                                   &end_iter);
+               if (!is_selection) {
+                       gtk_text_buffer_get_start_iter(textbuf, &start_iter);
+                       gtk_text_buffer_get_end_iter(textbuf, &end_iter);
                }
                }
+               msg_str = gtk_text_buffer_get_text(textbuf,
+                                                  &start_iter, &end_iter,
+                                                  FALSE);
+               if (is_selection)
+                       sel_str = g_strdup (msg_str);
        }
 
        if (action_type & ACTION_USER_STR) {
        }
 
        if (action_type & ACTION_USER_STR) {
@@ -626,11 +615,10 @@ static gboolean execute_actions(gchar *action, GSList *msg_list,
                }
        }
 
                }
        }
 
-       if (action_type & ACTION_PIPE_OUT) {
-               gtk_stext_freeze(GTK_STEXT(text));
-               gtk_stext_set_point(GTK_STEXT(text), start);
-               gtk_stext_forward_delete(GTK_STEXT(text), end - start);
-               gtk_stext_thaw(GTK_STEXT(text));
+       if (text && (action_type & ACTION_PIPE_OUT)) {
+               GtkTextBuffer *textbuf;
+               textbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+               gtk_text_buffer_delete(textbuf, &start_iter, &end_iter);
        }
 
        children = g_new0(Children, 1);
        }
 
        children = g_new0(Children, 1);
@@ -638,7 +626,7 @@ static gboolean execute_actions(gchar *action, GSList *msg_list,
        children->action      = g_strdup(action);
        children->action_type = action_type;
        children->msg_text    = text;
        children->action      = g_strdup(action);
        children->action_type = action_type;
        children->msg_text    = text;
-       children->msgfont     = msgfont;
+       children->is_selection = is_selection;
 
        if ((action_type & (ACTION_USER_IN | ACTION_USER_HIDDEN_IN)) &&
            ((action_type & ACTION_SINGLE) == 0 || msg_list_len == 1))
 
        if ((action_type & (ACTION_USER_IN | ACTION_USER_HIDDEN_IN)) &&
            ((action_type & ACTION_SINGLE) == 0 || msg_list_len == 1))
@@ -749,7 +737,9 @@ static ChildInfo *fork_child(gchar *cmd, const gchar *msg_str,
                if (setpgid(0, 0))
                        perror("setpgid");
 
                if (setpgid(0, 0))
                        perror("setpgid");
 
+#ifdef GDK_WINDOWING_X11
                close(ConnectionNumber(gdk_display));
                close(ConnectionNumber(gdk_display));
+#endif /* GDK_WINDOWING_X11 */
 
                gch_pid = fork();
 
 
                gch_pid = fork();
 
@@ -1015,22 +1005,24 @@ static void update_io_dialog(Children *children)
                if (children->input_hbox)
                        gtk_widget_set_sensitive(children->input_hbox, FALSE);
                gtk_widget_grab_focus(children->close_btn);
                if (children->input_hbox)
                        gtk_widget_set_sensitive(children->input_hbox, FALSE);
                gtk_widget_grab_focus(children->close_btn);
-               gtk_signal_connect(GTK_OBJECT(children->dialog),
-                                  "key_press_event",
-                                  GTK_SIGNAL_FUNC(io_dialog_key_pressed_cb),
-                                  children);
+               g_signal_connect(G_OBJECT(children->dialog),
+                                "key_press_event",
+                                G_CALLBACK(io_dialog_key_pressed_cb),
+                                children);
        }
 
        if (children->output) {
                GtkWidget *text = children->text;
                gchar *caption;
                ChildInfo *child_info;
        }
 
        if (children->output) {
                GtkWidget *text = children->text;
                gchar *caption;
                ChildInfo *child_info;
+               GtkTextBuffer *textbuf;
+               GtkTextIter iter, start_iter, end_iter;
 
                gtk_widget_show(children->scrolledwin);
 
                gtk_widget_show(children->scrolledwin);
-               gtk_text_freeze(GTK_TEXT(text));
-               gtk_text_set_point(GTK_TEXT(text), 0);
-               gtk_text_forward_delete(GTK_TEXT(text), 
-                                       gtk_text_get_length(GTK_TEXT(text)));
+               textbuf = gtk_text_view_get_buffer (GTK_TEXT_VIEW(text));
+               gtk_text_buffer_get_start_iter (textbuf, &start_iter);
+               gtk_text_buffer_get_end_iter (textbuf, &end_iter);
+               iter = start_iter;
                for (cur = children->list; cur; cur = cur->next) {
                        child_info = (ChildInfo *)cur->data;
                        if (child_info->pid)
                for (cur = children->list; cur; cur = cur->next) {
                        child_info = (ChildInfo *)cur->data;
                        if (child_info->pid)
@@ -1042,14 +1034,13 @@ static void update_io_dialog(Children *children)
                                        (_("--- Ended: %s\n"),
                                         child_info->cmd);
 
                                        (_("--- Ended: %s\n"),
                                         child_info->cmd);
 
-                       gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL,
-                                       caption, -1);
-                       gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL,
-                                       child_info->output->str, -1);
+                       gtk_text_buffer_insert(textbuf, &iter,
+                                              caption, -1);
+                       gtk_text_buffer_insert(textbuf, &iter,
+                                              child_info->output->str, -1);
                        g_free(caption);
                        child_info->new_out = FALSE;
                }
                        g_free(caption);
                        child_info->new_out = FALSE;
                }
-               gtk_text_thaw(GTK_TEXT(text));
        }
 }
 
        }
 }
 
@@ -1077,11 +1068,11 @@ static void create_io_dialog(Children *children)
        gtk_window_set_title(GTK_WINDOW(dialog), _("Action's input/output"));
        gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
        manage_window_set_transient(GTK_WINDOW(dialog));
        gtk_window_set_title(GTK_WINDOW(dialog), _("Action's input/output"));
        gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
        manage_window_set_transient(GTK_WINDOW(dialog));
-       gtk_signal_connect(GTK_OBJECT(dialog), "delete_event",
-                       GTK_SIGNAL_FUNC(delete_io_dialog_cb), children);
-       gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
-                       GTK_SIGNAL_FUNC(hide_io_dialog_cb),
-                       children);
+       g_signal_connect(G_OBJECT(dialog), "delete_event",
+                        G_CALLBACK(delete_io_dialog_cb), children);
+       g_signal_connect(G_OBJECT(dialog), "destroy",
+                        G_CALLBACK(hide_io_dialog_cb),
+                        children);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), vbox);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), vbox);
@@ -1096,14 +1087,11 @@ static void create_io_dialog(Children *children)
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
                                       GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
                                       GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
-       gtk_widget_set_usize(scrolledwin, 480, 200);
+       gtk_widget_set_size_request(scrolledwin, 480, 200);
        gtk_widget_hide(scrolledwin);
 
        gtk_widget_hide(scrolledwin);
 
-       text = gtk_text_new(gtk_scrolled_window_get_hadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)),
-                           gtk_scrolled_window_get_vadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)));
-       gtk_text_set_editable(GTK_TEXT(text), FALSE);
+       text = gtk_text_view_new();
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
        gtk_widget_show(text);
 
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
        gtk_widget_show(text);
 
@@ -1112,17 +1100,17 @@ static void create_io_dialog(Children *children)
                gtk_widget_show(input_hbox);
 
                entry = gtk_entry_new();
                gtk_widget_show(input_hbox);
 
                entry = gtk_entry_new();
-               gtk_widget_set_usize(entry, 320, -1);
-               gtk_signal_connect(GTK_OBJECT(entry), "activate",
-                                  GTK_SIGNAL_FUNC(send_input), children);
+               gtk_widget_set_size_request(entry, 320, -1);
+               g_signal_connect(G_OBJECT(entry), "activate",
+                                G_CALLBACK(send_input), children);
                gtk_box_pack_start(GTK_BOX(input_hbox), entry, TRUE, TRUE, 0);
                if (children->action_type & ACTION_USER_HIDDEN_IN)
                        gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
                gtk_widget_show(entry);
 
                send_button = gtk_button_new_with_label(_(" Send "));
                gtk_box_pack_start(GTK_BOX(input_hbox), entry, TRUE, TRUE, 0);
                if (children->action_type & ACTION_USER_HIDDEN_IN)
                        gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
                gtk_widget_show(entry);
 
                send_button = gtk_button_new_with_label(_(" Send "));
-               gtk_signal_connect(GTK_OBJECT(send_button), "clicked",
-                                  GTK_SIGNAL_FUNC(send_input), children);
+               g_signal_connect(G_OBJECT(send_button), "clicked",
+                                G_CALLBACK(send_input), children);
                gtk_box_pack_start(GTK_BOX(input_hbox), send_button, FALSE,
                                   FALSE, 0);
                gtk_widget_show(send_button);
                gtk_box_pack_start(GTK_BOX(input_hbox), send_button, FALSE,
                                   FALSE, 0);
                gtk_widget_show(send_button);
@@ -1152,10 +1140,10 @@ static void create_io_dialog(Children *children)
 
        gtkut_button_set_create(&hbox, &abort_button, _("Abort"),
                                &close_button, _("Close"), NULL, NULL);
 
        gtkut_button_set_create(&hbox, &abort_button, _("Abort"),
                                &close_button, _("Close"), NULL, NULL);
-       gtk_signal_connect(GTK_OBJECT(abort_button), "clicked",
-                       GTK_SIGNAL_FUNC(kill_children_cb), children);
-       gtk_signal_connect(GTK_OBJECT(close_button), "clicked",
-                       GTK_SIGNAL_FUNC(hide_io_dialog_cb), children);
+       g_signal_connect(G_OBJECT(abort_button), "clicked",
+                        G_CALLBACK(kill_children_cb), children);
+       g_signal_connect(G_OBJECT(close_button), "clicked",
+                        G_CALLBACK(hide_io_dialog_cb), children);
        gtk_widget_show(hbox);
 
        if (children->nb)
        gtk_widget_show(hbox);
 
        if (children->nb)
@@ -1240,29 +1228,26 @@ static void catch_output(gpointer data, gint source, GdkInputCondition cond)
        if (child_info->children->action_type &
            (ACTION_PIPE_OUT | ACTION_INSERT)
            && source == child_info->chld_out) {
        if (child_info->children->action_type &
            (ACTION_PIPE_OUT | ACTION_INSERT)
            && source == child_info->chld_out) {
-               gboolean is_selection = FALSE;
-               GtkWidget *text = child_info->children->msg_text;
+               GtkTextView *text = GTK_TEXT_VIEW(child_info->children->msg_text);
+               GtkTextBuffer *textbuf = gtk_text_view_get_buffer(text);
+               GtkTextIter iter1, iter2;
+               GtkTextMark *mark;
+               mark = gtk_text_buffer_get_insert(textbuf);
+               gtk_text_buffer_get_iter_at_mark(textbuf, &iter1, mark);
+               gtk_text_buffer_get_iter_at_mark(textbuf, &iter2, mark);
 
 
-               if (GTK_EDITABLE(text)->has_selection)
-                       is_selection = TRUE;
-               gtk_stext_freeze(GTK_STEXT(text));
                while (TRUE) {
                        c = read(source, buf, sizeof(buf) - 1);
                        if (c == 0)
                                break;
                while (TRUE) {
                        c = read(source, buf, sizeof(buf) - 1);
                        if (c == 0)
                                break;
-                       gtk_stext_insert(GTK_STEXT(text),
-                                        child_info->children->msgfont,
-                                        NULL, NULL, buf, c);
+                       gtk_text_buffer_insert(textbuf, &iter2, buf, c);
                }
                }
-               if (is_selection) {
-                       /* Using the select_region draws things. Should not.
-                        * so we just change selection position and 
-                        * defere drawing when thawing. Hack?
-                        */
-                       GTK_EDITABLE(text)->selection_end_pos =
-                                       gtk_stext_get_point(GTK_STEXT(text));
+               if (child_info->children->is_selection) {
+                       gtk_text_buffer_place_cursor(textbuf, &iter1);
+                       gtk_text_buffer_move_mark_by_name
+                               (textbuf, "selection_bound", &iter2);
                }
                }
-               gtk_stext_thaw(GTK_STEXT(text));
        } else {
                c = read(source, buf, sizeof(buf) - 1);
                for (i = 0; i < c; i++)
        } else {
                c = read(source, buf, sizeof(buf) - 1);
                for (i = 0; i < c; i++)
index de93684449166bf365940240b6a863b1e442e0c4..cf094ffe718fb35d7c5bb9355c5ea20c578506c9 100644 (file)
@@ -167,7 +167,7 @@ static void add_address1(const char *str, address_entry *ae)
 {
        completion_entry *ce1;
        ce1 = g_new0(completion_entry, 1),
 {
        completion_entry *ce1;
        ce1 = g_new0(completion_entry, 1),
-       ce1->string = g_strdup(str);
+       ce1->string = g_utf8_strdown(str, -1);
        /* GCompletion list is case sensitive */
        g_strdown(ce1->string);
        ce1->ref = ae;
        /* GCompletion list is case sensitive */
        g_strdown(ce1->string);
        ce1->ref = ae;
@@ -277,69 +277,52 @@ gint start_address_completion(void)
  */
 static gchar *get_address_from_edit(GtkEntry *entry, gint *start_pos)
 {
  */
 static gchar *get_address_from_edit(GtkEntry *entry, gint *start_pos)
 {
-       const gchar *edit_text;
+       const gchar *edit_text, *p;
        gint cur_pos;
        gint cur_pos;
-       wchar_t *wtext;
-       wchar_t *wp;
-       wchar_t rfc_mail_sep;
-       wchar_t quote;
-       wchar_t lt;
-       wchar_t gt;
        gboolean in_quote = FALSE;
        gboolean in_bracket = FALSE;
        gchar *str;
 
        gboolean in_quote = FALSE;
        gboolean in_bracket = FALSE;
        gchar *str;
 
-       if (mbtowc(&rfc_mail_sep, ",", 1) < 0) return NULL;
-       if (mbtowc(&quote, "\"", 1) < 0) return NULL;
-       if (mbtowc(&lt, "<", 1) < 0) return NULL;
-       if (mbtowc(&gt, ">", 1) < 0) return NULL;
-
        edit_text = gtk_entry_get_text(entry);
        if (edit_text == NULL) return NULL;
 
        edit_text = gtk_entry_get_text(entry);
        if (edit_text == NULL) return NULL;
 
-       wtext = strdup_mbstowcs(edit_text);
-       g_return_val_if_fail(wtext != NULL, NULL);
-
        cur_pos = gtk_editable_get_position(GTK_EDITABLE(entry));
 
        /* scan for a separator. doesn't matter if walk points at null byte. */
        cur_pos = gtk_editable_get_position(GTK_EDITABLE(entry));
 
        /* scan for a separator. doesn't matter if walk points at null byte. */
-       for (wp = wtext + cur_pos; wp > wtext; wp--) {
-               if (*wp == quote)
-                       in_quote ^= TRUE;
-               else if (!in_quote) {
-                       if (!in_bracket && *wp == rfc_mail_sep)
+       for (p = g_utf8_offset_to_pointer(edit_text, cur_pos);
+            p > edit_text;
+            p = g_utf8_prev_char(p)) {
+               if (*p == '"') {
+                       in_quote = TRUE;
+               } else if (!in_quote) {
+                       if (!in_bracket && *p == ',') {
                                break;
                                break;
-                       else if (*wp == gt)
+                       } else if (*p == '<')
                                in_bracket = TRUE;
                                in_bracket = TRUE;
-                       else if (*wp == lt)
+                       else if (*p == '>')
                                in_bracket = FALSE;
                }
        }
 
        /* have something valid */
                                in_bracket = FALSE;
                }
        }
 
        /* have something valid */
-       if (wcslen(wp) == 0) {
-               g_free(wtext);
+       if (g_utf8_strlen(p, -1) == 0)
                return NULL;
                return NULL;
-       }
 
 #define IS_VALID_CHAR(x) \
 
 #define IS_VALID_CHAR(x) \
-       (iswalnum(x) || (x) == quote || (x) == lt || ((x) > 0x7f))
+       (isalnum(x) || (x) == '"' || (x) == '<' || (((unsigned char)(x)) > 0x7f))
 
        /* now scan back until we hit a valid character */
 
        /* now scan back until we hit a valid character */
-       for (; *wp && !IS_VALID_CHAR(*wp); wp++)
+       for (; *p && !IS_VALID_CHAR(*p); p = g_utf8_next_char(p))
                ;
 
 #undef IS_VALID_CHAR
 
                ;
 
 #undef IS_VALID_CHAR
 
-       if (wcslen(wp) == 0) {
-               g_free(wtext);
+       if (g_utf8_strlen(p, -1) == 0)
                return NULL;
                return NULL;
-       }
 
 
-       if (start_pos) *start_pos = wp - wtext;
+       if (start_pos) *start_pos = g_utf8_pointer_to_offset(edit_text, p);
 
 
-       str = strdup_wcstombs(wp);
-       g_free(wtext);
+       str = g_strdup(p);
 
        return str;
 } 
 
        return str;
 } 
@@ -377,13 +360,12 @@ guint complete_address(const gchar *str)
 
        g_return_val_if_fail(str != NULL, 0);
 
 
        g_return_val_if_fail(str != NULL, 0);
 
-       Xstrdup_a(d, str, return 0);
+       /* g_completion is case sensitive */
+       d = g_utf8_strdown(str, -1);
 
        clear_completion_cache();
        g_completion_prefix = g_strdup(str);
 
 
        clear_completion_cache();
        g_completion_prefix = g_strdup(str);
 
-       /* g_completion is case sensitive */
-       g_strdown(d);
        result = g_completion_complete(g_completion, d, NULL);
 
        count = g_list_length(result);
        result = g_completion_complete(g_completion, d, NULL);
 
        count = g_list_length(result);
@@ -409,6 +391,9 @@ guint complete_address(const gchar *str)
        }
 
        g_completion_count = count;
        }
 
        g_completion_count = count;
+
+       g_free(d);
+
        return count;
 }
 
        return count;
 }
 
@@ -713,14 +698,14 @@ static void addrcompl_resize_window( CompletionWindow *cw ) {
        gdk_window_get_geometry( cw->window->window, &x, &y, &width, &height, &depth );
 
        gtk_widget_size_request( cw->clist, &r );
        gdk_window_get_geometry( cw->window->window, &x, &y, &width, &height, &depth );
 
        gtk_widget_size_request( cw->clist, &r );
-       gtk_widget_set_usize( cw->window, width, r.height );
+       gtk_widget_set_size_request( cw->window, width, r.height );
        gtk_widget_show_all( cw->window );
        gtk_widget_size_request( cw->clist, &r );
 
        /* Adjust window height to available screen space */
        if( ( y + r.height ) > gdk_screen_height() ) {
                gtk_window_set_policy( GTK_WINDOW( cw->window ), TRUE, FALSE, FALSE );
        gtk_widget_show_all( cw->window );
        gtk_widget_size_request( cw->clist, &r );
 
        /* Adjust window height to available screen space */
        if( ( y + r.height ) > gdk_screen_height() ) {
                gtk_window_set_policy( GTK_WINDOW( cw->window ), TRUE, FALSE, FALSE );
-               gtk_widget_set_usize( cw->window, width, gdk_screen_height() - y );
+               gtk_widget_set_size_request( cw->window, width, gdk_screen_height() - y );
        }
 }
 
        }
 }
 
@@ -919,7 +904,7 @@ static void completion_window_apply_selection(GtkCList *clist, GtkEntry *entry)
        /* Move focus to next widget */
        parent = GTK_WIDGET(entry)->parent;
        if( parent ) {
        /* Move focus to next widget */
        parent = GTK_WIDGET(entry)->parent;
        if( parent ) {
-               gtk_container_focus( GTK_CONTAINER(parent), GTK_DIR_TAB_FORWARD );
+               gtk_widget_child_focus( parent, GTK_DIR_TAB_FORWARD );
        }
 }
 
        }
 }
 
@@ -933,9 +918,9 @@ void address_completion_start(GtkWidget *mainwindow)
        start_address_completion();
 
        /* register focus change hook */
        start_address_completion();
 
        /* register focus change hook */
-       gtk_signal_connect(GTK_OBJECT(mainwindow), "set_focus",
-                          GTK_SIGNAL_FUNC(address_completion_mainwindow_set_focus),
-                          mainwindow);
+       g_signal_connect(G_OBJECT(mainwindow), "set_focus",
+                        G_CALLBACK(address_completion_mainwindow_set_focus),
+                        mainwindow);
 }
 
 /**
 }
 
 /**
@@ -954,16 +939,15 @@ void address_completion_register_entry(GtkEntry *entry)
        g_return_if_fail(GTK_IS_ENTRY(entry));
 
        /* add hooked property */
        g_return_if_fail(GTK_IS_ENTRY(entry));
 
        /* add hooked property */
-       gtk_object_set_data(GTK_OBJECT(entry), ENTRY_DATA_TAB_HOOK, entry);
+       g_object_set_data(G_OBJECT(entry), ENTRY_DATA_TAB_HOOK, entry);
 
        /* add keypress event */
 
        /* add keypress event */
-       gtk_signal_connect_full(GTK_OBJECT(entry), "key_press_event",
-                               GTK_SIGNAL_FUNC(address_completion_entry_key_pressed),
-                               NULL,
+       g_signal_connect_closure
+               (GTK_OBJECT(entry), "key_press_event",
+                g_cclosure_new(G_CALLBACK(address_completion_entry_key_pressed),
                                COMPLETION_UNIQUE_DATA,
                                COMPLETION_UNIQUE_DATA,
-                               NULL,
-                               0,
-                               0); /* magic */
+                               NULL),
+                FALSE); /* magic */
 }
 
 /**
 }
 
 /**
@@ -977,17 +961,17 @@ void address_completion_unregister_entry(GtkEntry *entry)
        g_return_if_fail(entry != NULL);
        g_return_if_fail(GTK_IS_ENTRY(entry));
 
        g_return_if_fail(entry != NULL);
        g_return_if_fail(GTK_IS_ENTRY(entry));
 
-       entry_obj = gtk_object_get_data(GTK_OBJECT(entry), ENTRY_DATA_TAB_HOOK);
+       entry_obj = g_object_get_data(G_OBJECT(entry), ENTRY_DATA_TAB_HOOK);
        g_return_if_fail(entry_obj);
        g_return_if_fail(entry_obj == GTK_OBJECT(entry));
 
        /* has the hooked property? */
        g_return_if_fail(entry_obj);
        g_return_if_fail(entry_obj == GTK_OBJECT(entry));
 
        /* has the hooked property? */
-       gtk_object_set_data(GTK_OBJECT(entry), ENTRY_DATA_TAB_HOOK, NULL);
+       g_object_set_data(G_OBJECT(entry), ENTRY_DATA_TAB_HOOK, NULL);
 
        /* remove the hook */
 
        /* remove the hook */
-       gtk_signal_disconnect_by_func(GTK_OBJECT(entry), 
-               GTK_SIGNAL_FUNC(address_completion_entry_key_pressed),
-               COMPLETION_UNIQUE_DATA);
+       g_signal_handlers_disconnect_by_func(G_OBJECT(entry), 
+                       G_CALLBACK(address_completion_entry_key_pressed),
+                       COMPLETION_UNIQUE_DATA);
 }
 
 /**
 }
 
 /**
@@ -1008,8 +992,11 @@ static void address_completion_mainwindow_set_focus(GtkWindow *window,
                                                    GtkWidget *widget,
                                                    gpointer   data)
 {
                                                    GtkWidget *widget,
                                                    gpointer   data)
 {
-       if (widget)
+       
+       if (widget && GTK_IS_ENTRY(widget) &&
+           g_object_get_data(G_OBJECT(widget), ENTRY_DATA_TAB_HOOK)) {
                clear_completion_cache();
                clear_completion_cache();
+       }
 }
 
 /**
 }
 
 /**
@@ -1032,14 +1019,14 @@ static gboolean address_completion_entry_key_pressed(GtkEntry    *entry,
                         * reported by the system. */
                        ev->keyval = GDK_AudibleBell_Enable;
                        ev->state &= ~GDK_SHIFT_MASK;
                         * reported by the system. */
                        ev->keyval = GDK_AudibleBell_Enable;
                        ev->state &= ~GDK_SHIFT_MASK;
-                       gtk_signal_emit_stop_by_name(GTK_OBJECT(entry),
-                                                    "key_press_event");
 
                        /* Create window */                     
                        address_completion_create_completion_window(entry);
 
                        /* Start remote queries */
                        addrcompl_start_search();
 
                        /* Create window */                     
                        address_completion_create_completion_window(entry);
 
                        /* Start remote queries */
                        addrcompl_start_search();
+
+                       return TRUE;
                }
                else {
                        /* old behaviour */
                }
                else {
                        /* old behaviour */
@@ -1058,7 +1045,7 @@ static gboolean address_completion_entry_key_pressed(GtkEntry    *entry,
        } else
                clear_completion_cache();
 
        } else
                clear_completion_cache();
 
-       return TRUE;
+       return FALSE;
 }
 /**
  * Initialize search term for address completion.
 }
 /**
  * Initialize search term for address completion.
@@ -1137,26 +1124,26 @@ static void address_completion_create_completion_window( GtkEntry *entry_ )
        gdk_window_get_geometry(entry->window, &x, &y, &width, &height, &depth);
        gdk_window_get_deskrelative_origin (entry->window, &x, &y);
        y += height;
        gdk_window_get_geometry(entry->window, &x, &y, &width, &height, &depth);
        gdk_window_get_deskrelative_origin (entry->window, &x, &y);
        y += height;
-       gtk_widget_set_uposition(window, x, y);
+       gtk_window_move(GTK_WINDOW(window), x, y);
 
        /* Resize window to fit initial (empty) address list */
        gtk_widget_size_request( clist, &r );
 
        /* Resize window to fit initial (empty) address list */
        gtk_widget_size_request( clist, &r );
-       gtk_widget_set_usize( window, width, r.height );
+       gtk_widget_set_size_request( window, width, r.height );
        gtk_widget_show_all( window );
        gtk_widget_size_request( clist, &r );
 
        /* Setup handlers */
        gtk_widget_show_all( window );
        gtk_widget_size_request( clist, &r );
 
        /* Setup handlers */
-       gtk_signal_connect(GTK_OBJECT(clist), "select_row",
-                          GTK_SIGNAL_FUNC(completion_window_select_row),
-                          _compWindow_ );
-       gtk_signal_connect(GTK_OBJECT(window),
-                          "button-press-event",
-                          GTK_SIGNAL_FUNC(completion_window_button_press),
-                          _compWindow_ );
-       gtk_signal_connect(GTK_OBJECT(window),
-                          "key-press-event",
-                          GTK_SIGNAL_FUNC(completion_window_key_press),
-                          _compWindow_ );
+       g_signal_connect(G_OBJECT(clist), "select_row",
+                        G_CALLBACK(completion_window_select_row),
+                        _compWindow_ );
+       g_signal_connect(G_OBJECT(window),
+                        "button-press-event",
+                        G_CALLBACK(completion_window_button_press),
+                        _compWindow_ );
+       g_signal_connect(G_OBJECT(window),
+                        "key-press-event",
+                        G_CALLBACK(completion_window_key_press),
+                        _compWindow_ );
        gdk_pointer_grab(window->window, TRUE,
                         GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK |
                         GDK_BUTTON_RELEASE_MASK,
        gdk_pointer_grab(window->window, TRUE,
                         GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK |
                         GDK_BUTTON_RELEASE_MASK,
@@ -1307,7 +1294,7 @@ static gboolean completion_window_key_press(GtkWidget *widget,
 
                /* Move focus to next widget */
                if( parent ) {
 
                /* Move focus to next widget */
                if( parent ) {
-                       gtk_container_focus( GTK_CONTAINER(parent), GTK_DIR_TAB_FORWARD );
+                       gtk_widget_child_focus( parent, GTK_DIR_TAB_FORWARD );
                }
                return FALSE;
        }
                }
                return FALSE;
        }
@@ -1323,7 +1310,7 @@ static gboolean completion_window_key_press(GtkWidget *widget,
 
                /* Move focus to previous widget */
                if( parent ) {
 
                /* Move focus to previous widget */
                if( parent ) {
-                       gtk_container_focus( GTK_CONTAINER(parent), GTK_DIR_TAB_BACKWARD );
+                       gtk_widget_child_focus( parent, GTK_DIR_TAB_BACKWARD );
                }
                return FALSE;
        }
                }
                return FALSE;
        }
index 928f53349f82bd8abd663c3bcb210bb683497e4f..e39012b42527f60f8916d260d852d271a57845eb 100644 (file)
@@ -104,11 +104,12 @@ static gint addressadd_delete_event( GtkWidget *widget, GdkEventAny *event, gboo
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void addressadd_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
+static gboolean addressadd_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
        if (event && event->keyval == GDK_Escape) {
                addressadd_cancelled = TRUE;
                gtk_main_quit();
        }
        if (event && event->keyval == GDK_Escape) {
                addressadd_cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void addressadd_ok( GtkWidget *widget, gboolean *cancelled ) {
 }
 
 static void addressadd_ok( GtkWidget *widget, gboolean *cancelled ) {
@@ -127,8 +128,8 @@ static void addressadd_folder_select( GtkCTree *ctree, gint row, gint column,
        addressadd_dlg.fiSelected = gtk_clist_get_row_data( GTK_CLIST(ctree), row );
 }
 
        addressadd_dlg.fiSelected = gtk_clist_get_row_data( GTK_CLIST(ctree), row );
 }
 
-static void addressadd_tree_button( GtkCTree *ctree, GdkEventButton *event, gpointer data ) {
-       if( ! event ) return;
+static gboolean addressadd_tree_button( GtkCTree *ctree, GdkEventButton *event, gpointer data ) {
+       if( ! event ) return FALSE;
        if( event->button == 1 ) {
                /* Handle double click */
                if( event->type == GDK_2BUTTON_PRESS ) {
        if( event->button == 1 ) {
                /* Handle double click */
                if( event->type == GDK_2BUTTON_PRESS ) {
@@ -136,6 +137,8 @@ static void addressadd_tree_button( GtkCTree *ctree, GdkEventButton *event, gpoi
                        gtk_main_quit();
                }
        }
                        gtk_main_quit();
                }
        }
+
+       return FALSE;
 }
 
 static void addressadd_create( void ) {
 }
 
 static void addressadd_create( void ) {
@@ -156,16 +159,16 @@ static void addressadd_create( void ) {
        GtkWidget *statusbar;
        gint top;
 
        GtkWidget *statusbar;
        gint top;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize( window, 300, 400 );
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request( window, 300, 400 );
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Add to address book") );
        gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_MOUSE );
        gtk_window_set_modal( GTK_WINDOW(window), TRUE );
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Add to address book") );
        gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_MOUSE );
        gtk_window_set_modal( GTK_WINDOW(window), TRUE );
-       gtk_signal_connect( GTK_OBJECT(window), "delete_event",
-                           GTK_SIGNAL_FUNC(addressadd_delete_event), NULL );
-       gtk_signal_connect( GTK_OBJECT(window), "key_press_event",
-                           GTK_SIGNAL_FUNC(addressadd_key_pressed), NULL );
+       g_signal_connect( G_OBJECT(window), "delete_event",
+                         G_CALLBACK(addressadd_delete_event), NULL );
+       g_signal_connect( G_OBJECT(window), "key_press_event",
+                         G_CALLBACK(addressadd_key_pressed), NULL );
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -243,14 +246,14 @@ static void addressadd_create( void ) {
        gtk_container_set_border_width( GTK_CONTAINER(hbbox), 0 );
        gtk_widget_grab_default(ok_btn);
 
        gtk_container_set_border_width( GTK_CONTAINER(hbbox), 0 );
        gtk_widget_grab_default(ok_btn);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(addressadd_ok), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(addressadd_cancel), NULL);
-       gtk_signal_connect(GTK_OBJECT(tree_folder), "select_row",
-                          GTK_SIGNAL_FUNC(addressadd_folder_select), NULL);
-       gtk_signal_connect(GTK_OBJECT(tree_folder), "button_press_event",
-                          GTK_SIGNAL_FUNC(addressadd_tree_button), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(addressadd_ok), NULL);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(addressadd_cancel), NULL);
+       g_signal_connect(G_OBJECT(tree_folder), "select_row",
+                        G_CALLBACK(addressadd_folder_select), NULL);
+       g_signal_connect(G_OBJECT(tree_folder), "button_press_event",
+                        G_CALLBACK(addressadd_tree_button), NULL);
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
index 6daf690400b23cea8561f065e2526b091d7c92ab..5511c0c0529cd517bd9d41b58f2571cfb6cc9ef3 100644 (file)
@@ -199,16 +199,16 @@ static void addressbook_entry_gotfocus            (GtkWidget      *widget);
 static void addressbook_entry_changed          (GtkWidget      *widget);
 #endif
 
 static void addressbook_entry_changed          (GtkWidget      *widget);
 #endif
 
-static void addressbook_list_button_pressed    (GtkWidget      *widget,
+static gboolean addressbook_list_button_pressed        (GtkWidget      *widget,
                                                 GdkEventButton *event,
                                                 gpointer        data);
                                                 GdkEventButton *event,
                                                 gpointer        data);
-static void addressbook_list_button_released   (GtkWidget      *widget,
+static gboolean addressbook_list_button_released(GtkWidget     *widget,
                                                 GdkEventButton *event,
                                                 gpointer        data);
                                                 GdkEventButton *event,
                                                 gpointer        data);
-static void addressbook_tree_button_pressed    (GtkWidget      *ctree,
+static gboolean addressbook_tree_button_pressed        (GtkWidget      *ctree,
                                                 GdkEventButton *event,
                                                 gpointer        data);
                                                 GdkEventButton *event,
                                                 gpointer        data);
-static void addressbook_tree_button_released   (GtkWidget      *ctree,
+static gboolean addressbook_tree_button_released(GtkWidget     *ctree,
                                                 GdkEventButton *event,
                                                 gpointer        data);
 static void addressbook_popup_close            (GtkMenuShell   *menu_shell,
                                                 GdkEventButton *event,
                                                 gpointer        data);
 static void addressbook_popup_close            (GtkMenuShell   *menu_shell,
@@ -295,7 +295,7 @@ static void addressbook_move_nodes_up               (GtkCTree       *ctree,
                                                GtkCTreeNode    *node);
 static GtkCTreeNode *addressbook_find_group_node (GtkCTreeNode *parent,
                                                   ItemGroup    *group);
                                                GtkCTreeNode    *node);
 static GtkCTreeNode *addressbook_find_group_node (GtkCTreeNode *parent,
                                                   ItemGroup    *group);
-static void key_pressed                                (GtkWidget      *widget,
+static gboolean key_pressed                    (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static gint addressbook_treenode_compare_func  (GtkCList       *clist,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static gint addressbook_treenode_compare_func  (GtkCList       *clist,
@@ -621,15 +621,15 @@ static void addressbook_create(void)
 
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), _("Address book"));
 
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), _("Address book"));
-       gtk_widget_set_usize(window, ADDRESSBOOK_WIDTH, ADDRESSBOOK_HEIGHT);
+       gtk_widget_set_size_request(window, ADDRESSBOOK_WIDTH, ADDRESSBOOK_HEIGHT);
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE);
        gtk_window_set_wmclass(GTK_WINDOW(window), "addressbook", "Sylpheed");
        gtk_widget_realize(window);
 
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE);
        gtk_window_set_wmclass(GTK_WINDOW(window), "addressbook", "Sylpheed");
        gtk_widget_realize(window);
 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(addressbook_close), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(addressbook_close), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox = gtk_vbox_new(FALSE, 0);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox = gtk_vbox_new(FALSE, 0);
@@ -650,7 +650,7 @@ static void addressbook_create(void)
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ctree_swin),
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_ALWAYS);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ctree_swin),
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_ALWAYS);
-       gtk_widget_set_usize(ctree_swin, COL_FOLDER_WIDTH + 40, -1);
+       gtk_widget_set_size_request(ctree_swin, COL_FOLDER_WIDTH + 40, -1);
 
        /* Address index */
        ctree = gtk_ctree_new(1, 0);
 
        /* Address index */
        ctree = gtk_ctree_new(1, 0);
@@ -664,14 +664,14 @@ static void addressbook_create(void)
        gtk_clist_set_compare_func(GTK_CLIST(ctree),
                                   addressbook_treenode_compare_func);
 
        gtk_clist_set_compare_func(GTK_CLIST(ctree),
                                   addressbook_treenode_compare_func);
 
-       gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row",
-                          GTK_SIGNAL_FUNC(addressbook_tree_selected), NULL);
-       gtk_signal_connect(GTK_OBJECT(ctree), "button_press_event",
-                          GTK_SIGNAL_FUNC(addressbook_tree_button_pressed),
-                          NULL);
-       gtk_signal_connect(GTK_OBJECT(ctree), "button_release_event",
-                          GTK_SIGNAL_FUNC(addressbook_tree_button_released),
-                          NULL);
+       g_signal_connect(G_OBJECT(ctree), "tree_select_row",
+                        G_CALLBACK(addressbook_tree_selected), NULL);
+       g_signal_connect(G_OBJECT(ctree), "button_press_event",
+                        G_CALLBACK(addressbook_tree_button_pressed),
+                        NULL);
+       g_signal_connect(G_OBJECT(ctree), "button_release_event",
+                        G_CALLBACK(addressbook_tree_button_released),
+                        NULL);
 
        clist_vbox = gtk_vbox_new(FALSE, 4);
 
 
        clist_vbox = gtk_vbox_new(FALSE, 4);
 
@@ -699,22 +699,22 @@ static void addressbook_create(void)
                GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(clist)->column[i].button,
                                       GTK_CAN_FOCUS);
 
                GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(clist)->column[i].button,
                                       GTK_CAN_FOCUS);
 
-       gtk_signal_connect(GTK_OBJECT(clist), "tree_select_row",
-                          GTK_SIGNAL_FUNC(addressbook_list_row_selected), NULL);
-       gtk_signal_connect(GTK_OBJECT(clist), "tree_unselect_row",
-                          GTK_SIGNAL_FUNC(addressbook_list_row_unselected), NULL);
-       gtk_signal_connect(GTK_OBJECT(clist), "button_press_event",
-                          GTK_SIGNAL_FUNC(addressbook_list_button_pressed),
-                          NULL);
-       gtk_signal_connect(GTK_OBJECT(clist), "button_release_event",
-                          GTK_SIGNAL_FUNC(addressbook_list_button_released),
-                          NULL);
-       gtk_signal_connect(GTK_OBJECT(clist), "select_row",
-                          GTK_SIGNAL_FUNC(addressbook_list_selected), NULL);
-       gtk_signal_connect(GTK_OBJECT(clist), "tree_expand",
-                          GTK_SIGNAL_FUNC(addressbook_person_expand_node), NULL );
-       gtk_signal_connect(GTK_OBJECT(clist), "tree_collapse",
-                          GTK_SIGNAL_FUNC(addressbook_person_collapse_node), NULL );
+       g_signal_connect(G_OBJECT(clist), "tree_select_row",
+                        G_CALLBACK(addressbook_list_row_selected), NULL);
+       g_signal_connect(G_OBJECT(clist), "tree_unselect_row",
+                        G_CALLBACK(addressbook_list_row_unselected), NULL);
+       g_signal_connect(G_OBJECT(clist), "button_press_event",
+                        G_CALLBACK(addressbook_list_button_pressed),
+                        NULL);
+       g_signal_connect(G_OBJECT(clist), "button_release_event",
+                        G_CALLBACK(addressbook_list_button_released),
+                        NULL);
+       g_signal_connect(G_OBJECT(clist), "select_row",
+                        G_CALLBACK(addressbook_list_selected), NULL);
+       g_signal_connect(G_OBJECT(clist), "tree_expand",
+                        G_CALLBACK(addressbook_person_expand_node), NULL );
+       g_signal_connect(G_OBJECT(clist), "tree_collapse",
+                        G_CALLBACK(addressbook_person_collapse_node), NULL );
 
        hbox = gtk_hbox_new(FALSE, 4);
        gtk_box_pack_start(GTK_BOX(clist_vbox), hbox, FALSE, FALSE, 0);
 
        hbox = gtk_hbox_new(FALSE, 4);
        gtk_box_pack_start(GTK_BOX(clist_vbox), hbox, FALSE, FALSE, 0);
@@ -726,12 +726,12 @@ static void addressbook_create(void)
        gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
 
        address_completion_register_entry(GTK_ENTRY(entry));
        gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
 
        address_completion_register_entry(GTK_ENTRY(entry));
-       gtk_signal_connect(GTK_OBJECT(entry), "focus_in_event",
-                          GTK_SIGNAL_FUNC(addressbook_entry_gotfocus), NULL);
+       g_signal_connect(G_OBJECT(entry), "focus_in_event",
+                        G_CALLBACK(addressbook_entry_gotfocus), NULL);
 
 #if 0
 
 #if 0
-       gtk_signal_connect(GTK_OBJECT(entry), "changed",
-                          GTK_SIGNAL_FUNC(addressbook_entry_changed), NULL);
+       g_signal_connect(G_OBJECT(entry), "changed",
+                        G_CALLBACK(addressbook_entry_changed), NULL);
 #endif
 
        paned = gtk_hpaned_new();
 #endif
 
        paned = gtk_hpaned_new();
@@ -748,7 +748,7 @@ static void addressbook_create(void)
        /* Button panel */
        hbbox = gtk_hbutton_box_new();
        gtk_button_box_set_layout(GTK_BUTTON_BOX(hbbox), GTK_BUTTONBOX_END);
        /* Button panel */
        hbbox = gtk_hbutton_box_new();
        gtk_button_box_set_layout(GTK_BUTTON_BOX(hbbox), GTK_BUTTONBOX_END);
-       gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbbox), 2);
+       gtk_box_set_spacing(GTK_BOX(hbbox), 2);
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
 
        del_btn = gtk_button_new_with_label(_("Delete"));
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
 
        del_btn = gtk_button_new_with_label(_("Delete"));
@@ -761,12 +761,12 @@ static void addressbook_create(void)
        GTK_WIDGET_SET_FLAGS(lup_btn, GTK_CAN_DEFAULT);
        gtk_box_pack_start(GTK_BOX(hbbox), lup_btn, TRUE, TRUE, 0);
 
        GTK_WIDGET_SET_FLAGS(lup_btn, GTK_CAN_DEFAULT);
        gtk_box_pack_start(GTK_BOX(hbbox), lup_btn, TRUE, TRUE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(del_btn), "clicked",
-                          GTK_SIGNAL_FUNC(addressbook_del_clicked), NULL);
-       gtk_signal_connect(GTK_OBJECT(reg_btn), "clicked",
-                          GTK_SIGNAL_FUNC(addressbook_reg_clicked), NULL);
-       gtk_signal_connect(GTK_OBJECT(lup_btn), "clicked",
-                          GTK_SIGNAL_FUNC(addressbook_lup_clicked), NULL);
+       g_signal_connect(G_OBJECT(del_btn), "clicked",
+                        G_CALLBACK(addressbook_del_clicked), NULL);
+       g_signal_connect(G_OBJECT(reg_btn), "clicked",
+                        G_CALLBACK(addressbook_reg_clicked), NULL);
+       g_signal_connect(G_OBJECT(lup_btn), "clicked",
+                        G_CALLBACK(addressbook_lup_clicked), NULL);
 
        to_btn = gtk_button_new_with_label
                (prefs_common.trans_hdr ? _("To:") : "To:");
 
        to_btn = gtk_button_new_with_label
                (prefs_common.trans_hdr ? _("To:") : "To:");
@@ -781,15 +781,15 @@ static void addressbook_create(void)
        GTK_WIDGET_SET_FLAGS(bcc_btn, GTK_CAN_DEFAULT);
        gtk_box_pack_start(GTK_BOX(hbbox), bcc_btn, TRUE, TRUE, 0);
 
        GTK_WIDGET_SET_FLAGS(bcc_btn, GTK_CAN_DEFAULT);
        gtk_box_pack_start(GTK_BOX(hbbox), bcc_btn, TRUE, TRUE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(to_btn), "clicked",
-                          GTK_SIGNAL_FUNC(addressbook_to_clicked),
-                          GINT_TO_POINTER(COMPOSE_TO));
-       gtk_signal_connect(GTK_OBJECT(cc_btn), "clicked",
-                          GTK_SIGNAL_FUNC(addressbook_to_clicked),
-                          GINT_TO_POINTER(COMPOSE_CC));
-       gtk_signal_connect(GTK_OBJECT(bcc_btn), "clicked",
-                          GTK_SIGNAL_FUNC(addressbook_to_clicked),
-                          GINT_TO_POINTER(COMPOSE_BCC));
+       g_signal_connect(G_OBJECT(to_btn), "clicked",
+                        G_CALLBACK(addressbook_to_clicked),
+                        GINT_TO_POINTER(COMPOSE_TO));
+       g_signal_connect(G_OBJECT(cc_btn), "clicked",
+                        G_CALLBACK(addressbook_to_clicked),
+                        GINT_TO_POINTER(COMPOSE_CC));
+       g_signal_connect(G_OBJECT(bcc_btn), "clicked",
+                        G_CALLBACK(addressbook_to_clicked),
+                        GINT_TO_POINTER(COMPOSE_BCC));
 
        /* Build icons for interface */
        stock_pixmap_gdk( window, STOCK_PIXMAP_INTERFACE,
 
        /* Build icons for interface */
        stock_pixmap_gdk( window, STOCK_PIXMAP_INTERFACE,
@@ -830,8 +830,8 @@ static void addressbook_create(void)
                                       n_entries,
                                       "<AddressBookTree>", &tree_factory,
                                       NULL);
                                       n_entries,
                                       "<AddressBookTree>", &tree_factory,
                                       NULL);
-       gtk_signal_connect(GTK_OBJECT(tree_popup), "selection_done",
-                          GTK_SIGNAL_FUNC(addressbook_popup_close), NULL);
+       g_signal_connect(G_OBJECT(tree_popup), "selection_done",
+                        G_CALLBACK(addressbook_popup_close), NULL);
        n_entries = sizeof(addressbook_list_popup_entries) /
                sizeof(addressbook_list_popup_entries[0]);
        list_popup = menu_create_items(addressbook_list_popup_entries,
        n_entries = sizeof(addressbook_list_popup_entries) /
                sizeof(addressbook_list_popup_entries[0]);
        list_popup = menu_create_items(addressbook_list_popup_entries,
@@ -1142,7 +1142,8 @@ static void addressbook_to_clicked(GtkButton *button, gpointer data)
        Compose *compose;
        AddrSelectItem *item;
        AddrItemObject *aio;
        Compose *compose;
        AddrSelectItem *item;
        AddrItemObject *aio;
-       gchar *addr;
+       const gchar *addr;
+       gchar *tmpaddr;
 
        compose = addrbook.target_compose;
        if( ! compose ) return;
 
        compose = addrbook.target_compose;
        if( ! compose ) return;
@@ -1163,10 +1164,10 @@ static void addressbook_to_clicked(GtkButton *button, gpointer data)
                aio = item->addressItem;
                if( aio->type == ADDR_ITEM_PERSON ||
                    aio->type == ADDR_ITEM_EMAIL ) {
                aio = item->addressItem;
                if( aio->type == ADDR_ITEM_PERSON ||
                    aio->type == ADDR_ITEM_EMAIL ) {
-                       addr = addressbook_format_address( aio );
+                       tmpaddr = addressbook_format_address( aio );
                        compose_entry_append(
                        compose_entry_append(
-                               compose, addr, (ComposeEntryType) data );
-                       g_free( addr );
+                               compose, tmpaddr, (ComposeEntryType) data );
+                       g_free( tmpaddr );
                }
                else if( aio->type == ADDR_ITEM_GROUP ) {
                        ItemGroup *group = ( ItemGroup * ) aio;
                }
                else if( aio->type == ADDR_ITEM_GROUP ) {
                        ItemGroup *group = ( ItemGroup * ) aio;
@@ -1174,11 +1175,11 @@ static void addressbook_to_clicked(GtkButton *button, gpointer data)
                        while( nodeMail ) {
                                ItemEMail *email = nodeMail->data;
 
                        while( nodeMail ) {
                                ItemEMail *email = nodeMail->data;
 
-                               addr = addressbook_format_address(
+                               tmpaddr = addressbook_format_address(
                                                ( AddrItemObject * ) email );
                                compose_entry_append(
                                                ( AddrItemObject * ) email );
                                compose_entry_append(
-                                       compose, addr, (ComposeEntryType) data );
-                               g_free( addr );
+                                       compose, tmpaddr, (ComposeEntryType) data );
+                               g_free( tmpaddr );
                                nodeMail = g_list_next( nodeMail );
                        }
                }
                                nodeMail = g_list_next( nodeMail );
                        }
                }
@@ -1798,11 +1799,11 @@ static void addressbook_entry_gotfocus( GtkWidget *widget ) {
        gtk_editable_select_region( GTK_EDITABLE(addrbook.entry), 0, -1 );
 }
 
        gtk_editable_select_region( GTK_EDITABLE(addrbook.entry), 0, -1 );
 }
 
-static void addressbook_list_button_pressed(GtkWidget *widget,
-                                           GdkEventButton *event,
-                                           gpointer data)
+static gboolean addressbook_list_button_pressed(GtkWidget *widget,
+                                               GdkEventButton *event,
+                                               gpointer data)
 {
 {
-       if( ! event ) return;
+       if( ! event ) return FALSE;
 
        addressbook_list_menu_setup();
 
 
        addressbook_list_menu_setup();
 
@@ -1810,17 +1811,18 @@ static void addressbook_list_button_pressed(GtkWidget *widget,
                gtk_menu_popup( GTK_MENU(addrbook.list_popup), NULL, NULL, NULL, NULL,
                       event->button, event->time );
        }
                gtk_menu_popup( GTK_MENU(addrbook.list_popup), NULL, NULL, NULL, NULL,
                       event->button, event->time );
        }
+       return FALSE;
 }
 
 }
 
-static void addressbook_list_button_released(GtkWidget *widget,
-                                            GdkEventButton *event,
-                                            gpointer data)
+static gboolean addressbook_list_button_released(GtkWidget *widget,
+                                                GdkEventButton *event,
+                                                gpointer data)
 {
 }
 
 {
 }
 
-static void addressbook_tree_button_pressed(GtkWidget *ctree,
-                                           GdkEventButton *event,
-                                           gpointer data)
+static gboolean addressbook_tree_button_pressed(GtkWidget *ctree,
+                                               GdkEventButton *event,
+                                               gpointer data)
 {
        GtkCList *clist = GTK_CLIST(ctree);
        gint row, column;
 {
        GtkCList *clist = GTK_CLIST(ctree);
        gint row, column;
@@ -1837,7 +1839,7 @@ static void addressbook_tree_button_pressed(GtkWidget *ctree,
        gboolean canTreePaste = FALSE;
        gboolean canLookup = FALSE;
 
        gboolean canTreePaste = FALSE;
        gboolean canLookup = FALSE;
 
-       if( ! event ) return;
+       if( ! event ) return FALSE;
        addressbook_menubar_set_sensitive( FALSE );
 
        if( gtk_clist_get_selection_info( clist, event->x, event->y, &row, &column ) ) {
        addressbook_menubar_set_sensitive( FALSE );
 
        if( gtk_clist_get_selection_info( clist, event->x, event->y, &row, &column ) ) {
@@ -1849,7 +1851,7 @@ static void addressbook_tree_button_pressed(GtkWidget *ctree,
        menu_set_insensitive_all(GTK_MENU_SHELL(addrbook.tree_popup));
        gtk_widget_set_sensitive( addrbook.lup_btn, FALSE );
 
        menu_set_insensitive_all(GTK_MENU_SHELL(addrbook.tree_popup));
        gtk_widget_set_sensitive( addrbook.lup_btn, FALSE );
 
-       if( obj == NULL ) return;
+       if( obj == NULL ) return FALSE;
 
        if( ! addrclip_is_empty( _clipBoard_ ) ) {
                canTreePaste = TRUE;
 
        if( ! addrclip_is_empty( _clipBoard_ ) ) {
                canTreePaste = TRUE;
@@ -1930,14 +1932,16 @@ static void addressbook_tree_button_pressed(GtkWidget *ctree,
                               event->button, event->time);
        }
 
                               event->button, event->time);
        }
 
+       return FALSE;
 }
 
 }
 
-static void addressbook_tree_button_released(GtkWidget *ctree,
-                                            GdkEventButton *event,
-                                            gpointer data)
+static gboolean addressbook_tree_button_released(GtkWidget *ctree,
+                                                GdkEventButton *event,
+                                                gpointer data)
 {
        gtk_ctree_select(GTK_CTREE(addrbook.ctree), addrbook.opened);
        gtkut_ctree_set_focus_row(GTK_CTREE(addrbook.ctree), addrbook.opened);
 {
        gtk_ctree_select(GTK_CTREE(addrbook.ctree), addrbook.opened);
        gtkut_ctree_set_focus_row(GTK_CTREE(addrbook.ctree), addrbook.opened);
+       return FALSE;
 }
 
 static void addressbook_popup_close(GtkMenuShell *menu_shell, gpointer data)
 }
 
 static void addressbook_popup_close(GtkMenuShell *menu_shell, gpointer data)
@@ -3231,10 +3235,11 @@ void addressbook_export_to_file( void ) {
        }
 }
 
        }
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                addressbook_close();
 {
        if (event && event->keyval == GDK_Escape)
                addressbook_close();
+       return FALSE;
 }
 
 /*
 }
 
 /*
index f8cabb1d8ce591d64b460db82cbae766c3c260ef..fa2396bf4cce566e5b242c072bf7de06411faf01 100644 (file)
@@ -470,7 +470,7 @@ static void addrgather_dlg_create( void ) {
        GtkWidget *hbbox;
        GtkWidget *hsbox;
 
        GtkWidget *hbbox;
        GtkWidget *hsbox;
 
-       window = gtk_window_new( GTK_WINDOW_DIALOG );
+       window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
        gtk_widget_set_usize( window, 380, -1 );
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER );
        gtk_widget_set_usize( window, 380, -1 );
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER );
index 811b4014b4d1d01488e9198b609a716a28610405..1387c5f9c9660e63f6f2e5d9c1616ab18715c5e7 100644 (file)
 #include "inc.h"
 #include "log.h"
 #include "logwindow.h"
 #include "inc.h"
 #include "log.h"
 #include "logwindow.h"
+#include "prefs_common.h"
 
 
-#define TITLE_FONT     "-*-helvetica-medium-r-normal--17-*-*-*-*-*-*-*," \
-                       "-*-*-medium-r-normal--16-*-*-*-*-*-*-*,*"
-#define MESSAGE_FONT   "-*-helvetica-medium-r-normal--14-*-*-*-*-*-*-*," \
-                       "-*-*-medium-r-normal--14-*-*-*-*-*-*-*,*"
 #define ALERT_PANEL_WIDTH      380
 #define TITLE_HEIGHT           72
 #define MESSAGE_HEIGHT         62
 
 #define ALERT_PANEL_WIDTH      380
 #define TITLE_HEIGHT           72
 #define MESSAGE_HEIGHT         62
 
+#define DEFAULT_TITLE_FONT     "Helvetica 16"
+
 static gboolean alertpanel_is_open = FALSE;
 static AlertValue value;
 
 static gboolean alertpanel_is_open = FALSE;
 static AlertValue value;
 
@@ -63,7 +62,7 @@ static void alertpanel_button_clicked (GtkWidget              *widget,
 static gint alertpanel_deleted         (GtkWidget              *widget,
                                         GdkEventAny            *event,
                                         gpointer                data);
 static gint alertpanel_deleted         (GtkWidget              *widget,
                                         GdkEventAny            *event,
                                         gpointer                data);
-static void alertpanel_close           (GtkWidget              *widget,
+static gboolean alertpanel_close       (GtkWidget              *widget,
                                         GdkEventAny            *event,
                                         gpointer                data);
 
                                         GdkEventAny            *event,
                                         gpointer                data);
 
@@ -221,8 +220,7 @@ static void alertpanel_create(const gchar *title,
                              gboolean     can_disable,
                              GtkWidget *custom_widget)
 {
                              gboolean     can_disable,
                              GtkWidget *custom_widget)
 {
-       static GdkFont *titlefont;
-       GtkStyle *style;
+       static PangoFontDescription *font_desc;
        GtkWidget *label;
        GtkWidget *hbox;
        GtkWidget *vbox;
        GtkWidget *label;
        GtkWidget *hbox;
        GtkWidget *vbox;
@@ -243,13 +241,13 @@ static void alertpanel_create(const gchar *title,
        gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, FALSE);
        gtk_container_set_border_width
                (GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 5);
        gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, FALSE);
        gtk_container_set_border_width
                (GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 5);
-       gtk_window_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
-       gtk_signal_connect(GTK_OBJECT(dialog), "delete_event",
-                          GTK_SIGNAL_FUNC(alertpanel_deleted),
-                          (gpointer)G_ALERTOTHER);
-       gtk_signal_connect(GTK_OBJECT(dialog), "key_press_event",
-                          GTK_SIGNAL_FUNC(alertpanel_close),
-                          (gpointer)G_ALERTOTHER);
+       gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
+       g_signal_connect(G_OBJECT(dialog), "delete_event",
+                        G_CALLBACK(alertpanel_deleted),
+                        (gpointer)G_ALERTOTHER);
+       g_signal_connect(G_OBJECT(dialog), "key_press_event",
+                        G_CALLBACK(alertpanel_close),
+                        (gpointer)G_ALERTOTHER);
        gtk_widget_realize(dialog);
 
        /* for title label */
        gtk_widget_realize(dialog);
 
        /* for title label */
@@ -263,12 +261,15 @@ static void alertpanel_create(const gchar *title,
        label = gtk_label_new(title);
        gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 16);
        gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
        label = gtk_label_new(title);
        gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 16);
        gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-       style = gtk_style_copy(gtk_widget_get_style(label));
-       if (!titlefont)
-               titlefont = gtkut_font_load(TITLE_FONT);
-       if (titlefont)
-               style->font = titlefont;
-       gtk_widget_set_style(label, style);
+       if (!font_desc) {
+               gchar *fontstr = prefs_common.titlefont
+                                       ? prefs_common.titlefont
+                                       : DEFAULT_TITLE_FONT;
+               font_desc = pango_font_description_from_string (fontstr);
+       }
+       if (font_desc) {
+               gtk_widget_modify_font (label, font_desc);
+       }
 
        /* for message and button(s) */
        vbox = gtk_vbox_new(FALSE, 0);
 
        /* for message and button(s) */
        vbox = gtk_vbox_new(FALSE, 0);
@@ -277,7 +278,7 @@ static void alertpanel_create(const gchar *title,
 
        spc_vbox = gtk_vbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), spc_vbox, FALSE, FALSE, 0);
 
        spc_vbox = gtk_vbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), spc_vbox, FALSE, FALSE, 0);
-       gtk_widget_set_usize(spc_vbox, -1, 16);
+       gtk_widget_set_size_request(spc_vbox, -1, 16);
 
        msg_vbox = gtk_vbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), msg_vbox, FALSE, FALSE, 0);
 
        msg_vbox = gtk_vbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), msg_vbox, FALSE, FALSE, 0);
@@ -310,13 +311,13 @@ static void alertpanel_create(const gchar *title,
                                             TRUE);
                gtk_box_pack_start(GTK_BOX(hbox), disable_chkbtn,
                                   FALSE, FALSE, 0);
                                             TRUE);
                gtk_box_pack_start(GTK_BOX(hbox), disable_chkbtn,
                                   FALSE, FALSE, 0);
-               gtk_signal_connect(GTK_OBJECT(disable_chkbtn), "toggled",
-                                  GTK_SIGNAL_FUNC(alertpanel_button_toggled),
-                                  GUINT_TO_POINTER(G_ALERTDISABLE));
+               g_signal_connect(G_OBJECT(disable_chkbtn), "toggled",
+                                G_CALLBACK(alertpanel_button_toggled),
+                                GUINT_TO_POINTER(G_ALERTDISABLE));
        } else {
                spc_vbox = gtk_vbox_new(FALSE, 0);
                gtk_box_pack_start(GTK_BOX(vbox), spc_vbox, FALSE, FALSE, 0);
        } else {
                spc_vbox = gtk_vbox_new(FALSE, 0);
                gtk_box_pack_start(GTK_BOX(vbox), spc_vbox, FALSE, FALSE, 0);
-               gtk_widget_set_usize(spc_vbox, -1, 20);
+               gtk_widget_set_size_request(spc_vbox, -1, 20);
        }
 
        /* for button(s) */
        }
 
        /* for button(s) */
@@ -344,17 +345,17 @@ static void alertpanel_create(const gchar *title,
                gtk_widget_grab_focus(button3);
        }
 
                gtk_widget_grab_focus(button3);
        }
 
-       gtk_signal_connect(GTK_OBJECT(button1), "clicked",
-                          GTK_SIGNAL_FUNC(alertpanel_button_clicked),
-                          GUINT_TO_POINTER(G_ALERTDEFAULT));
+       g_signal_connect(G_OBJECT(button1), "clicked",
+                        G_CALLBACK(alertpanel_button_clicked),
+                        GUINT_TO_POINTER(G_ALERTDEFAULT));
        if (button2_label)
        if (button2_label)
-               gtk_signal_connect(GTK_OBJECT(button2), "clicked",
-                                  GTK_SIGNAL_FUNC(alertpanel_button_clicked),
-                                  GUINT_TO_POINTER(G_ALERTALTERNATE));
+               g_signal_connect(G_OBJECT(button2), "clicked",
+                                G_CALLBACK(alertpanel_button_clicked),
+                                GUINT_TO_POINTER(G_ALERTALTERNATE));
        if (button3_label)
        if (button3_label)
-               gtk_signal_connect(GTK_OBJECT(button3), "clicked",
-                                  GTK_SIGNAL_FUNC(alertpanel_button_clicked),
-                                  GUINT_TO_POINTER(G_ALERTOTHER));
+               g_signal_connect(G_OBJECT(button3), "clicked",
+                                G_CALLBACK(alertpanel_button_clicked),
+                                GUINT_TO_POINTER(G_ALERTOTHER));
 
        gtk_widget_show_all(dialog);
 }
 
        gtk_widget_show_all(dialog);
 }
@@ -380,12 +381,13 @@ static gint alertpanel_deleted(GtkWidget *widget, GdkEventAny *event,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void alertpanel_close(GtkWidget *widget, GdkEventAny *event,
+static gboolean alertpanel_close(GtkWidget *widget, GdkEventAny *event,
                             gpointer data)
 {
        if (event->type == GDK_KEY_PRESS)
                if (((GdkEventKey *)event)->keyval != GDK_Escape)
                             gpointer data)
 {
        if (event->type == GDK_KEY_PRESS)
                if (((GdkEventKey *)event)->keyval != GDK_Escape)
-                       return;
+                       return FALSE;
 
        value = (value & ~G_ALERT_VALUE_MASK) | (AlertValue)data;
 
        value = (value & ~G_ALERT_VALUE_MASK) | (AlertValue)data;
+       return FALSE;
 }
 }
index 0357f2a1e935006c17016c2c952244f933bc4ebd..53e6e827631e4add5fb700c636b66dc7f02743a4 100644 (file)
@@ -298,6 +298,32 @@ void conv_anytoeuc(gchar *outbuf, gint outlen, const gchar *inbuf)
        }
 }
 
        }
 }
 
+void conv_anytoutf8(gchar *outbuf, gint outlen, const gchar *inbuf)
+{
+       gchar *tmpstr = NULL;
+
+       switch (conv_guess_ja_encoding(inbuf)) {
+       case C_ISO_2022_JP:
+               tmpstr = conv_codeset_strdup(inbuf, CS_ISO_2022_JP, CS_UTF_8);
+               strncpy2(outbuf, tmpstr, outlen);
+               g_free(tmpstr);
+               break;
+       case C_SHIFT_JIS:
+               tmpstr = conv_codeset_strdup(inbuf, CS_SHIFT_JIS, CS_UTF_8);
+               strncpy2(outbuf, tmpstr, outlen);
+               g_free(tmpstr);
+               break;
+       case C_EUC_JP:
+               tmpstr = conv_codeset_strdup(inbuf, CS_EUC_JP, CS_UTF_8);
+               strncpy2(outbuf, tmpstr, outlen);
+               g_free(tmpstr);
+               break;
+       default:
+               strncpy2(outbuf, inbuf, outlen);
+               break;
+       }
+}
+
 void conv_anytojis(gchar *outbuf, gint outlen, const gchar *inbuf)
 {
        switch (conv_guess_ja_encoding(inbuf)) {
 void conv_anytojis(gchar *outbuf, gint outlen, const gchar *inbuf)
 {
        switch (conv_guess_ja_encoding(inbuf)) {
@@ -616,11 +642,19 @@ void conv_euctodisp(gchar *outbuf, gint outlen, const gchar *inbuf)
        conv_unreadable_eucjp(outbuf);
 }
 
        conv_unreadable_eucjp(outbuf);
 }
 
+#warning FIXME_GTK2
+#if 0
 void conv_anytodisp(gchar *outbuf, gint outlen, const gchar *inbuf)
 {
        conv_anytoeuc(outbuf, outlen, inbuf);
        conv_unreadable_eucjp(outbuf);
 }
 void conv_anytodisp(gchar *outbuf, gint outlen, const gchar *inbuf)
 {
        conv_anytoeuc(outbuf, outlen, inbuf);
        conv_unreadable_eucjp(outbuf);
 }
+#else
+void conv_anytodisp(gchar *outbuf, gint outlen, const gchar *inbuf)
+{
+       conv_anytoutf8(outbuf, outlen, inbuf);
+}
+#endif
 
 void conv_ustodisp(gchar *outbuf, gint outlen, const gchar *inbuf)
 {
 
 void conv_ustodisp(gchar *outbuf, gint outlen, const gchar *inbuf)
 {
@@ -650,7 +684,8 @@ CodeConverter *conv_code_converter_new(const gchar *charset)
        CodeConverter *conv;
 
        conv = g_new0(CodeConverter, 1);
        CodeConverter *conv;
 
        conv = g_new0(CodeConverter, 1);
-       conv->code_conv_func = conv_get_code_conv_func(charset, NULL);
+#warning FIXME_GTK2
+       conv->code_conv_func = conv_get_code_conv_func(charset, CS_UTF_8);
        conv->charset_str = g_strdup(charset);
        conv->charset = conv_get_charset_from_str(charset);
 
        conv->charset_str = g_strdup(charset);
        conv->charset = conv_get_charset_from_str(charset);
 
@@ -672,7 +707,8 @@ gint conv_convert(CodeConverter *conv, gchar *outbuf, gint outlen,
        else {
                gchar *str;
 
        else {
                gchar *str;
 
-               str = conv_iconv_strdup(inbuf, conv->charset_str, NULL);
+#warning FIXME_GTK2
+               str = conv_iconv_strdup(inbuf, conv->charset_str, CS_UTF_8);
                if (!str)
                        return -1;
                else {
                if (!str)
                        return -1;
                else {
@@ -1339,7 +1375,7 @@ gboolean conv_is_multibyte_encoding(CharSet encoding)
 
 const gchar *conv_get_current_locale(void)
 {
 
 const gchar *conv_get_current_locale(void)
 {
-       gchar *cur_locale;
+       const gchar *cur_locale;
 
        cur_locale = g_getenv("LC_ALL");
        if (!cur_locale) cur_locale = g_getenv("LC_CTYPE");
 
        cur_locale = g_getenv("LC_ALL");
        if (!cur_locale) cur_locale = g_getenv("LC_CTYPE");
@@ -1357,10 +1393,15 @@ void conv_unmime_header_overwrite(gchar *str)
        gchar *buf;
        gint buflen;
        CharSet cur_charset;
        gchar *buf;
        gint buflen;
        CharSet cur_charset;
+       const gchar *locale;
 
        cur_charset = conv_get_current_charset();
 
 
        cur_charset = conv_get_current_charset();
 
-       if (cur_charset == C_EUC_JP) {
+#warning FIXME_GTK2
+/* Should we always ensure to convert? */
+       locale = conv_get_current_locale();
+
+       if (locale && !strncasecmp(locale, "ja", 2)) {
                buflen = strlen(str) * 2 + 1;
                Xalloca(buf, buflen, return);
                conv_anytodisp(buf, buflen, str);
                buflen = strlen(str) * 2 + 1;
                Xalloca(buf, buflen, return);
                conv_anytodisp(buf, buflen, str);
@@ -1377,10 +1418,15 @@ void conv_unmime_header(gchar *outbuf, gint outlen, const gchar *str,
                        const gchar *charset)
 {
        CharSet cur_charset;
                        const gchar *charset)
 {
        CharSet cur_charset;
+       const gchar *locale;
 
        cur_charset = conv_get_current_charset();
 
 
        cur_charset = conv_get_current_charset();
 
-       if (cur_charset == C_EUC_JP) {
+#warning FIXME_GTK2
+/* Should we always ensure to convert? */
+       locale = conv_get_current_locale();
+
+       if (locale && !strncasecmp(locale, "ja", 2)) {
                gchar *buf;
                gint buflen;
 
                gchar *buf;
                gint buflen;
 
index 19c24248f337d0b56a3cccd65281efe862854979..9bd19d2328552482eb31d43233f3b8381937ffae 100644 (file)
@@ -165,6 +165,7 @@ void conv_jistoeuc  (gchar *outbuf, gint outlen, const gchar *inbuf);
 void conv_euctojis     (gchar *outbuf, gint outlen, const gchar *inbuf);
 void conv_sjistoeuc    (gchar *outbuf, gint outlen, const gchar *inbuf);
 void conv_anytoeuc     (gchar *outbuf, gint outlen, const gchar *inbuf);
 void conv_euctojis     (gchar *outbuf, gint outlen, const gchar *inbuf);
 void conv_sjistoeuc    (gchar *outbuf, gint outlen, const gchar *inbuf);
 void conv_anytoeuc     (gchar *outbuf, gint outlen, const gchar *inbuf);
+void conv_anytoutf8    (gchar *outbuf, gint outlen, const gchar *inbuf);
 void conv_anytojis     (gchar *outbuf, gint outlen, const gchar *inbuf);
 
 void conv_unreadable_eucjp     (gchar *str);
 void conv_anytojis     (gchar *outbuf, gint outlen, const gchar *inbuf);
 
 void conv_unreadable_eucjp     (gchar *str);
index 5e24b3b85a47e1113f6731fd12d7e7a165824465..2b55f6fe28f1a35b3d913f364b0fc4207aabd861 100644 (file)
@@ -74,7 +74,8 @@
 #define FOLDER_LIST            "folderlist.xml"
 #define CACHE_FILE             ".sylpheed_cache"
 #define MARK_FILE              ".sylpheed_mark"
 #define FOLDER_LIST            "folderlist.xml"
 #define CACHE_FILE             ".sylpheed_cache"
 #define MARK_FILE              ".sylpheed_mark"
-#define CACHE_VERSION          20
+/* #warning FIXME_GTK2 */
+#define CACHE_VERSION          2020
 #define MARK_VERSION           2
 
 #define DEFAULT_SIGNATURE      ".signature"
 #define MARK_VERSION           2
 
 #define DEFAULT_SIGNATURE      ".signature"
index 3cb08bf7ba05580b4e9d953ff6a481a0e63e7916..5ce3ad8200b8c4534f9e69b6a7250799a97ad577 100644 (file)
@@ -1,6 +1,10 @@
 #ifndef __INTL_H__
 #define __INTL_H__
 
 #ifndef __INTL_H__
 #define __INTL_H__
 
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif /* HAVE_CONFIG_H */
+
 #ifdef ENABLE_NLS
 #  include <libintl.h>
 #  define _(String) gettext(String)
 #ifdef ENABLE_NLS
 #  include <libintl.h>
 #  define _(String) gettext(String)
@@ -9,6 +13,9 @@
 #  else
 #    define N_(String) (String)
 #  endif /* gettext_noop */
 #  else
 #    define N_(String) (String)
 #  endif /* gettext_noop */
+#  ifndef HAVE_BIND_TEXTDOMAIN_CODESET
+#    define bind_textdomain_codeset(Domain, Codeset) (Codeset)
+#  endif /* HAVE_BIND_TEXTDOMAIN_CODESET */
 #else
 #  define _(String) (String)
 #  define N_(String) (String)
 #else
 #  define _(String) (String)
 #  define N_(String) (String)
@@ -17,6 +24,7 @@
 #  define dgettext(Domain,String) (String)
 #  define dcgettext(Domain,String,Type) (String)
 #  define bindtextdomain(Domain,Directory) (Domain) 
 #  define dgettext(Domain,String) (String)
 #  define dcgettext(Domain,String,Type) (String)
 #  define bindtextdomain(Domain,Directory) (Domain) 
+#  define bind_textdomain_codeset(Domain, Codeset) (Codeset)
 #endif /* ENABLE_NLS */
 
 #endif /* __INTL_H__ */
 #endif /* ENABLE_NLS */
 
 #endif /* __INTL_H__ */
index 8b5f07343b1bc90b098b8a453c35db2f2df143bb..3fa5b5d0aaea4e29112e751fad1cff6ec5b9e5cc 100644 (file)
@@ -61,6 +61,7 @@ typedef gint (*SockAddrFunc)  (GList          *addr_list,
 typedef struct _SockConnectData        SockConnectData;
 typedef struct _SockLookupData SockLookupData;
 typedef struct _SockAddrData   SockAddrData;
 typedef struct _SockConnectData        SockConnectData;
 typedef struct _SockLookupData SockLookupData;
 typedef struct _SockAddrData   SockAddrData;
+typedef struct _SockSource     SockSource;
 
 struct _SockConnectData {
        gint id;
 
 struct _SockConnectData {
        gint id;
@@ -92,19 +93,20 @@ struct _SockAddrData {
        struct sockaddr *addr;
 };
 
        struct sockaddr *addr;
 };
 
+struct _SockSource {
+       GSource parent;
+       SockInfo *sock;
+};
+
 static guint io_timeout = 60;
 
 static GList *sock_connect_data_list = NULL;
 
 static guint io_timeout = 60;
 
 static GList *sock_connect_data_list = NULL;
 
-static gboolean sock_prepare           (gpointer        source_data,
-                                        GTimeVal       *current_time,
-                                        gint           *timeout,
-                                        gpointer        data);
-static gboolean sock_check             (gpointer        source_data,
-                                        GTimeVal       *current_time,
-                                        gpointer        user_data);
-static gboolean sock_dispatch          (gpointer        source_data,
-                                        GTimeVal       *current_time,
+static gboolean sock_prepare           (GSource        *source,
+                                        gint           *timeout);
+static gboolean sock_check             (GSource        *source);
+static gboolean sock_dispatch          (GSource        *source,
+                                        GSourceFunc     callback,
                                         gpointer        user_data);
 
 GSourceFuncs sock_watch_funcs = {
                                         gpointer        user_data);
 
 GSourceFuncs sock_watch_funcs = {
@@ -269,17 +271,15 @@ gboolean sock_is_nonblocking_mode(SockInfo *sock)
 }
 
 
 }
 
 
-static gboolean sock_prepare(gpointer source_data, GTimeVal *current_time,
-                            gint *timeout, gpointer data)
+static gboolean sock_prepare(GSource *source, gint *timeout)
 {
        *timeout = 1;
        return FALSE;
 }
 
 {
        *timeout = 1;
        return FALSE;
 }
 
-static gboolean sock_check(gpointer source_data, GTimeVal *current_time,
-                          gpointer user_data)
+static gboolean sock_check(GSource *source)
 {
 {
-       SockInfo *sock = (SockInfo *)source_data;
+       SockInfo *sock = ((SockSource *)source)->sock;
        struct timeval timeout = {0, 0};
        fd_set fds;
        GIOCondition condition = sock->condition;
        struct timeval timeout = {0, 0};
        fd_set fds;
        GIOCondition condition = sock->condition;
@@ -311,10 +311,10 @@ static gboolean sock_check(gpointer source_data, GTimeVal *current_time,
        return FD_ISSET(sock->sock, &fds) != 0;
 }
 
        return FD_ISSET(sock->sock, &fds) != 0;
 }
 
-static gboolean sock_dispatch(gpointer source_data, GTimeVal *current_time,
+static gboolean sock_dispatch(GSource *source, GSourceFunc callback,
                              gpointer user_data)
 {
                              gpointer user_data)
 {
-       SockInfo *sock = (SockInfo *)source_data;
+       SockInfo *sock = ((SockSource *)source)->sock;
 
        return sock->callback(sock, sock->condition, user_data);
 }
 
        return sock->callback(sock, sock->condition, user_data);
 }
@@ -336,8 +336,14 @@ guint sock_add_watch(SockInfo *sock, GIOCondition condition, SockFunc func,
 
 #if USE_OPENSSL
        if (sock->ssl)
 
 #if USE_OPENSSL
        if (sock->ssl)
-               return g_source_add(G_PRIORITY_DEFAULT, FALSE,
-                                   &sock_watch_funcs, sock, data, NULL);
+       {
+               GSource *source = g_source_new(&sock_watch_funcs,
+                                              sizeof(SockSource));
+               ((SockSource *) source)->sock = sock;
+               g_source_set_priority(source, G_PRIORITY_DEFAULT);
+               g_source_set_can_recurse(source, FALSE);
+               g_source_attach(source, NULL);
+       }
 #endif
 
        return g_io_add_watch(sock->sock_ch, condition, sock_watch_cb, sock);
 #endif
 
        return g_io_add_watch(sock->sock_ch, condition, sock_watch_cb, sock);
index e00231e2622ed3ae4f3469f0650caa999b21460d..99b82aa80c511fdcd79f392732ef4fb4d3d7ae92 100644 (file)
@@ -22,6 +22,7 @@
 #endif
 
 #include "defs.h"
 #endif
 
 #include "defs.h"
+#include <stdlib.h>
 #include <glib.h>
 
 #if HAVE_LOCALE_H
 #include <glib.h>
 
 #if HAVE_LOCALE_H
@@ -93,7 +94,9 @@ gboolean sylpheed_init(int *argc, char ***argv)
 
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
 
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
+       bind_textdomain_codeset (PACKAGE, "UTF-8");
        textdomain(PACKAGE);
        textdomain(PACKAGE);
+       putenv("G_BROKEN_FILENAMES=1");
 
        /* backup if old rc file exists */
        if (is_file_exist(RC_DIR)) {
 
        /* backup if old rc file exists */
        if (is_file_exist(RC_DIR)) {
index 15f12fe93948056d77972ea939bd55c75d8b5587..fdafcf8fb052762a8ce62b02820c3670ce9a493c 100644 (file)
@@ -29,6 +29,7 @@
 #include "intl.h"
 #include "utils.h"
 #include "template.h"
 #include "intl.h"
 #include "utils.h"
 #include "template.h"
+#include "../codeconv.h"
 
 static GSList *template_list;
 
 
 static GSList *template_list;
 
@@ -38,6 +39,9 @@ static Template *template_load(gchar *filename)
        FILE *fp;
        gchar buf[BUFFSIZE];
        gint bytes_read;
        FILE *fp;
        gchar buf[BUFFSIZE];
        gint bytes_read;
+#warning FIXME_GTK2
+       const gchar *src_codeset = conv_get_current_charset_str();
+       const gchar *dest_codeset = CS_UTF_8;
 
        if ((fp = fopen(filename, "rb")) == NULL) {
                FILE_OP_ERROR(filename, "fopen");
 
        if ((fp = fopen(filename, "rb")) == NULL) {
                FILE_OP_ERROR(filename, "fopen");
@@ -53,18 +57,36 @@ static Template *template_load(gchar *filename)
        tmpl->value = NULL;
 
        while (fgets(buf, sizeof(buf), fp) != NULL) {
        tmpl->value = NULL;
 
        while (fgets(buf, sizeof(buf), fp) != NULL) {
+               gchar *tmp = NULL;
+
                if (buf[0] == '\n')
                        break;
                if (buf[0] == '\n')
                        break;
-               else if (!g_strncasecmp(buf, "Name:", 5))
-                       tmpl->name = g_strdup(g_strstrip(buf + 5));
-               else if (!g_strncasecmp(buf, "Subject:", 8))
-                       tmpl->subject = g_strdup(g_strstrip(buf + 8));
-               else if (!g_strncasecmp(buf, "To:", 3))
-                       tmpl->to = g_strdup(g_strstrip(buf + 3));
-               else if (!g_strncasecmp(buf, "Cc:", 3))
-                       tmpl->cc = g_strdup(g_strstrip(buf + 3));
-               else if (!g_strncasecmp(buf, "Bcc:", 4))
-                       tmpl->bcc = g_strdup(g_strstrip(buf + 4));                                              
+               else if (!g_strncasecmp(buf, "Name:", 5)) {
+                       tmp = conv_codeset_strdup(buf + 5,
+                                                 src_codeset,
+                                                 dest_codeset);
+                       tmpl->name = tmp ? g_strstrip(tmp) : g_strdup(buf + 5);
+               } else if (!g_strncasecmp(buf, "Subject:", 8)) {
+                       tmp = conv_codeset_strdup(buf + 8,
+                                                 src_codeset,
+                                                 dest_codeset);
+                       tmpl->subject = tmp ? g_strstrip(tmp) : g_strdup(buf + 8);
+               } else if (!g_strncasecmp(buf, "To:", 3)) {
+                       tmp = conv_codeset_strdup(buf + 3,
+                                                 src_codeset,
+                                                 dest_codeset);
+                       tmpl->to = tmp ? g_strstrip(tmp) : g_strdup(buf + 3);
+               } else if (!g_strncasecmp(buf, "Cc:", 3)) {
+                       tmp = conv_codeset_strdup(buf + 3,
+                                                 src_codeset,
+                                                 dest_codeset);
+                       tmpl->cc = tmp ? g_strstrip(tmp) : g_strdup(buf + 3);
+               } else if (!g_strncasecmp(buf, "Bcc:", 4)) {
+                       tmp = conv_codeset_strdup(buf + 4,
+                                                 src_codeset,
+                                                 dest_codeset);
+                       tmpl->bcc = tmp ? g_strstrip(tmp) : g_strdup(buf + 4);
+               }
        }
 
        if (!tmpl->name) {
        }
 
        if (!tmpl->name) {
@@ -81,7 +103,10 @@ static Template *template_load(gchar *filename)
                }
        }
        fclose(fp);
                }
        }
        fclose(fp);
-       tmpl->value = g_strndup(buf, bytes_read);
+       buf[bytes_read] = '\0';
+       tmpl->value = conv_codeset_strdup(buf, src_codeset, dest_codeset);
+       if (!tmpl->value)
+               tmpl->value = g_strdup(buf);
 
        return tmpl;
 }
 
        return tmpl;
 }
@@ -111,7 +136,7 @@ void template_clear_config(GSList *tmpl_list)
 
 GSList *template_read_config(void)
 {
 
 GSList *template_read_config(void)
 {
-       gchar *path;
+       const gchar *path;
        gchar *filename;
        DIR *dp;
        struct dirent *de;
        gchar *filename;
        DIR *dp;
        struct dirent *de;
@@ -157,7 +182,7 @@ GSList *template_read_config(void)
 
 void template_write_config(GSList *tmpl_list)
 {
 
 void template_write_config(GSList *tmpl_list)
 {
-       gchar *path;
+       const gchar *path;
        GSList *cur;
        Template *tmpl;
        FILE *fp;
        GSList *cur;
        Template *tmpl;
        FILE *fp;
@@ -180,6 +205,10 @@ void template_write_config(GSList *tmpl_list)
 
        for (cur = tmpl_list, tmpl_num = 1; cur != NULL;
             cur = cur->next, tmpl_num++) {
 
        for (cur = tmpl_list, tmpl_num = 1; cur != NULL;
             cur = cur->next, tmpl_num++) {
+#warning FIXME_GTK2
+               const gchar *src_codeset = CS_UTF_8;
+               const gchar *dest_codeset = conv_get_current_charset_str();
+               gchar *tmp = NULL;
                gchar *filename;
 
                tmpl = cur->data;
                gchar *filename;
 
                tmpl = cur->data;
@@ -190,21 +219,58 @@ void template_write_config(GSList *tmpl_list)
                if ((fp = fopen(filename, "wb")) == NULL) {
                        FILE_OP_ERROR(filename, "fopen");
                        g_free(filename);
                if ((fp = fopen(filename, "wb")) == NULL) {
                        FILE_OP_ERROR(filename, "fopen");
                        g_free(filename);
-                       g_free(path);
                        return;
                }
 
                        return;
                }
 
-               fprintf(fp, "Name: %s\n", tmpl->name);
-               if (tmpl->subject && *tmpl->subject != '\0')
-                       fprintf(fp, "Subject: %s\n", tmpl->subject);
-               if (tmpl->to && *tmpl->to != '\0')
-                       fprintf(fp, "To: %s\n", tmpl->to);
-               if (tmpl->cc && *tmpl->cc != '\0')
-                       fprintf(fp, "Cc: %s\n", tmpl->cc);
-               if (tmpl->bcc && *tmpl->bcc != '\0')
-                       fprintf(fp, "Bcc: %s\n", tmpl->bcc);                                            
+               tmp = conv_codeset_strdup(tmpl->name, src_codeset, dest_codeset);
+               if (!tmp)
+                       tmp = g_strdup(tmpl->name);
+               fprintf(fp, "Name: %s\n", tmp ? tmp : "");
+               g_free(tmp);
+
+               if (tmpl->subject && *tmpl->subject != '\0') {
+                       tmp = conv_codeset_strdup(tmpl->subject,
+                                                 src_codeset, dest_codeset);
+                       if (!tmp)
+                               tmp = g_strdup(tmpl->subject);
+                       fprintf(fp, "Subject: %s\n", tmp);
+                       g_free(tmp);
+               }
+
+               if (tmpl->to && *tmpl->to != '\0') {
+                       tmp = conv_codeset_strdup(tmpl->to,
+                                                 src_codeset, dest_codeset);
+                       if (!tmp)
+                               tmp = g_strdup(tmpl->to);
+                       fprintf(fp, "To: %s\n", tmp);
+                       g_free(tmp);
+               }
+
+               if (tmpl->cc && *tmpl->cc != '\0') {
+                       tmp = conv_codeset_strdup(tmpl->cc,
+                                                 src_codeset, dest_codeset);
+                       if (!tmp)
+                               tmp = g_strdup(tmpl->cc);
+                       fprintf(fp, "Cc: %s\n", tmp);
+                       g_free(tmp);
+               }
+
+               if (tmpl->bcc && *tmpl->bcc != '\0') {
+                       tmp = conv_codeset_strdup(tmpl->bcc,
+                                                 src_codeset, dest_codeset);
+                       if (!tmp)
+                               tmp = g_strdup(tmpl->bcc);
+                       fprintf(fp, "Bcc: %s\n", tmp);
+                       g_free(tmp);
+               }
+
                fputs("\n", fp);
                fputs("\n", fp);
-               fwrite(tmpl->value, sizeof(gchar) * strlen(tmpl->value), 1, fp);
+               tmp = conv_codeset_strdup(tmpl->value,
+                                         src_codeset, dest_codeset);
+               if (!tmp)
+                       tmp = g_strdup(tmpl->value);
+               fwrite(tmp, sizeof(gchar) * strlen(tmp), 1, fp);
+               g_free(tmp);
                fclose(fp);
        }
 }
                fclose(fp);
        }
 }
index d5e861f527bca8e3d6f833ec2f96d1f101522c41..adb1ed8db8415c667b84528ec29c2368f888ba1a 100644 (file)
@@ -46,6 +46,7 @@
 #include "intl.h"
 #include "utils.h"
 #include "socket.h"
 #include "intl.h"
 #include "utils.h"
 #include "socket.h"
+#include "../codeconv.h"
 
 #define BUFFSIZE       8192
 
 
 #define BUFFSIZE       8192
 
@@ -1393,7 +1394,7 @@ GList *uri_list_extract_filenames(const gchar *uri_list)
 {
        GList *result = NULL;
        const gchar *p, *q;
 {
        GList *result = NULL;
        const gchar *p, *q;
-       gchar *file;
+       gchar *escaped_utf8uri;
 
        p = uri_list;
 
 
        p = uri_list;
 
@@ -1401,17 +1402,36 @@ GList *uri_list_extract_filenames(const gchar *uri_list)
                if (*p != '#') {
                        while (isspace(*p)) p++;
                        if (!strncmp(p, "file:", 5)) {
                if (*p != '#') {
                        while (isspace(*p)) p++;
                        if (!strncmp(p, "file:", 5)) {
-                               p += 5;
                                q = p;
                                q = p;
+                               q += 5;
                                while (*q && *q != '\n' && *q != '\r') q++;
 
                                if (q > p) {
                                while (*q && *q != '\n' && *q != '\r') q++;
 
                                if (q > p) {
+                                       gchar *file, *locale_file = NULL;
                                        q--;
                                        while (q > p && isspace(*q)) q--;
                                        q--;
                                        while (q > p && isspace(*q)) q--;
-                                       file = g_malloc(q - p + 2);
-                                       strncpy(file, p, q - p + 1);
-                                       file[q - p + 1] = '\0';
-                                       result = g_list_append(result,file);
+                                       Xalloca(escaped_utf8uri, q - p + 2,
+                                               return result);
+                                       Xalloca(file, q - p + 2,
+                                               return result);
+                                       *file = '\0';
+                                       strncpy(escaped_utf8uri, p, q - p + 1);
+                                       escaped_utf8uri[q - p + 1] = '\0';
+                                       decode_uri(file, escaped_utf8uri);
+#warning FIXME_GTK2 /* should we use g_filename_from_utf8()? */
+                    /*
+                    * g_filename_from_uri() rejects escaped/locale encoded uri
+                    * string which come from Nautilus.
+                    */
+                                       if (g_utf8_validate(file, -1, NULL))
+                                               locale_file
+                                                       = conv_codeset_strdup(
+                                                               file + 5,
+                                                               CS_UTF_8,
+                                                               conv_get_current_charset_str());
+                                       if (!locale_file)
+                                               locale_file = g_strdup(file + 5);
+                                       result = g_list_append(result, locale_file);
                                }
                        }
                }
                                }
                        }
                }
@@ -1500,7 +1520,7 @@ gint scan_mailto_url(const gchar *mailto, gchar **to, gchar **cc, gchar **bcc,
  * but as long as we are not able to do our own extensions to glibc, we do
  * it here.
  */
  * but as long as we are not able to do our own extensions to glibc, we do
  * it here.
  */
-gchar *get_home_dir(void)
+const gchar *get_home_dir(void)
 {
 #if HAVE_DOSISH_SYSTEM
     static gchar *home_dir;
 {
 #if HAVE_DOSISH_SYSTEM
     static gchar *home_dir;
@@ -1525,7 +1545,7 @@ gchar *get_home_dir(void)
 #endif
 }
 
 #endif
 }
 
-gchar *get_rc_dir(void)
+const gchar *get_rc_dir(void)
 {
        static gchar *rc_dir = NULL;
 
 {
        static gchar *rc_dir = NULL;
 
@@ -1536,7 +1556,7 @@ gchar *get_rc_dir(void)
        return rc_dir;
 }
 
        return rc_dir;
 }
 
-gchar *get_news_cache_dir(void)
+const gchar *get_news_cache_dir(void)
 {
        static gchar *news_cache_dir = NULL;
 
 {
        static gchar *news_cache_dir = NULL;
 
@@ -1547,7 +1567,7 @@ gchar *get_news_cache_dir(void)
        return news_cache_dir;
 }
 
        return news_cache_dir;
 }
 
-gchar *get_imap_cache_dir(void)
+const gchar *get_imap_cache_dir(void)
 {
        static gchar *imap_cache_dir = NULL;
 
 {
        static gchar *imap_cache_dir = NULL;
 
@@ -1558,7 +1578,7 @@ gchar *get_imap_cache_dir(void)
        return imap_cache_dir;
 }
 
        return imap_cache_dir;
 }
 
-gchar *get_mbox_cache_dir(void)
+const gchar *get_mbox_cache_dir(void)
 {
        static gchar *mbox_cache_dir = NULL;
 
 {
        static gchar *mbox_cache_dir = NULL;
 
@@ -1569,7 +1589,7 @@ gchar *get_mbox_cache_dir(void)
        return mbox_cache_dir;
 }
 
        return mbox_cache_dir;
 }
 
-gchar *get_mime_tmp_dir(void)
+const gchar *get_mime_tmp_dir(void)
 {
        static gchar *mime_tmp_dir = NULL;
 
 {
        static gchar *mime_tmp_dir = NULL;
 
@@ -1580,7 +1600,7 @@ gchar *get_mime_tmp_dir(void)
        return mime_tmp_dir;
 }
 
        return mime_tmp_dir;
 }
 
-gchar *get_template_dir(void)
+const gchar *get_template_dir(void)
 {
        static gchar *template_dir = NULL;
 
 {
        static gchar *template_dir = NULL;
 
@@ -1591,7 +1611,7 @@ gchar *get_template_dir(void)
        return template_dir;
 }
 
        return template_dir;
 }
 
-gchar *get_header_cache_dir(void)
+const gchar *get_header_cache_dir(void)
 {
        static gchar *header_dir = NULL;
 
 {
        static gchar *header_dir = NULL;
 
@@ -1602,7 +1622,7 @@ gchar *get_header_cache_dir(void)
        return header_dir;
 }
 
        return header_dir;
 }
 
-gchar *get_tmp_dir(void)
+const gchar *get_tmp_dir(void)
 {
        static gchar *tmp_dir = NULL;
 
 {
        static gchar *tmp_dir = NULL;
 
@@ -1624,7 +1644,7 @@ gchar *get_tmp_file(void)
        return tmp_file;
 }
 
        return tmp_file;
 }
 
-gchar *get_domain_name(void)
+const gchar *get_domain_name(void)
 {
        static gchar *domain_name = NULL;
 
 {
        static gchar *domain_name = NULL;
 
index 629fd219fe7d4035eebdda320884ee846c355f96..0c1e7ef28fc7343ddad6064b9df81aa1dc424f0f 100644 (file)
@@ -313,17 +313,17 @@ gint scan_mailto_url                      (const gchar    *mailto,
                                         gchar         **body);
 
 /* return static strings */
                                         gchar         **body);
 
 /* return static strings */
-gchar *get_home_dir            (void);
-gchar *get_rc_dir              (void);
-gchar *get_news_cache_dir      (void);
-gchar *get_imap_cache_dir      (void);
-gchar *get_mbox_cache_dir      (void);
-gchar *get_mime_tmp_dir                (void);
-gchar *get_template_dir                (void);
-gchar *get_header_cache_dir     (void);
-gchar *get_tmp_dir             (void);
-gchar *get_tmp_file            (void);
-gchar *get_domain_name         (void);
+const gchar *get_home_dir              (void);
+const gchar *get_rc_dir                        (void);
+const gchar *get_news_cache_dir                (void);
+const gchar *get_imap_cache_dir                (void);
+const gchar *get_mbox_cache_dir                (void);
+const gchar *get_mime_tmp_dir          (void);
+const gchar *get_template_dir          (void);
+const gchar *get_header_cache_dir      (void);
+const gchar *get_tmp_dir               (void);
+gchar *get_tmp_file                    (void);
+const gchar *get_domain_name           (void);
 
 /* file / directory handling */
 off_t get_file_size            (const gchar    *file);
 
 /* file / directory handling */
 off_t get_file_size            (const gchar    *file);
index 578304482b487af025d7531d7668f049f500f444..306f10e9ba467847c2c25b49c475dee471d87c41 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "xml.h"
 #include "utils.h"
 
 #include "xml.h"
 #include "utils.h"
+#include "../codeconv.h"
 
 #define SPARSE_MEMORY
 /* if this is defined all attr.names and tag.names are stored
 
 #define SPARSE_MEMORY
 /* if this is defined all attr.names and tag.names are stored
@@ -231,8 +232,8 @@ gint xml_parse_next_tag(XMLFile *file)
        /* parse attributes ( name=value ) */
        while (*bufp) {
                XMLAttr *attr;
        /* parse attributes ( name=value ) */
        while (*bufp) {
                XMLAttr *attr;
-               gchar *attr_name;
-               gchar *attr_value;
+               gchar *attr_name, *attr_value;
+               gchar *utf8attr_name, *utf8attr_value;
                gchar *p;
                gchar quote;
 
                gchar *p;
                gchar quote;
 
@@ -264,9 +265,31 @@ gint xml_parse_next_tag(XMLFile *file)
                xml_unescape_str(attr_value);
 
                attr = g_new(XMLAttr, 1);
                xml_unescape_str(attr_value);
 
                attr = g_new(XMLAttr, 1);
-               attr->name  = XML_STRING_ADD(attr_name);
-               attr->value = g_strdup(attr_value);
+#warning FIXME_GTK2
+               utf8attr_name  = conv_codeset_strdup
+                                       (attr_name,
+                                        conv_get_current_charset_str(),
+                                        CS_UTF_8);
+               utf8attr_value = conv_codeset_strdup
+                                       (attr_value,
+                                        conv_get_current_charset_str(),
+                                        CS_UTF_8);
+               if (!utf8attr_name) {
+                       g_warning("xml_parse_next_tag(): "
+                                 "faild to convert character set of attr_name\n");
+                       utf8attr_name = g_strdup(attr_name);
+               }
+               if (!utf8attr_value) {
+                       g_warning("xml_parse_next_tag(): "
+                                 "faild to convert character set of attr_value\n");
+                       utf8attr_value = g_strdup(attr_value);
+               }
+
+               attr->name  = XML_STRING_ADD(utf8attr_name);
+               attr->value = utf8attr_value;
                tag->attr   = g_list_append(tag->attr, attr);
                tag->attr   = g_list_append(tag->attr, attr);
+
+               g_free(utf8attr_name);
        }
 
        return 0;
        }
 
        return 0;
@@ -315,6 +338,7 @@ gchar *xml_get_element(XMLFile *file)
 {
        gchar *str;
        gchar *end;
 {
        gchar *str;
        gchar *end;
+       gchar *utf8str;
 
        while ((end = strchr(file->bufp, '<')) == NULL)
                if (xml_read_line(file) < 0) return NULL;
 
        while ((end = strchr(file->bufp, '<')) == NULL)
                if (xml_read_line(file) < 0) return NULL;
@@ -335,7 +359,18 @@ gchar *xml_get_element(XMLFile *file)
                return NULL;
        }
 
                return NULL;
        }
 
-       return str;
+       utf8str = conv_codeset_strdup
+                       (str,
+                        conv_get_current_charset_str(),
+                        CS_UTF_8);
+       if (!utf8str) {
+               g_warning("xml_get_element(): "
+                         "faild to convert character set.\n");
+               utf8str = str;
+       } else
+               g_free(str);
+
+       return utf8str;
 }
 
 gint xml_read_line(XMLFile *file)
 }
 
 gint xml_read_line(XMLFile *file)
@@ -451,15 +486,25 @@ gint xml_unescape_str(gchar *str)
        return 0;
 }
 
        return 0;
 }
 
+#warning FIXME_GTK2
 gint xml_file_put_escape_str(FILE *fp, const gchar *str)
 {
 gint xml_file_put_escape_str(FILE *fp, const gchar *str)
 {
+       const gchar *src_codeset = CS_UTF_8;
+       const gchar *dest_codeset = conv_get_current_charset_str();
+       gchar *tmpstr = NULL;
        const gchar *p;
 
        g_return_val_if_fail(fp != NULL, -1);
 
        if (!str) return 0;
 
        const gchar *p;
 
        g_return_val_if_fail(fp != NULL, -1);
 
        if (!str) return 0;
 
-       for (p = str; *p != '\0'; p++) {
+       tmpstr = conv_codeset_strdup(str, src_codeset, dest_codeset);
+       if (!tmpstr) {
+               g_warning("xml_file_put_escape_str(): Faild to convert character set.");
+               tmpstr = g_strdup(str);
+       }
+
+       for (p = tmpstr; *p != '\0'; p++) {
                switch (*p) {
                case '<':
                        fputs("&lt;", fp);
                switch (*p) {
                case '<':
                        fputs("&lt;", fp);
@@ -481,6 +526,8 @@ gint xml_file_put_escape_str(FILE *fp, const gchar *str)
                }
        }
 
                }
        }
 
+       g_free(tmpstr);
+
        return 0;
 }
 
        return 0;
 }
 
index df9d2f1432cdac082f8fd78f7d572bdaae91cb54..daf92bf1b00d52e591b5aa1c0637389783134150 100644 (file)
@@ -47,7 +47,9 @@
 #include <gtk/gtkhbox.h>
 #include <gtk/gtklabel.h>
 #include <gtk/gtkscrolledwindow.h>
 #include <gtk/gtkhbox.h>
 #include <gtk/gtklabel.h>
 #include <gtk/gtkscrolledwindow.h>
-#include <gtk/gtkthemes.h>
+#include <gtk/gtktreeview.h>
+#warning FIXME_GTK2
+/* #include <gtk/gtkthemes.h> */
 #include <gtk/gtkdnd.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <gtk/gtkdnd.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -72,7 +74,6 @@
 #include "main.h"
 #include "mainwindow.h"
 #include "compose.h"
 #include "main.h"
 #include "mainwindow.h"
 #include "compose.h"
-#include "gtkstext.h"
 #include "addressbook.h"
 #include "folderview.h"
 #include "procmsg.h"
 #include "addressbook.h"
 #include "folderview.h"
 #include "procmsg.h"
@@ -123,22 +124,22 @@ typedef enum
 
 typedef enum
 {
 
 typedef enum
 {
-       COMPOSE_CALL_GTK_STEXT_MOVE_BEGINNING_OF_LINE,
-       COMPOSE_CALL_GTK_STEXT_MOVE_FORWARD_CHARACTER,
-       COMPOSE_CALL_GTK_STEXT_MOVE_BACKWARD_CHARACTER,
-       COMPOSE_CALL_GTK_STEXT_MOVE_FORWARD_WORD,
-       COMPOSE_CALL_GTK_STEXT_MOVE_BACKWARD_WORD,
-       COMPOSE_CALL_GTK_STEXT_MOVE_END_OF_LINE,
-       COMPOSE_CALL_GTK_STEXT_MOVE_NEXT_LINE,
-       COMPOSE_CALL_GTK_STEXT_MOVE_PREVIOUS_LINE,
-       COMPOSE_CALL_GTK_STEXT_DELETE_FORWARD_CHARACTER,
-       COMPOSE_CALL_GTK_STEXT_DELETE_BACKWARD_CHARACTER,
-       COMPOSE_CALL_GTK_STEXT_DELETE_FORWARD_WORD,
-       COMPOSE_CALL_GTK_STEXT_DELETE_BACKWARD_WORD,
-       COMPOSE_CALL_GTK_STEXT_DELETE_LINE,
-       COMPOSE_CALL_GTK_STEXT_DELETE_LINE_N,
-       COMPOSE_CALL_GTK_STEXT_DELETE_TO_LINE_END
-} ComposeCallGtkSTextAction;
+       COMPOSE_CALL_ADVANCED_ACTION_MOVE_BEGINNING_OF_LINE,
+       COMPOSE_CALL_ADVANCED_ACTION_MOVE_FORWARD_CHARACTER,
+       COMPOSE_CALL_ADVANCED_ACTION_MOVE_BACKWARD_CHARACTER,
+       COMPOSE_CALL_ADVANCED_ACTION_MOVE_FORWARD_WORD,
+       COMPOSE_CALL_ADVANCED_ACTION_MOVE_BACKWARD_WORD,
+       COMPOSE_CALL_ADVANCED_ACTION_MOVE_END_OF_LINE,
+       COMPOSE_CALL_ADVANCED_ACTION_MOVE_NEXT_LINE,
+       COMPOSE_CALL_ADVANCED_ACTION_MOVE_PREVIOUS_LINE,
+       COMPOSE_CALL_ADVANCED_ACTION_DELETE_FORWARD_CHARACTER,
+       COMPOSE_CALL_ADVANCED_ACTION_DELETE_BACKWARD_CHARACTER,
+       COMPOSE_CALL_ADVANCED_ACTION_DELETE_FORWARD_WORD,
+       COMPOSE_CALL_ADVANCED_ACTION_DELETE_BACKWARD_WORD,
+       COMPOSE_CALL_ADVANCED_ACTION_DELETE_LINE,
+       COMPOSE_CALL_ADVANCED_ACTION_DELETE_LINE_N,
+       COMPOSE_CALL_ADVANCED_ACTION_DELETE_TO_LINE_END
+} ComposeCallAdvancedAction;
 
 typedef enum
 {
 
 typedef enum
 {
@@ -265,7 +266,7 @@ static void attach_property_cancel          (GtkWidget      *widget,
 static gint attach_property_delete_event       (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gboolean       *cancelled);
 static gint attach_property_delete_event       (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gboolean       *cancelled);
-static void attach_property_key_pressed                (GtkWidget      *widget,
+static gboolean attach_property_key_pressed    (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gboolean       *cancelled);
 
                                                 GdkEventKey    *event,
                                                 gboolean       *cancelled);
 
@@ -283,7 +284,7 @@ static void compose_undo_state_changed              (UndoMain       *undostruct,
                                                 gint            redo_state,
                                                 gpointer        data);
 
                                                 gint            redo_state,
                                                 gpointer        data);
 
-static gint calc_cursor_xpos   (GtkSText       *text,
+static gint calc_cursor_xpos   (GtkTextView    *text,
                                 gint            extra,
                                 gint            char_width);
 
                                 gint            extra,
                                 gint            char_width);
 
@@ -303,10 +304,10 @@ static void attach_selected               (GtkCList       *clist,
                                         gint            column,
                                         GdkEvent       *event,
                                         gpointer        data);
                                         gint            column,
                                         GdkEvent       *event,
                                         gpointer        data);
-static void attach_button_pressed      (GtkWidget      *widget,
+static gboolean attach_button_pressed  (GtkWidget      *widget,
                                         GdkEventButton *event,
                                         gpointer        data);
                                         GdkEventButton *event,
                                         gpointer        data);
-static void attach_key_pressed         (GtkWidget      *widget,
+static gboolean attach_key_pressed     (GtkWidget      *widget,
                                         GdkEventKey    *event,
                                         gpointer        data);
 
                                         GdkEventKey    *event,
                                         gpointer        data);
 
@@ -359,22 +360,14 @@ static void compose_paste_cb              (Compose        *compose);
 static void compose_paste_as_quote_cb  (Compose        *compose);
 static void compose_allsel_cb          (Compose        *compose);
 
 static void compose_paste_as_quote_cb  (Compose        *compose);
 static void compose_allsel_cb          (Compose        *compose);
 
-static void compose_gtk_stext_action_cb        (Compose                   *compose,
-                                        ComposeCallGtkSTextAction  action);
+static void compose_advanced_action_cb (Compose                   *compose,
+                                        ComposeCallAdvancedAction  action);
 
 static void compose_grab_focus_cb      (GtkWidget      *widget,
                                         Compose        *compose);
 
 
 static void compose_grab_focus_cb      (GtkWidget      *widget,
                                         Compose        *compose);
 
-static void compose_changed_cb         (GtkEditable    *editable,
+static void compose_changed_cb         (GtkTextBuffer  *textbuf,
                                         Compose        *compose);
                                         Compose        *compose);
-static void compose_button_press_cb    (GtkWidget      *widget,
-                                        GdkEventButton *event,
-                                        Compose        *compose);
-#if 0
-static void compose_key_press_cb       (GtkWidget      *widget,
-                                        GdkEventKey    *event,
-                                        Compose        *compose);
-#endif
 
 #if 0
 static void compose_toggle_to_cb       (gpointer        data,
 
 #if 0
 static void compose_toggle_to_cb       (gpointer        data,
@@ -457,10 +450,10 @@ static void subject_activated             (GtkWidget      *widget,
 
 static void text_activated             (GtkWidget      *widget,
                                         Compose        *compose);
 
 static void text_activated             (GtkWidget      *widget,
                                         Compose        *compose);
-static void text_inserted              (GtkWidget      *widget,
+static void text_inserted              (GtkTextBuffer  *buffer,
+                                        GtkTextIter    *iter,
                                         const gchar    *text,
                                         const gchar    *text,
-                                        gint            length,
-                                        gint           *position,
+                                        gint            len,
                                         Compose        *compose);
 static void compose_generic_reply(MsgInfo *msginfo, gboolean quote,
                                  gboolean to_all, gboolean to_ml,
                                         Compose        *compose);
 static void compose_generic_reply(MsgInfo *msginfo, gboolean quote,
                                  gboolean to_all, gboolean to_ml,
@@ -516,78 +509,78 @@ static GtkItemFactoryEntry compose_entries[] =
        {N_("/_Edit/A_dvanced"),        NULL, NULL, 0, "<Branch>"},
        {N_("/_Edit/A_dvanced/Move a character backward"),
                                        "<control>B",
        {N_("/_Edit/A_dvanced"),        NULL, NULL, 0, "<Branch>"},
        {N_("/_Edit/A_dvanced/Move a character backward"),
                                        "<control>B",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_MOVE_BACKWARD_CHARACTER,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_MOVE_BACKWARD_CHARACTER,
                                        NULL},
        {N_("/_Edit/A_dvanced/Move a character forward"),
                                        "<control>F",
                                        NULL},
        {N_("/_Edit/A_dvanced/Move a character forward"),
                                        "<control>F",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_MOVE_FORWARD_CHARACTER,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_MOVE_FORWARD_CHARACTER,
                                        NULL},
        {N_("/_Edit/A_dvanced/Move a word backward"),
                                        NULL, /* "<alt>B" */
                                        NULL},
        {N_("/_Edit/A_dvanced/Move a word backward"),
                                        NULL, /* "<alt>B" */
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_MOVE_BACKWARD_WORD,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_MOVE_BACKWARD_WORD,
                                        NULL},
        {N_("/_Edit/A_dvanced/Move a word forward"),
                                        NULL, /* "<alt>F" */
                                        NULL},
        {N_("/_Edit/A_dvanced/Move a word forward"),
                                        NULL, /* "<alt>F" */
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_MOVE_FORWARD_WORD,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_MOVE_FORWARD_WORD,
                                        NULL},
        {N_("/_Edit/A_dvanced/Move to beginning of line"),
                                        NULL, /* "<control>A" */
                                        NULL},
        {N_("/_Edit/A_dvanced/Move to beginning of line"),
                                        NULL, /* "<control>A" */
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_MOVE_BEGINNING_OF_LINE,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_MOVE_BEGINNING_OF_LINE,
                                        NULL},
        {N_("/_Edit/A_dvanced/Move to end of line"),
                                        "<control>E",
                                        NULL},
        {N_("/_Edit/A_dvanced/Move to end of line"),
                                        "<control>E",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_MOVE_END_OF_LINE,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_MOVE_END_OF_LINE,
                                        NULL},
        {N_("/_Edit/A_dvanced/Move to previous line"),
                                        "<control>P",
                                        NULL},
        {N_("/_Edit/A_dvanced/Move to previous line"),
                                        "<control>P",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_MOVE_PREVIOUS_LINE,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_MOVE_PREVIOUS_LINE,
                                        NULL},
        {N_("/_Edit/A_dvanced/Move to next line"),
                                        "<control>N",
                                        NULL},
        {N_("/_Edit/A_dvanced/Move to next line"),
                                        "<control>N",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_MOVE_NEXT_LINE,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_MOVE_NEXT_LINE,
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete a character backward"),
                                        "<control>H",
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete a character backward"),
                                        "<control>H",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_DELETE_BACKWARD_CHARACTER,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_DELETE_BACKWARD_CHARACTER,
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete a character forward"),
                                        "<control>D",
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete a character forward"),
                                        "<control>D",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_DELETE_FORWARD_CHARACTER,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_DELETE_FORWARD_CHARACTER,
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete a word backward"),
                                        NULL, /* "<control>W" */
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete a word backward"),
                                        NULL, /* "<control>W" */
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_DELETE_BACKWARD_WORD,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_DELETE_BACKWARD_WORD,
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete a word forward"),
                                        NULL, /* "<alt>D", */
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete a word forward"),
                                        NULL, /* "<alt>D", */
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_DELETE_FORWARD_WORD,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_DELETE_FORWARD_WORD,
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete line"),
                                        "<control>U",
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete line"),
                                        "<control>U",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_DELETE_LINE,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_DELETE_LINE,
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete entire line"),
                                        NULL,
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete entire line"),
                                        NULL,
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_DELETE_LINE_N,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_DELETE_LINE_N,
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete to end of line"),
                                        "<control>K",
                                        NULL},
        {N_("/_Edit/A_dvanced/Delete to end of line"),
                                        "<control>K",
-                                       compose_gtk_stext_action_cb,
-                                       COMPOSE_CALL_GTK_STEXT_DELETE_TO_LINE_END,
+                                       compose_advanced_action_cb,
+                                       COMPOSE_CALL_ADVANCED_ACTION_DELETE_TO_LINE_END,
                                        NULL},
        {N_("/_Edit/---"),              NULL, NULL, 0, "<Separator>"},
        {N_("/_Edit/_Wrap current paragraph"),
                                        NULL},
        {N_("/_Edit/---"),              NULL, NULL, 0, "<Separator>"},
        {N_("/_Edit/_Wrap current paragraph"),
@@ -690,7 +683,9 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
                             GPtrArray *attach_files)
 {
        Compose *compose;
                             GPtrArray *attach_files)
 {
        Compose *compose;
-       GtkSText *text;
+       GtkTextView *textview;
+       GtkTextBuffer *textbuf;
+       GtkTextIter iter;
        GtkItemFactory *ifactory;
        gboolean grab_focus_on_last = TRUE;
 
        GtkItemFactory *ifactory;
        gboolean grab_focus_on_last = TRUE;
 
@@ -706,8 +701,8 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
        compose->replyinfo = NULL;
        compose->fwdinfo   = NULL;
 
        compose->replyinfo = NULL;
        compose->fwdinfo   = NULL;
 
-       text = GTK_STEXT(compose->text);
-       gtk_stext_freeze(text);
+       textview = GTK_TEXT_VIEW(compose->text);
+       textbuf = gtk_text_view_get_buffer(textview);
 
 #ifdef USE_ASPELL
        if (item && item->prefs && item->prefs->enable_default_dictionary &&
 
 #ifdef USE_ASPELL
        if (item && item->prefs && item->prefs->enable_default_dictionary &&
@@ -718,10 +713,8 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
 
        if (account->auto_sig)
                compose_insert_sig(compose, FALSE);
 
        if (account->auto_sig)
                compose_insert_sig(compose, FALSE);
-       gtk_editable_set_position(GTK_EDITABLE(text), 0);
-       gtk_stext_set_point(text, 0);
-
-       gtk_stext_thaw(text);
+       gtk_text_buffer_get_start_iter(textbuf, &iter);
+       gtk_text_buffer_place_cursor(textbuf, &iter);
 
        if (account->protocol != A_NNTP) {
                if (mailto && *mailto != '\0') {
 
        if (account->protocol != A_NNTP) {
                if (mailto && *mailto != '\0') {
@@ -772,6 +765,8 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
        if (grab_focus_on_last)
                gtk_widget_grab_focus(compose->header_last->entry);
 
        if (grab_focus_on_last)
                gtk_widget_grab_focus(compose->header_last->entry);
 
+       undo_unblock(compose->undostruct);
+
        if (prefs_common.auto_exteditor)
                compose_exec_ext_editor(compose);
 
        if (prefs_common.auto_exteditor)
                compose_exec_ext_editor(compose);
 
@@ -915,7 +910,8 @@ static void compose_generic_reply(MsgInfo *msginfo, gboolean quote,
        Compose *compose;
        PrefsAccount *account = NULL;
        PrefsAccount *reply_account;
        Compose *compose;
        PrefsAccount *account = NULL;
        PrefsAccount *reply_account;
-       GtkSText *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
 
        g_return_if_fail(msginfo != NULL);
        g_return_if_fail(msginfo->folder != NULL);
 
        g_return_if_fail(msginfo != NULL);
        g_return_if_fail(msginfo->folder != NULL);
@@ -963,9 +959,6 @@ static void compose_generic_reply(MsgInfo *msginfo, gboolean quote,
                                to_sender, followup_and_reply_to);
        compose_show_first_last_header(compose, TRUE);
 
                                to_sender, followup_and_reply_to);
        compose_show_first_last_header(compose, TRUE);
 
-       text = GTK_STEXT(compose->text);
-       gtk_stext_freeze(text);
-
 #ifdef USE_ASPELL
        if (msginfo->folder && msginfo->folder->prefs && 
            msginfo->folder->prefs && 
 #ifdef USE_ASPELL
        if (msginfo->folder && msginfo->folder->prefs && 
            msginfo->folder->prefs && 
@@ -994,12 +987,14 @@ static void compose_generic_reply(MsgInfo *msginfo, gboolean quote,
        if (quote && prefs_common.linewrap_quote)
                compose_wrap_line_all(compose);
 
        if (quote && prefs_common.linewrap_quote)
                compose_wrap_line_all(compose);
 
-       gtk_editable_set_position(GTK_EDITABLE(text), 0);
-       gtk_stext_set_point(text, 0);
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(compose->text));
+       gtk_text_buffer_get_start_iter(buffer, &iter);
+       gtk_text_buffer_place_cursor(buffer, &iter);
 
 
-       gtk_stext_thaw(text);
        gtk_widget_grab_focus(compose->text);
 
        gtk_widget_grab_focus(compose->text);
 
+       undo_unblock(compose->undostruct);
+
        if (prefs_common.auto_exteditor)
                compose_exec_ext_editor(compose);
 }
        if (prefs_common.auto_exteditor)
                compose_exec_ext_editor(compose);
 }
@@ -1015,7 +1010,9 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
                         gboolean as_attach, const gchar *body)
 {
        Compose *compose;
                         gboolean as_attach, const gchar *body)
 {
        Compose *compose;
-       GtkSText *text;
+       GtkTextView *textview;
+       GtkTextBuffer *textbuf;
+       GtkTextIter iter;
 
        g_return_val_if_fail(msginfo != NULL, NULL);
        g_return_val_if_fail(msginfo->folder != NULL, NULL);
 
        g_return_val_if_fail(msginfo != NULL, NULL);
        g_return_val_if_fail(msginfo->folder != NULL, NULL);
@@ -1068,8 +1065,8 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
                g_free(buf2);
        }
 
                g_free(buf2);
        }
 
-       text = GTK_STEXT(compose->text);
-       gtk_stext_freeze(text);
+       textview = GTK_TEXT_VIEW(compose->text);
+       textbuf = gtk_text_view_get_buffer(textview);
 
        if (as_attach) {
                gchar *msgfile;
 
        if (as_attach) {
                gchar *msgfile;
@@ -1110,10 +1107,9 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
        if (prefs_common.linewrap_quote)
                compose_wrap_line_all(compose);
 
        if (prefs_common.linewrap_quote)
                compose_wrap_line_all(compose);
 
-       gtk_editable_set_position(GTK_EDITABLE(compose->text), 0);
-       gtk_stext_set_point(GTK_STEXT(compose->text), 0);
+       gtk_text_buffer_get_start_iter(textbuf, &iter);
+       gtk_text_buffer_place_cursor(textbuf, &iter);
 
 
-       gtk_stext_thaw(text);
 #if 0 /* NEW COMPOSE GUI */
        if (account->protocol != A_NNTP)
                gtk_widget_grab_focus(compose->to_entry);
 #if 0 /* NEW COMPOSE GUI */
        if (account->protocol != A_NNTP)
                gtk_widget_grab_focus(compose->to_entry);
@@ -1143,7 +1139,9 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
 Compose *compose_forward_multiple(PrefsAccount *account, GSList *msginfo_list)
 {
        Compose *compose;
 Compose *compose_forward_multiple(PrefsAccount *account, GSList *msginfo_list)
 {
        Compose *compose;
-       GtkSText *text;
+       GtkTextView *textview;
+       GtkTextBuffer *textbuf;
+       GtkTextIter iter;
        GSList *msginfo;
        gchar *msgfile;
 
        GSList *msginfo;
        gchar *msgfile;
 
@@ -1170,8 +1168,8 @@ Compose *compose_forward_multiple(PrefsAccount *account, GSList *msginfo_list)
 
        compose = compose_create(account, COMPOSE_FORWARD);
 
 
        compose = compose_create(account, COMPOSE_FORWARD);
 
-       text = GTK_STEXT(compose->text);
-       gtk_stext_freeze(text);
+       textview = GTK_TEXT_VIEW(compose->text);
+       textbuf = gtk_text_view_get_buffer(textview);
 
        for (msginfo = msginfo_list; msginfo != NULL; msginfo = msginfo->next) {
                msgfile = procmsg_get_message_file_path((MsgInfo *)msginfo->data);
 
        for (msginfo = msginfo_list; msginfo != NULL; msginfo = msginfo->next) {
                msgfile = procmsg_get_message_file_path((MsgInfo *)msginfo->data);
@@ -1189,10 +1187,9 @@ Compose *compose_forward_multiple(PrefsAccount *account, GSList *msginfo_list)
        if (prefs_common.linewrap_quote)
                compose_wrap_line_all(compose);
 
        if (prefs_common.linewrap_quote)
                compose_wrap_line_all(compose);
 
-       gtk_editable_set_position(GTK_EDITABLE(compose->text), 0);
-       gtk_stext_set_point(GTK_STEXT(compose->text), 0);
+       gtk_text_buffer_get_start_iter(textbuf, &iter);
+       gtk_text_buffer_place_cursor(textbuf, &iter);
 
 
-       gtk_stext_thaw(text);
        gtk_widget_grab_focus(compose->header_last->entry);
        
 #if 0 /* NEW COMPOSE GUI */
        gtk_widget_grab_focus(compose->header_last->entry);
        
 #if 0 /* NEW COMPOSE GUI */
@@ -1209,7 +1206,10 @@ void compose_reedit(MsgInfo *msginfo)
 {
        Compose *compose;
        PrefsAccount *account = NULL;
 {
        Compose *compose;
        PrefsAccount *account = NULL;
-       GtkSText *text;
+       GtkTextView *textview;
+       GtkTextBuffer *textbuf;
+       GtkTextMark *mark;
+       GtkTextIter iter;
        FILE *fp;
        gchar buf[BUFFSIZE];
 
        FILE *fp;
        gchar buf[BUFFSIZE];
 
@@ -1273,21 +1273,22 @@ void compose_reedit(MsgInfo *msginfo)
        if (compose_parse_header(compose, msginfo) < 0) return;
        compose_reedit_set_entry(compose, msginfo);
 
        if (compose_parse_header(compose, msginfo) < 0) return;
        compose_reedit_set_entry(compose, msginfo);
 
-       text = GTK_STEXT(compose->text);
-       gtk_stext_freeze(text);
+       textview = GTK_TEXT_VIEW(compose->text);
+       textbuf = gtk_text_view_get_buffer(textview);
+       mark = gtk_text_buffer_get_insert(textbuf);
+       gtk_text_buffer_get_iter_at_mark(textbuf, &iter, mark);
 
        if ((fp = procmime_get_first_text_content(msginfo)) == NULL)
                g_warning("Can't get text part\n");
        else {
                while (fgets(buf, sizeof(buf), fp) != NULL) {
                        strcrchomp(buf);
 
        if ((fp = procmime_get_first_text_content(msginfo)) == NULL)
                g_warning("Can't get text part\n");
        else {
                while (fgets(buf, sizeof(buf), fp) != NULL) {
                        strcrchomp(buf);
-                       gtk_stext_insert(text, NULL, NULL, NULL, buf, -1);
+                       gtk_text_buffer_insert(textbuf, &iter, buf, -1);
                }
                fclose(fp);
        }
        compose_attach_parts(compose, msginfo);
 
                }
                fclose(fp);
        }
        compose_attach_parts(compose, msginfo);
 
-       gtk_stext_thaw(text);
        gtk_widget_grab_focus(compose->text);
 
         if (prefs_common.auto_exteditor)
        gtk_widget_grab_focus(compose->text);
 
         if (prefs_common.auto_exteditor)
@@ -1330,10 +1331,8 @@ Compose *compose_redirect(PrefsAccount *account, MsgInfo *msginfo)
                                   msginfo->subject);
        gtk_editable_set_editable(GTK_EDITABLE(compose->subject_entry), FALSE);
 
                                   msginfo->subject);
        gtk_editable_set_editable(GTK_EDITABLE(compose->subject_entry), FALSE);
 
-       gtk_stext_freeze(GTK_STEXT(compose->text));
        compose_quote_fmt(compose, msginfo, "%M", NULL, NULL);
        compose_quote_fmt(compose, msginfo, "%M", NULL, NULL);
-       gtk_editable_set_editable(GTK_EDITABLE(compose->text), FALSE);
-       gtk_stext_thaw(GTK_STEXT(compose->text));
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(compose->text), TRUE);
 
        ifactory = gtk_item_factory_from_widget(compose->popupmenu);
        menu_set_sensitive(ifactory, "/Add...", FALSE);
 
        ifactory = gtk_item_factory_from_widget(compose->popupmenu);
        menu_set_sensitive(ifactory, "/Add...", FALSE);
@@ -1502,10 +1501,16 @@ static void compose_entries_set(Compose *compose, const gchar *mailto)
        if (subject)
                gtk_entry_set_text(GTK_ENTRY(compose->subject_entry), subject);
        if (body) {
        if (subject)
                gtk_entry_set_text(GTK_ENTRY(compose->subject_entry), subject);
        if (body) {
-               gtk_stext_insert(GTK_STEXT(compose->text),
-                               NULL, NULL, NULL, body, -1);
-               gtk_stext_insert(GTK_STEXT(compose->text),
-                               NULL, NULL, NULL, "\n", 1);
+               GtkTextView *text = GTK_TEXT_VIEW(compose->text);
+               GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+               GtkTextMark *mark;
+               GtkTextIter iter;
+
+               mark = gtk_text_buffer_get_insert(buffer);
+               gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+
+               gtk_text_buffer_insert(buffer, &iter, body, -1);
+               gtk_text_buffer_insert(buffer, &iter, "\n", 1);
        }
 
        g_free(to);
        }
 
        g_free(to);
@@ -1694,7 +1699,6 @@ static gchar *compose_quote_fmt(Compose *compose, MsgInfo *msginfo,
                                const gchar *fmt, const gchar *qmark,
                                const gchar *body)
 {
                                const gchar *fmt, const gchar *qmark,
                                const gchar *body)
 {
-       GtkSText *text = GTK_STEXT(compose->text);
        static MsgInfo dummyinfo;
        gchar *quote_str = NULL;
        gchar *buf;
        static MsgInfo dummyinfo;
        gchar *quote_str = NULL;
        gchar *buf;
@@ -1734,20 +1738,24 @@ static gchar *compose_quote_fmt(Compose *compose, MsgInfo *msginfo,
        } else
                buf = "";
 
        } else
                buf = "";
 
-       gtk_stext_freeze(text);
-
        for (p = buf; *p != '\0'; ) {
        for (p = buf; *p != '\0'; ) {
+               GtkTextView *text = GTK_TEXT_VIEW(compose->text);
+               GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+               GtkTextMark *mark;
+               GtkTextIter iter;
+
+               mark = gtk_text_buffer_get_insert(buffer);
+               gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+
                lastp = strchr(p, '\n');
                len = lastp ? lastp - p + 1 : -1;
                lastp = strchr(p, '\n');
                len = lastp ? lastp - p + 1 : -1;
-               gtk_stext_insert(text, NULL, NULL, NULL, p, len);
+               gtk_text_buffer_insert(buffer, &iter, p, len);
                if (lastp)
                        p = lastp + 1;
                else
                        break;
        }
 
                if (lastp)
                        p = lastp + 1;
                else
                        break;
        }
 
-       gtk_stext_thaw(text);
-
        return buf;
 }
 
        return buf;
 }
 
@@ -1917,33 +1925,38 @@ static void compose_reedit_set_entry(Compose *compose, MsgInfo *msginfo)
 
 static void compose_insert_sig(Compose *compose, gboolean replace)
 {
 
 static void compose_insert_sig(Compose *compose, gboolean replace)
 {
-       GtkSText *text = GTK_STEXT(compose->text);
+       GtkTextView *text = GTK_TEXT_VIEW(compose->text);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextMark *mark;
+       GtkTextIter iter;
        gint cur_pos;
        gint cur_pos;
-       gint len;
 
        g_return_if_fail(compose->account != NULL);
 
 
        g_return_if_fail(compose->account != NULL);
 
-       cur_pos = gtk_editable_get_position(GTK_EDITABLE(text));
-
-       gtk_stext_freeze(text);
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+       cur_pos = gtk_text_iter_get_offset (&iter);
 
 
-       len = gtk_stext_get_length(text);
-       gtk_stext_set_point(text, len);
+       gtk_text_buffer_get_end_iter(buffer, &iter);
 
        if (replace && compose->sig_str) {
 
        if (replace && compose->sig_str) {
-               gint pos;
+               gboolean found;
+               GtkTextIter first_iter, start_iter, end_iter;
+
+               gtk_text_buffer_get_start_iter(buffer, &first_iter);
 
                if (compose->sig_str[0] == '\0')
 
                if (compose->sig_str[0] == '\0')
-                       pos = -1;
+                       found = FALSE;
                else
                else
-                       pos = gtkut_stext_find(text, 0, compose->sig_str, TRUE);
-
-               if (pos != -1) {
-                       len = get_mbs_len(compose->sig_str);
-                       if (len >= 0) {
-                               gtk_stext_set_point(text, pos);
-                               gtk_stext_forward_delete(text, len);
-                       }
+                       found = gtk_text_iter_forward_search(&first_iter,
+                                                            compose->sig_str,
+                                                            GTK_TEXT_SEARCH_TEXT_ONLY,
+                                                            &start_iter, &end_iter,
+                                                            NULL);
+
+               if (found) {
+                       gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
+                       iter = start_iter;
                }
        }
 
                }
        }
 
@@ -1952,15 +1965,13 @@ static void compose_insert_sig(Compose *compose, gboolean replace)
        if (!compose->sig_str || (replace && !compose->account->auto_sig))
                compose->sig_str = g_strdup("");
 
        if (!compose->sig_str || (replace && !compose->account->auto_sig))
                compose->sig_str = g_strdup("");
 
-       gtk_stext_insert(text, NULL, NULL, NULL, compose->sig_str, -1);
+       gtk_text_buffer_insert(buffer, &iter, compose->sig_str, -1);
 
 
-       gtk_stext_thaw(text);
+       if (cur_pos > gtk_text_buffer_get_char_count (buffer))
+               cur_pos = gtk_text_buffer_get_char_count (buffer);
 
 
-       if (cur_pos > gtk_stext_get_length(text))
-               cur_pos = gtk_stext_get_length(text);
-
-       gtk_editable_set_position(GTK_EDITABLE(text), cur_pos);
-       gtk_stext_set_point(text, cur_pos);
+       gtk_text_buffer_get_iter_at_offset (buffer, &iter, cur_pos);
+       gtk_text_buffer_place_cursor (buffer, &iter);
 }
 
 static gchar *compose_get_signature_str(Compose *compose)
 }
 
 static gchar *compose_get_signature_str(Compose *compose)
@@ -2006,7 +2017,10 @@ static gchar *compose_get_signature_str(Compose *compose)
 
 static void compose_insert_file(Compose *compose, const gchar *file)
 {
 
 static void compose_insert_file(Compose *compose, const gchar *file)
 {
-       GtkSText *text = GTK_STEXT(compose->text);
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter iter;
        gchar buf[BUFFSIZE];
        gint len;
        FILE *fp;
        gchar buf[BUFFSIZE];
        gint len;
        FILE *fp;
@@ -2018,21 +2032,32 @@ static void compose_insert_file(Compose *compose, const gchar *file)
                return;
        }
 
                return;
        }
 
-       gtk_stext_freeze(text);
+       text = GTK_TEXT_VIEW(compose->text);
+       buffer = gtk_text_view_get_buffer(text);
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
 
        while (fgets(buf, sizeof(buf), fp) != NULL) {
 
        while (fgets(buf, sizeof(buf), fp) != NULL) {
+#warning FIXME_GTK2
+#if 1 /* FIXME_GTK2 */
+               const gchar *cur_encoding = conv_get_current_charset_str();
+               gchar *str = conv_codeset_strdup(buf, cur_encoding, CS_UTF_8);
+
+               if (!str) continue;
+
                /* strip <CR> if DOS/Windows file,
                   replace <CR> with <LF> if Macintosh file. */
                /* strip <CR> if DOS/Windows file,
                   replace <CR> with <LF> if Macintosh file. */
-               strcrchomp(buf);
-               len = strlen(buf);
-               if (len > 0 && buf[len - 1] != '\n') {
+               strcrchomp(str);
+               len = strlen(str);
+               if (len > 0 && str[len - 1] != '\n') {
                        while (--len >= 0)
                        while (--len >= 0)
-                               if (buf[len] == '\r') buf[len] = '\n';
+                               if (str[len] == '\r') str[len] = '\n';
                }
                }
-               gtk_stext_insert(text, NULL, NULL, NULL, buf, -1);
-       }
+               gtk_text_buffer_insert(buffer, &iter, str, -1);
 
 
-       gtk_stext_thaw(text);
+               g_free (str);
+#endif /* FIXME_GTK2 */
+       }
 
        fclose(fp);
 }
 
        fclose(fp);
 }
@@ -2085,7 +2110,7 @@ static void compose_attach_append(Compose *compose, const gchar *file,
                if (!strcasecmp(content_type, "message/rfc822")) {
                        MsgInfo *msginfo;
                        MsgFlags flags = {0, 0};
                if (!strcasecmp(content_type, "message/rfc822")) {
                        MsgInfo *msginfo;
                        MsgFlags flags = {0, 0};
-                       gchar *name;
+                       const gchar *name;
 
                        if (procmime_get_encoding_for_file(file) == ENC_7BIT)
                                ainfo->encoding = ENC_7BIT;
 
                        if (procmime_get_encoding_for_file(file) == ENC_7BIT)
                                ainfo->encoding = ENC_7BIT;
@@ -2193,108 +2218,132 @@ static void compose_attach_parts(Compose *compose, MsgInfo *msginfo)
 }
 
 #undef IS_FIRST_PART_TEXT
 }
 
 #undef IS_FIRST_PART_TEXT
+  
+#define CHAR_BUF_SIZE 8
 
 
-#define GET_CHAR(pos, buf, len)                                                     \
+#define GET_CHAR(iter_p, buf, len)                                          \
 {                                                                           \
 {                                                                           \
-       if (text->use_wchar)                                                 \
-               len = wctomb(buf, (wchar_t)GTK_STEXT_INDEX(text, (pos)));    \
-       else {                                                               \
-               buf[0] = GTK_STEXT_INDEX(text, (pos));                       \
+       GtkTextIter end_iter;                                                \
+       gchar *tmp;                                                          \
+       end_iter = *iter_p;                                                  \
+       gtk_text_iter_forward_char(&end_iter);                               \
+       tmp = gtk_text_buffer_get_text(textbuf, iter_p, &end_iter, FALSE);   \
+       if (tmp) {                                                           \
+               glong items_read, items_witten;                              \
+               GError *error = NULL;                                        \
+               gunichar *wide_char;                                         \
+               strncpy2(buf, tmp, CHAR_BUF_SIZE);                           \
+               wide_char = g_utf8_to_ucs4(tmp, -1,                          \
+                                          &items_read, &items_witten,       \
+                                          &error);                          \
+               if (error != NULL) {                                         \
+                       g_warning("%s\n", error->message);                   \
+                       g_error_free(error);                                 \
+               }                                                            \
+               len = wide_char && g_unichar_iswide(*wide_char) ? 2 : 1;     \
+               g_free(wide_char);                                           \
+       } else {                                                             \
+               buf[0] = '\0';                                               \
                len = 1;                                                     \
        }                                                                    \
                len = 1;                                                     \
        }                                                                    \
+       g_free(tmp);                                                         \
 }
 
 }
 
-#define DISP_WIDTH(len) \
-       ((len > 2 && conv_get_current_charset() == C_UTF_8) ? 2 : \
-        (len == 2 && conv_get_current_charset() == C_UTF_8) ? 1 : len)
-
 #define INDENT_CHARS   ">|#"
 #define SPACE_CHARS    " \t"
 
 #define INDENT_CHARS   ">|#"
 #define SPACE_CHARS    " \t"
 
+#warning FIXME_GTK2
 static void compose_wrap_line(Compose *compose)
 {
 static void compose_wrap_line(Compose *compose)
 {
-       GtkSText *text = GTK_STEXT(compose->text);
+       GtkTextView *text = GTK_TEXT_VIEW(compose->text);
+       GtkTextBuffer *textbuf = gtk_text_view_get_buffer(text);
+       GtkTextMark *mark;
+       GtkTextIter insert_iter, iter;
        gint ch_len, last_ch_len;
        gint ch_len, last_ch_len;
-       gchar cbuf[MB_LEN_MAX], last_ch;
+       gchar cbuf[CHAR_BUF_SIZE], last_ch;
        guint text_len;
        guint text_len;
-       guint line_end;
-       guint quoted;
        gint p_start, p_end;
        gint line_pos, cur_pos;
        gint line_len, cur_len;
        gint p_start, p_end;
        gint line_pos, cur_pos;
        gint line_len, cur_len;
+       gboolean line_end, quoted;
 
 
-       gtk_stext_freeze(text);
-
-       text_len = gtk_stext_get_length(text);
-
-       /* check to see if the point is on the paragraph mark (empty line). */
-       cur_pos = gtk_stext_get_point(text);
-       GET_CHAR(cur_pos, cbuf, ch_len);
+       text_len = gtk_text_buffer_get_char_count(textbuf);
+       mark = gtk_text_buffer_get_insert(textbuf);
+       gtk_text_buffer_get_iter_at_mark(textbuf, &insert_iter, mark);
+       cur_pos = gtk_text_iter_get_offset(&insert_iter);
+       GET_CHAR(&insert_iter, cbuf, ch_len);
        if ((ch_len == 1 && *cbuf == '\n') || cur_pos == text_len) {
        if ((ch_len == 1 && *cbuf == '\n') || cur_pos == text_len) {
+               GtkTextIter prev_iter;
                if (cur_pos == 0)
                if (cur_pos == 0)
-                       goto compose_end; /* on the paragraph mark */
-               GET_CHAR(cur_pos - 1, cbuf, ch_len);
+                       return; /* on the paragraph mark */
+               prev_iter = insert_iter;
+               gtk_text_iter_backward_char(&prev_iter);
+               GET_CHAR(&prev_iter, cbuf, ch_len);
                if (ch_len == 1 && *cbuf == '\n')
                if (ch_len == 1 && *cbuf == '\n')
-                       goto compose_end; /* on the paragraph mark */
+                       return; /* on the paragraph mark */
        }
 
        /* find paragraph start. */
        }
 
        /* find paragraph start. */
-       line_end = quoted = 0;
-       for (p_start = cur_pos; p_start >= 0; --p_start) {
-               GET_CHAR(p_start, cbuf, ch_len);
+       line_end = quoted = FALSE;
+       for (iter = insert_iter; gtk_text_iter_backward_char(&iter);) {
+               GET_CHAR(&iter, cbuf, ch_len);
                if (ch_len == 1 && *cbuf == '\n') {
                        if (quoted)
                if (ch_len == 1 && *cbuf == '\n') {
                        if (quoted)
-                               goto compose_end; /* quoted part */
+                               return; /* quoted part */
                        if (line_end) {
                        if (line_end) {
-                               p_start += 2;
+                               gtk_text_iter_forward_chars(&iter, 2);
                                break;
                        }
                                break;
                        }
-                       line_end = 1;
+                       line_end = TRUE;
                } else {
                        if (ch_len == 1 
                            && strchr(prefs_common.quote_chars, *cbuf))
                } else {
                        if (ch_len == 1 
                            && strchr(prefs_common.quote_chars, *cbuf))
-                               quoted = 1;
+                               quoted = TRUE;
                        else if (ch_len != 1 || !isspace(*cbuf))
                        else if (ch_len != 1 || !isspace(*cbuf))
-                               quoted = 0;
+                               quoted = FALSE;
 
 
-                       line_end = 0;
+                       line_end = FALSE;
                }
        }
                }
        }
-       if (p_start < 0)
-               p_start = 0;
+       p_start = gtk_text_iter_get_offset(&iter);
 
        /* find paragraph end. */
 
        /* find paragraph end. */
-       line_end = 0;
-       for (p_end = cur_pos; p_end < text_len; p_end++) {
-               GET_CHAR(p_end, cbuf, ch_len);
+       line_end = FALSE;
+       for (iter = insert_iter; gtk_text_iter_forward_char(&iter);) {
+               GET_CHAR(&iter, cbuf, ch_len);
                if (ch_len == 1 && *cbuf == '\n') {
                        if (line_end) {
                                p_end -= 1;
                if (ch_len == 1 && *cbuf == '\n') {
                        if (line_end) {
                                p_end -= 1;
+                               gtk_text_iter_backward_char(&iter);
                                break;
                        }
                                break;
                        }
-                       line_end = 1;
+                       line_end = TRUE;
                } else {
                        if (line_end && ch_len == 1 &&
                            strchr(prefs_common.quote_chars, *cbuf))
                } else {
                        if (line_end && ch_len == 1 &&
                            strchr(prefs_common.quote_chars, *cbuf))
-                               goto compose_end; /* quoted part */
+                               return; /* quoted part */
 
 
-                       line_end = 0;
+                       line_end = FALSE;
                }
        }
                }
        }
+       p_end = gtk_text_iter_get_offset(&iter);
+
        if (p_end >= text_len)
                p_end = text_len;
 
        if (p_start >= p_end)
        if (p_end >= text_len)
                p_end = text_len;
 
        if (p_start >= p_end)
-               goto compose_end;
+               return;
 
        line_len = cur_len = 0;
        last_ch_len = 0;
        last_ch = '\0';
        line_pos = p_start;
        for (cur_pos = p_start; cur_pos < p_end; cur_pos++) {
 
        line_len = cur_len = 0;
        last_ch_len = 0;
        last_ch = '\0';
        line_pos = p_start;
        for (cur_pos = p_start; cur_pos < p_end; cur_pos++) {
-               guint space = 0;
+               gboolean space = FALSE;
+
+               gtk_text_buffer_get_iter_at_offset(textbuf, &iter, cur_pos);
 
 
-               GET_CHAR(cur_pos, cbuf, ch_len);
+               GET_CHAR(&iter, cbuf, ch_len);
 
                if (ch_len < 0) {
                        cbuf[0] = '\0';
 
                if (ch_len < 0) {
                        cbuf[0] = '\0';
@@ -2302,27 +2351,31 @@ static void compose_wrap_line(Compose *compose)
                }
 
                if (ch_len == 1 && isspace(*cbuf))
                }
 
                if (ch_len == 1 && isspace(*cbuf))
-                       space = 1;
+                       space = TRUE;
 
                if (ch_len == 1 && *cbuf == '\n') {
 
                if (ch_len == 1 && *cbuf == '\n') {
-                       guint replace = 0;
+                       gboolean replace = FALSE;
+                       GtkTextIter next_iter = iter;
+
+                       gtk_text_iter_forward_char(&next_iter);
+
                        if (last_ch_len == 1 && !isspace(last_ch)) {
                                if (cur_pos + 1 < p_end) {
                        if (last_ch_len == 1 && !isspace(last_ch)) {
                                if (cur_pos + 1 < p_end) {
-                                       GET_CHAR(cur_pos + 1, cbuf, ch_len);
+                                       GET_CHAR(&next_iter, cbuf, ch_len);
                                        if (ch_len == 1 && !isspace(*cbuf))
                                        if (ch_len == 1 && !isspace(*cbuf))
-                                               replace = 1;
+                                               replace = TRUE;
                                }
                        }
                                }
                        }
-                       gtk_stext_set_point(text, cur_pos + 1);
-                       gtk_stext_backward_delete(text, 1);
+                       gtk_text_buffer_delete(textbuf, &iter, &next_iter);
                        if (replace) {
                        if (replace) {
-                               gtk_stext_set_point(text, cur_pos);
-                               gtk_stext_insert(text, NULL, NULL, NULL, " ", 1);
-                               space = 1;
+                               gtk_text_buffer_insert(textbuf, &iter, " ", 1);
+                               space = TRUE;
                        }
                        else {
                                p_end--;
                                cur_pos--;
                        }
                        else {
                                p_end--;
                                cur_pos--;
+                               gtk_text_buffer_get_iter_at_offset
+                                       (textbuf, &iter, cur_pos);
                                continue;
                        }
                }
                                continue;
                        }
                }
@@ -2335,14 +2388,19 @@ static void compose_wrap_line(Compose *compose)
                        line_len = cur_len + ch_len;
                }
 
                        line_len = cur_len + ch_len;
                }
 
-               if (cur_len + DISP_WIDTH(ch_len) > prefs_common.linewrap_len &&
+               gtk_text_buffer_get_iter_at_offset(textbuf, &iter, line_pos);
+
+               if (cur_len + ch_len > prefs_common.linewrap_len &&
                    line_len > 0) {
                        gint tlen = ch_len;
                    line_len > 0) {
                        gint tlen = ch_len;
+                       GtkTextIter prev_iter = iter;
+
+                       gtk_text_iter_backward_char(&prev_iter);
 
 
-                       GET_CHAR(line_pos - 1, cbuf, ch_len);
+                       GET_CHAR(&prev_iter, cbuf, ch_len);
                        if (ch_len == 1 && isspace(*cbuf)) {
                        if (ch_len == 1 && isspace(*cbuf)) {
-                               gtk_stext_set_point(text, line_pos);
-                               gtk_stext_backward_delete(text, 1);
+                               gtk_text_buffer_delete(textbuf, &prev_iter, &iter);
+                               iter = prev_iter;
                                p_end--;
                                cur_pos--;
                                line_pos--;
                                p_end--;
                                cur_pos--;
                                line_pos--;
@@ -2351,38 +2409,37 @@ static void compose_wrap_line(Compose *compose)
                        }
                        ch_len = tlen;
 
                        }
                        ch_len = tlen;
 
-                       gtk_stext_set_point(text, line_pos);
-                       gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
+                       gtk_text_buffer_insert(textbuf, &iter, "\n", 1);
                        p_end++;
                        cur_pos++;
                        line_pos++;
                        p_end++;
                        cur_pos++;
                        line_pos++;
-                       cur_len = cur_len - line_len + DISP_WIDTH(ch_len);
+                       cur_len = cur_len - line_len + ch_len;
                        line_len = 0;
                        continue;
                }
 
                if (ch_len > 1) {
                        line_pos = cur_pos + 1;
                        line_len = 0;
                        continue;
                }
 
                if (ch_len > 1) {
                        line_pos = cur_pos + 1;
-                       line_len = cur_len + DISP_WIDTH(ch_len);
+                       line_len = cur_len + ch_len;
                }
                }
-               cur_len += DISP_WIDTH(ch_len);
+               cur_len += ch_len;
        }
        }
-
-compose_end:
-       gtk_stext_thaw(text);
 }
 
 #undef WRAP_DEBUG
 #ifdef WRAP_DEBUG
 /* Darko: used when I debug wrapping */
 }
 
 #undef WRAP_DEBUG
 #ifdef WRAP_DEBUG
 /* Darko: used when I debug wrapping */
-void dump_text(GtkSText *text, int pos, int tlen, int breakoncr)
+void dump_text(GtkTextBuffer textbuf, int pos, int tlen, int breakoncr)
 {
        gint i, clen;
 {
        gint i, clen;
-       gchar cbuf[MB_LEN_MAX];
+       gchar cbuf[CHAR_BUF_SIZE];
 
        printf("%d [", pos);
 
        printf("%d [", pos);
-       for (i = pos; i < tlen; i++) {
-               GET_CHAR(i, cbuf, clen);
+       gtk_text_buffer_get_iter_at_offset(textbuf, &iter, pos);
+       gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter, pos + tlen);
+       for (; gtk_text_iter_forward_char(&iter) &&
+                    gtk_text_iter_compare(&iter, &end_iter) < 0;)
+               GET_CHAR(&iter, cbuf, clen);
                if (clen < 0) break;
                if (breakoncr && clen == 1 && cbuf[0] == '\n')
                        break;
                if (clen < 0) break;
                if (breakoncr && clen == 1 && cbuf[0] == '\n')
                        break;
@@ -2404,12 +2461,12 @@ typedef enum {
    uppercase characters immediately followed by >,
    and the repeating sequences of the above */
 /* return indent length */
    uppercase characters immediately followed by >,
    and the repeating sequences of the above */
 /* return indent length */
-static guint get_indent_length(GtkSText *text, guint start_pos, guint text_len)
+static guint get_indent_length(GtkTextBuffer *textbuf, guint start_pos, guint text_len)
 {
        guint i_len = 0;
        guint i, ch_len, alnum_cnt = 0;
        IndentState state = WAIT_FOR_INDENT_CHAR;
 {
        guint i_len = 0;
        guint i, ch_len, alnum_cnt = 0;
        IndentState state = WAIT_FOR_INDENT_CHAR;
-       gchar cbuf[MB_LEN_MAX];
+       gchar cbuf[CHAR_BUF_SIZE];
        gboolean is_space;
        gboolean is_indent;
 
        gboolean is_space;
        gboolean is_indent;
 
@@ -2418,7 +2475,10 @@ static guint get_indent_length(GtkSText *text, guint start_pos, guint text_len)
        }
 
        for (i = start_pos; i < text_len; i++) {
        }
 
        for (i = start_pos; i < text_len; i++) {
-               GET_CHAR(i, cbuf, ch_len);
+               GtkTextIter iter;
+
+               gtk_text_buffer_get_iter_at_offset(textbuf, &iter, i);
+               GET_CHAR(&iter, cbuf, ch_len);
                if (ch_len > 1)
                        break;
 
                if (ch_len > 1)
                        break;
 
@@ -2475,36 +2535,49 @@ out:
 }
 
 /* insert quotation string when line was wrapped */
 }
 
 /* insert quotation string when line was wrapped */
-static guint ins_quote(GtkSText *text, guint indent_len,
+static guint ins_quote(GtkTextBuffer *textbuf, GtkTextIter *iter,
+                      guint indent_len,
                       guint prev_line_pos, guint text_len,
                       gchar *quote_fmt)
 {
                       guint prev_line_pos, guint text_len,
                       gchar *quote_fmt)
 {
-       guint i, ins_len = 0;
-       gchar ch;
+       guint ins_len = 0;
 
        if (indent_len) {
 
        if (indent_len) {
-               for (i = 0; i < indent_len; i++) {
-                       ch = GTK_STEXT_INDEX(text, prev_line_pos + i);
-                       gtk_stext_insert(text, NULL, NULL, NULL, &ch, 1);
-               }
-               ins_len = indent_len;
+               GtkTextIter iter1, iter2;
+               gchar *text;
+
+               gtk_text_buffer_get_iter_at_offset(textbuf, &iter1,
+                                                  prev_line_pos);
+               gtk_text_buffer_get_iter_at_offset(textbuf, &iter2,
+                                                  prev_line_pos + indent_len);
+               text = gtk_text_buffer_get_text(textbuf, &iter1, &iter2, FALSE);
+               if (!text) return 0;
+
+               gtk_text_buffer_insert(textbuf, iter, text, -1);
+               ins_len = g_utf8_strlen(text, -1);
+
+               g_free(text);
        }
 
        return ins_len;
 }
 
 /* check if we should join the next line */
        }
 
        return ins_len;
 }
 
 /* check if we should join the next line */
-static gboolean join_next_line(GtkSText *text, guint start_pos, guint tlen,
-                              guint prev_ilen, gboolean autowrap)
+static gboolean join_next_line_is_needed(GtkTextBuffer *textbuf,
+                                        guint start_pos, guint tlen,
+                                        guint prev_ilen, gboolean autowrap)
 {
        guint indent_len, ch_len;
        gboolean do_join = FALSE;
 {
        guint indent_len, ch_len;
        gboolean do_join = FALSE;
-       gchar cbuf[MB_LEN_MAX];
+       gchar cbuf[CHAR_BUF_SIZE];
 
 
-       indent_len = get_indent_length(text, start_pos, tlen);
+       indent_len = get_indent_length(textbuf, start_pos, tlen);
 
        if ((autowrap || indent_len > 0) && indent_len == prev_ilen) {
 
        if ((autowrap || indent_len > 0) && indent_len == prev_ilen) {
-               GET_CHAR(start_pos + indent_len, cbuf, ch_len);
+               GtkTextIter iter;
+               gtk_text_buffer_get_iter_at_offset(textbuf, &iter,
+                                                  start_pos + indent_len);
+               GET_CHAR(&iter, cbuf, ch_len);
                if (ch_len > 0 && (cbuf[0] != '\n'))
                        do_join = TRUE;
        }
                if (ch_len > 0 && (cbuf[0] != '\n'))
                        do_join = TRUE;
        }
@@ -2517,12 +2590,12 @@ static void compose_wrap_line_all(Compose *compose)
        compose_wrap_line_all_full(compose, FALSE);
 }
 
        compose_wrap_line_all_full(compose, FALSE);
 }
 
-#define STEXT_FREEZE() \
-       if (!frozen) { gtk_stext_freeze(text); frozen = TRUE; }
-
 static void compose_wrap_line_all_full(Compose *compose, gboolean autowrap)
 {
 static void compose_wrap_line_all_full(Compose *compose, gboolean autowrap)
 {
-       GtkSText *text = GTK_STEXT(compose->text);
+#if 0
+       GtkTextView *text = GTK_TEXT_VIEW(compose->text);
+       GtkTextBuffer *textbuf = gtk_text_view_get_buffer(text);
+       GtkTextIter iter, end_iter;
        guint tlen;
        guint line_pos = 0, cur_pos = 0, p_pos = 0;
        gint line_len = 0, cur_len = 0;
        guint tlen;
        guint line_pos = 0, cur_pos = 0, p_pos = 0;
        gint line_len = 0, cur_len = 0;
@@ -2532,104 +2605,96 @@ static void compose_wrap_line_all_full(Compose *compose, gboolean autowrap)
        gboolean linewrap_quote = TRUE;
        gboolean set_editable_pos = FALSE;
        gint editable_pos = 0;
        gboolean linewrap_quote = TRUE;
        gboolean set_editable_pos = FALSE;
        gint editable_pos = 0;
-       gboolean frozen = FALSE;
        guint linewrap_len = prefs_common.linewrap_len;
        gchar *qfmt = prefs_common.quotemark;
        guint linewrap_len = prefs_common.linewrap_len;
        gchar *qfmt = prefs_common.quotemark;
-       gchar cbuf[MB_LEN_MAX];
+       gchar cbuf[CHAR_BUF_SIZE];
 
 
-       tlen = gtk_stext_get_length(text);
+       tlen = gtk_text_buffer_get_char_count(textbuf);
 
        for (; cur_pos < tlen; cur_pos++) {
                /* mark position of new line - needed for quotation wrap */
                if (is_new_line) {
                        if (linewrap_quote)
 
        for (; cur_pos < tlen; cur_pos++) {
                /* mark position of new line - needed for quotation wrap */
                if (is_new_line) {
                        if (linewrap_quote)
-                               i_len = get_indent_length(text, cur_pos, tlen);
+                               i_len = get_indent_length(textbuf, cur_pos, tlen);
 
                        is_new_line = FALSE;
                        p_pos = cur_pos;
 
                        is_new_line = FALSE;
                        p_pos = cur_pos;
-#ifdef WRAP_DEBUG
-                       g_print("new line i_len=%d p_pos=", i_len);
-                       dump_text(text, p_pos, tlen, 1);
-#endif
                }
 
                }
 
-               GET_CHAR(cur_pos, cbuf, ch_len);
+               gtk_text_buffer_get_iter_at_offset(textbuf, &iter, cur_pos);
+               GET_CHAR(&iter, cbuf, ch_len);
 
                /* fix line length for tabs */
                if (ch_len == 1 && *cbuf == '\t') {
 
                /* fix line length for tabs */
                if (ch_len == 1 && *cbuf == '\t') {
-                       guint tab_width = text->default_tab_width;
+#warning FIXME_GTK2
+                       /* guint tab_width = text->default_tab_width; */
+                       guint tab_width = 8;
                        guint tab_offset = line_len % tab_width;
 
                        guint tab_offset = line_len % tab_width;
 
-#ifdef WRAP_DEBUG
-                       g_print("found tab at pos=%d line_len=%d ", cur_pos,
-                               line_len);
-#endif
                        if (tab_offset) {
                                line_len += tab_width - tab_offset - 1;
                                cur_len = line_len;
                        }
                        if (tab_offset) {
                                line_len += tab_width - tab_offset - 1;
                                cur_len = line_len;
                        }
-#ifdef WRAP_DEBUG
-                       printf("new_len=%d\n", line_len);
-#endif
                }
 
                /* we have encountered line break */
                if (ch_len == 1 && *cbuf == '\n') {
                        gint clen;
                }
 
                /* we have encountered line break */
                if (ch_len == 1 && *cbuf == '\n') {
                        gint clen;
-                       gchar cb[MB_LEN_MAX];
+                       gchar cb[CHAR_BUF_SIZE];
 
                        /* should we join the next line */
                        if ((autowrap || i_len != cur_len) && do_delete &&
 
                        /* should we join the next line */
                        if ((autowrap || i_len != cur_len) && do_delete &&
-                           join_next_line
-                               (text, cur_pos + 1, tlen, i_len, autowrap))
+                           join_next_line_is_needed
+                               (textbuf, cur_pos + 1, tlen, i_len, autowrap))
                                do_delete = TRUE;
                        else
                                do_delete = FALSE;
 
                                do_delete = TRUE;
                        else
                                do_delete = FALSE;
 
-#ifdef WRAP_DEBUG
-                       g_print("found CR at %d do_del is %d next line is ",
-                              cur_pos, do_delete);
-                       dump_text(text, cur_pos + 1, tlen, 1);
-#endif
-
                        /* skip delete if it is continuous URL */
                        if (do_delete && (line_pos - p_pos <= i_len) &&
                        /* skip delete if it is continuous URL */
                        if (do_delete && (line_pos - p_pos <= i_len) &&
-                           gtk_stext_is_uri_string(text, line_pos, tlen))
+                           gtkut_text_buffer_is_uri_string(textbuf, line_pos,
+                                                           tlen))
                                do_delete = FALSE;
 
                                do_delete = FALSE;
 
-#ifdef WRAP_DEBUG
-                       g_print("l_len=%d wrap_len=%d do_del=%d\n",
-                               line_len, linewrap_len, do_delete);
-#endif
                        /* should we delete to perform smart wrapping */
                        if (line_len < linewrap_len && do_delete) {
                        /* should we delete to perform smart wrapping */
                        if (line_len < linewrap_len && do_delete) {
-                               STEXT_FREEZE();
                                /* get rid of newline */
                                /* get rid of newline */
-                               gtk_stext_set_point(text, cur_pos);
-                               gtk_stext_forward_delete(text, 1);
+                               gtk_text_buffer_get_iter_at_offset(textbuf,
+                                                                  &iter,
+                                                                  cur_pos);
+                               end_iter = iter;
+                               gtk_text_iter_forward_char(&end_iter);
+                               gtk_text_buffer_delete(textbuf, &iter, &end_iter);
                                tlen--;
 
                                /* if text starts with quote fmt or with
                                   indent string, delete them */
                                if (i_len) {
                                        guint ilen;
                                tlen--;
 
                                /* if text starts with quote fmt or with
                                   indent string, delete them */
                                if (i_len) {
                                        guint ilen;
-                                       ilen =  gtk_stext_str_compare_n
-                                               (text, cur_pos, p_pos, i_len,
+                                       ilen =  gtkut_text_buffer_str_compare_n
+                                               (textbuf, cur_pos, p_pos, i_len,
                                                 tlen);
                                        if (ilen) {
                                                 tlen);
                                        if (ilen) {
-                                               gtk_stext_forward_delete
-                                                       (text, ilen);
+                                               end_iter = iter;
+                                               gtk_text_iter_forward_chars
+                                                       (&end_iter, ilen);
+                                               gtk_text_buffer_delete(textbuf,
+                                                                      &iter,
+                                                                      &end_iter);
                                                tlen -= ilen;
                                        }
                                }
 
                                                tlen -= ilen;
                                        }
                                }
 
-                               GET_CHAR(cur_pos, cb, clen);
+                               gtk_text_buffer_get_iter_at_offset(textbuf,
+                                                                  &iter,
+                                                                  cur_pos);
+                               GET_CHAR(&iter, cb, clen);
 
                                /* insert space if it's alphanumeric */
                                if ((cur_pos != line_pos) &&
                                    ((clen > 1) || isalnum(cb[0]))) {
 
                                /* insert space if it's alphanumeric */
                                if ((cur_pos != line_pos) &&
                                    ((clen > 1) || isalnum(cb[0]))) {
-                                       gtk_stext_insert(text, NULL, NULL,
-                                                       NULL, " ", 1);
+                                       gtk_text_buffer_insert(textbuf, &iter,
+                                                              " ", 1);
                                        tlen++;
                                }
 
                                        tlen++;
                                }
 
@@ -2772,21 +2837,21 @@ static void compose_wrap_line_all_full(Compose *compose, gboolean autowrap)
 
                if (ch_len > 1) {
                        line_pos = cur_pos + 1;
 
                if (ch_len > 1) {
                        line_pos = cur_pos + 1;
-                       line_len = cur_len + DISP_WIDTH(ch_len);
+                       line_len = cur_len + ch_len;
                }
                /* advance to next character in buffer */
                }
                /* advance to next character in buffer */
-               cur_len += DISP_WIDTH(ch_len);
+               cur_len += ch_len;
        }
 
        }
 
-       if (frozen)
-               gtk_stext_thaw(text);
-
-       if (set_editable_pos && editable_pos <= tlen)
-               gtk_editable_set_position(GTK_EDITABLE(text), editable_pos);
+       if (set_editable_pos && editable_pos <= tlen) {
+               gtk_text_buffer_get_iter_at_offset(textbuf, &iter, editable_pos);
+               gtk_text_buffer_place_cursor(textbuf, &iter);
+       }
+#endif
 }
 
 }
 
-#undef STEXT_FREEZE
 #undef GET_CHAR
 #undef GET_CHAR
+#undef CHAR_BUF_SIZE
 
 static void compose_set_title(Compose *compose)
 {
 
 static void compose_set_title(Compose *compose)
 {
@@ -2966,7 +3031,7 @@ gboolean compose_check_for_valid_recipient(Compose *compose) {
 
 static gboolean compose_check_entries(Compose *compose, gboolean check_subject)
 {
 
 static gboolean compose_check_entries(Compose *compose, gboolean check_subject)
 {
-       gchar *str;
+       const gchar *str;
 
        if (compose_check_for_valid_recipient(compose) == FALSE) {
                alertpanel_error(_("Recipient is not specified."));
 
        if (compose_check_for_valid_recipient(compose) == FALSE) {
                alertpanel_error(_("Recipient is not specified."));
@@ -3147,7 +3212,7 @@ static gint compose_redirect_write_headers_from_headerlist(Compose *compose,
        gboolean first_address;
        GSList *list;
        ComposeHeaderEntry *headerentry;
        gboolean first_address;
        GSList *list;
        ComposeHeaderEntry *headerentry;
-       gchar *headerentryname;
+       const gchar *headerentryname;
        gchar *cc_hdr;
        gchar *to_hdr;
 
        gchar *cc_hdr;
        gchar *to_hdr;
 
@@ -3163,8 +3228,8 @@ static gint compose_redirect_write_headers_from_headerlist(Compose *compose,
 
                if (g_strcasecmp(headerentryname, cc_hdr) == 0 
                   || g_strcasecmp(headerentryname, to_hdr) == 0) {
 
                if (g_strcasecmp(headerentryname, cc_hdr) == 0 
                   || g_strcasecmp(headerentryname, to_hdr) == 0) {
-                       str = gtk_entry_get_text(GTK_ENTRY(headerentry->entry));
-                       Xstrdup_a(str, str, return -1);
+                       const gchar *entstr = gtk_entry_get_text(GTK_ENTRY(headerentry->entry));
+                       Xstrdup_a(str, entstr, return -1);
                        g_strstrip(str);
                        if (str[0] != '\0') {
                                compose_convert_header
                        g_strstrip(str);
                        if (str[0] != '\0') {
                                compose_convert_header
@@ -3191,6 +3256,7 @@ static gint compose_redirect_write_headers(Compose *compose, FILE *fp)
 {
        gchar buf[BUFFSIZE];
        gchar *str;
 {
        gchar buf[BUFFSIZE];
        gchar *str;
+       const gchar *entstr;
        /* struct utsname utsbuf; */
 
        g_return_val_if_fail(fp != NULL, -1);
        /* struct utsname utsbuf; */
 
        g_return_val_if_fail(fp != NULL, -1);
@@ -3212,9 +3278,9 @@ static gint compose_redirect_write_headers(Compose *compose, FILE *fp)
                fprintf(fp, "Resent-From: %s\n", compose->account->address);
 
        /* Subject */
                fprintf(fp, "Resent-From: %s\n", compose->account->address);
 
        /* Subject */
-       str = gtk_entry_get_text(GTK_ENTRY(compose->subject_entry));
-       if (*str != '\0') {
-               Xstrdup_a(str, str, return -1);
+       entstr = gtk_entry_get_text(GTK_ENTRY(compose->subject_entry));
+       if (*entstr != '\0') {
+               Xstrdup_a(str, entstr, return -1);
                g_strstrip(str);
                if (*str != '\0') {
                        compose_convert_header(buf, sizeof(buf), str,
                g_strstrip(str);
                if (*str != '\0') {
                        compose_convert_header(buf, sizeof(buf), str,
@@ -3397,6 +3463,8 @@ static gint compose_clearsign_text(Compose *compose, gchar **text)
 static gint compose_write_to_file(Compose *compose, const gchar *file,
                                  gboolean is_draft)
 {
 static gint compose_write_to_file(Compose *compose, const gchar *file,
                                  gboolean is_draft)
 {
+       GtkTextBuffer *buffer;
+       GtkTextIter start, end;
        FILE *fp;
        size_t len;
        gchar *chars;
        FILE *fp;
        size_t len;
        gchar *chars;
@@ -3417,7 +3485,10 @@ static gint compose_write_to_file(Compose *compose, const gchar *file,
        }
 
        /* get all composed text */
        }
 
        /* get all composed text */
-       chars = gtk_editable_get_chars(GTK_EDITABLE(compose->text), 0, -1);
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(compose->text));
+       gtk_text_buffer_get_start_iter(buffer, &start);
+       gtk_text_buffer_get_end_iter(buffer, &end);
+       chars = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
        len = strlen(chars);
        if (is_ascii_str(chars)) {
                buf = chars;
        len = strlen(chars);
        if (is_ascii_str(chars)) {
                buf = chars;
@@ -3447,11 +3518,16 @@ static gint compose_write_to_file(Compose *compose, const gchar *file,
                        encoding = ENC_BASE64;
 #endif
 
                        encoding = ENC_BASE64;
 #endif
 
+#warning FIXME_GTK2
+#if 0 /* FIXME_GTK2 */
                src_codeset = conv_get_current_charset_str();
                /* if current encoding is US-ASCII, set it the same as
                   outgoing one to prevent code conversion failure */
                if (!strcasecmp(src_codeset, CS_US_ASCII))
                        src_codeset = out_codeset;
                src_codeset = conv_get_current_charset_str();
                /* if current encoding is US-ASCII, set it the same as
                   outgoing one to prevent code conversion failure */
                if (!strcasecmp(src_codeset, CS_US_ASCII))
                        src_codeset = out_codeset;
+#else /* FIXME_GTK2 */
+               src_codeset = CS_UTF_8;
+#endif /* FIXME_GTK2 */
 
                debug_print("src encoding = %s, out encoding = %s, transfer encoding = %s\n",
                            src_codeset, out_codeset, procmime_get_encoding_str(encoding));
 
                debug_print("src encoding = %s, out encoding = %s, transfer encoding = %s\n",
                            src_codeset, out_codeset, procmime_get_encoding_str(encoding));
@@ -3614,9 +3690,12 @@ static gint compose_write_to_file(Compose *compose, const gchar *file,
 
 static gint compose_write_body_to_file(Compose *compose, const gchar *file)
 {
 
 static gint compose_write_body_to_file(Compose *compose, const gchar *file)
 {
+       GtkTextBuffer *buffer;
+       GtkTextIter start, end;
        FILE *fp;
        size_t len;
        FILE *fp;
        size_t len;
-       gchar *chars;
+       gchar *chars, *tmp;
+       const gchar *src_codeset, *dest_codeset;
 
        if ((fp = fopen(file, "wb")) == NULL) {
                FILE_OP_ERROR(file, "fopen");
 
        if ((fp = fopen(file, "wb")) == NULL) {
                FILE_OP_ERROR(file, "fopen");
@@ -3629,7 +3708,19 @@ static gint compose_write_body_to_file(Compose *compose, const gchar *file)
                g_warning("can't change file mode\n");
        }
 
                g_warning("can't change file mode\n");
        }
 
-       chars = gtk_editable_get_chars(GTK_EDITABLE(compose->text), 0, -1);
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(compose->text));
+       gtk_text_buffer_get_start_iter(buffer, &start);
+       gtk_text_buffer_get_end_iter(buffer, &end);
+       tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
+
+#warning FIXME_GTK2
+#if 1 /* FIXME_GTK2 */
+       src_codeset = CS_UTF_8;
+       dest_codeset = conv_get_current_charset_str();
+       chars = conv_codeset_strdup(tmp, src_codeset, dest_codeset);
+       g_free(tmp);
+       if (!chars) return -1;
+#endif /* FIXME_GTK2 */
 
        /* write body */
        len = strlen(chars);
 
        /* write body */
        len = strlen(chars);
@@ -3995,21 +4086,22 @@ static void compose_write_attach(Compose *compose, FILE *fp)
                Xstrdup_a(out, str, return -1);         \
        }                                               \
 }
                Xstrdup_a(out, str, return -1);         \
        }                                               \
 }
-
-#define PUT_RECIPIENT_HEADER(header, str)                                   \
-{                                                                           \
-       if (*str != '\0') {                                                  \
-               Xstrdup_a(str, str, return -1);                              \
-               g_strstrip(str);                                             \
-               if (*str != '\0') {                                          \
-                       compose->to_list = address_list_append               \
-                               (compose->to_list, str);                     \
-                       compose_convert_header                               \
-                               (buf, sizeof(buf), str, strlen(header) + 2,  \
-                                TRUE);                                      \
-                       fprintf(fp, "%s: %s\n", header, buf);                \
-               }                                                            \
-       }                                                                    \
+  
+#define PUT_RECIPIENT_HEADER(header, str)                                    \
+{                                                                            \
+       if (*str != '\0') {                                                   \
+               gchar *dest;                                                  \
+               Xstrdup_a(dest, str, return -1);                              \
+               g_strstrip(dest);                                             \
+               if (*dest != '\0') {                                          \
+                       compose->to_list = address_list_append                \
+                               (compose->to_list, dest);                     \
+                       compose_convert_header                                \
+                               (buf, sizeof(buf), dest, strlen(header) + 2,  \
+                                TRUE);                                       \
+                       fprintf(fp, "%s: %s\n", header, buf);                 \
+               }                                                             \
+       }                                                                     \
 }
 
 #define IS_IN_CUSTOM_HEADER(header) \
 }
 
 #define IS_IN_CUSTOM_HEADER(header) \
@@ -4025,7 +4117,7 @@ static gint compose_write_headers_from_headerlist(Compose *compose,
        gboolean first_address;
        GSList *list;
        ComposeHeaderEntry *headerentry;
        gboolean first_address;
        GSList *list;
        ComposeHeaderEntry *headerentry;
-       gchar * headerentryname;
+       const gchar * headerentryname;
 
        if (IS_IN_CUSTOM_HEADER(header)) {
                return 0;
 
        if (IS_IN_CUSTOM_HEADER(header)) {
                return 0;
@@ -4042,8 +4134,8 @@ static gint compose_write_headers_from_headerlist(Compose *compose,
                headerentryname = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(headerentry->combo)->entry));
 
                if (!g_strcasecmp(trans_hdr, headerentryname)) {
                headerentryname = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(headerentry->combo)->entry));
 
                if (!g_strcasecmp(trans_hdr, headerentryname)) {
-                       str = gtk_entry_get_text(GTK_ENTRY(headerentry->entry));
-                       Xstrdup_a(str, str, return -1);
+                       const gchar *entstr = gtk_entry_get_text(GTK_ENTRY(headerentry->entry));
+                       Xstrdup_a(str, entstr, return -1);
                        g_strstrip(str);
                        if (str[0] != '\0') {
                                compose_convert_header
                        g_strstrip(str);
                        if (str[0] != '\0') {
                                compose_convert_header
@@ -4073,6 +4165,7 @@ static gint compose_write_headers(Compose *compose, FILE *fp,
                                  gboolean is_draft)
 {
        gchar buf[BUFFSIZE];
                                  gboolean is_draft)
 {
        gchar buf[BUFFSIZE];
+       const gchar *entry_str;
        gchar *str;
        gchar *name;
        GSList *list;
        gchar *str;
        gchar *name;
        GSList *list;
@@ -4122,8 +4215,8 @@ static gint compose_write_headers(Compose *compose, FILE *fp,
        compose_write_headers_from_headerlist(compose, fp, "To");
 #if 0 /* NEW COMPOSE GUI */
        if (compose->use_to) {
        compose_write_headers_from_headerlist(compose, fp, "To");
 #if 0 /* NEW COMPOSE GUI */
        if (compose->use_to) {
-               str = gtk_entry_get_text(GTK_ENTRY(compose->to_entry));
-               PUT_RECIPIENT_HEADER("To", str);
+               entry_str = gtk_entry_get_text(GTK_ENTRY(compose->to_entry));
+               PUT_RECIPIENT_HEADER("To", entry_str);
        }
 #endif
 
        }
 #endif
 
@@ -4131,9 +4224,9 @@ static gint compose_write_headers(Compose *compose, FILE *fp,
        compose_write_headers_from_headerlist(compose, fp, "Newsgroups");
 #if 0 /* NEW COMPOSE GUI */
        if (compose->use_newsgroups) {
        compose_write_headers_from_headerlist(compose, fp, "Newsgroups");
 #if 0 /* NEW COMPOSE GUI */
        if (compose->use_newsgroups) {
-               str = gtk_entry_get_text(GTK_ENTRY(compose->newsgroups_entry));
-               if (*str != '\0') {
-                       Xstrdup_a(str, str, return -1);
+               entry_str = gtk_entry_get_text(GTK_ENTRY(compose->newsgroups_entry));
+               if (*entry_str != '\0') {
+                       Xstrdup_a(str, entry_str, return -1);
                        g_strstrip(str);
                        remove_space(str);
                        if (*str != '\0') {
                        g_strstrip(str);
                        remove_space(str);
                        if (*str != '\0') {
@@ -4166,9 +4259,9 @@ static gint compose_write_headers(Compose *compose, FILE *fp,
 #endif
 
        /* Subject */
 #endif
 
        /* Subject */
-       str = gtk_entry_get_text(GTK_ENTRY(compose->subject_entry));
-       if (*str != '\0' && !IS_IN_CUSTOM_HEADER("Subject")) {
-               Xstrdup_a(str, str, return -1);
+       entry_str = gtk_entry_get_text(GTK_ENTRY(compose->subject_entry));
+       if (*entry_str != '\0' && !IS_IN_CUSTOM_HEADER("Subject")) {
+               Xstrdup_a(str, entry_str, return -1);
                g_strstrip(str);
                if (*str != '\0') {
                        compose_convert_header(buf, sizeof(buf), str,
                g_strstrip(str);
                if (*str != '\0') {
                        compose_convert_header(buf, sizeof(buf), str,
@@ -4198,9 +4291,9 @@ static gint compose_write_headers(Compose *compose, FILE *fp,
        compose_write_headers_from_headerlist(compose, fp, "Followup-To");
 #if 0 /* NEW COMPOSE GUI */
        if (compose->use_followupto && !IS_IN_CUSTOM_HEADER("Followup-To")) {
        compose_write_headers_from_headerlist(compose, fp, "Followup-To");
 #if 0 /* NEW COMPOSE GUI */
        if (compose->use_followupto && !IS_IN_CUSTOM_HEADER("Followup-To")) {
-               str = gtk_entry_get_text(GTK_ENTRY(compose->followup_entry));
-               if (*str != '\0') {
-                       Xstrdup_a(str, str, return -1);
+               entry_str = gtk_entry_get_text(GTK_ENTRY(compose->followup_entry));
+               if (*entry_str != '\0') {
+                       Xstrdup_a(str, entry_str, return -1);
                        g_strstrip(str);
                        remove_space(str);
                        if (*str != '\0') {
                        g_strstrip(str);
                        remove_space(str);
                        if (*str != '\0') {
@@ -4216,9 +4309,9 @@ static gint compose_write_headers(Compose *compose, FILE *fp,
        compose_write_headers_from_headerlist(compose, fp, "Reply-To");
 #if 0 /* NEW COMPOSE GUI */
        if (compose->use_replyto && !IS_IN_CUSTOM_HEADER("Reply-To")) {
        compose_write_headers_from_headerlist(compose, fp, "Reply-To");
 #if 0 /* NEW COMPOSE GUI */
        if (compose->use_replyto && !IS_IN_CUSTOM_HEADER("Reply-To")) {
-               str = gtk_entry_get_text(GTK_ENTRY(compose->reply_entry));
-               if (*str != '\0') {
-                       Xstrdup_a(str, str, return -1);
+               entry_str = gtk_entry_get_text(GTK_ENTRY(compose->reply_entry));
+               if (*entry_str != '\0') {
+                       Xstrdup_a(str, entry_str, return -1);
                        g_strstrip(str);
                        if (*str != '\0') {
                                compose_convert_header(buf, sizeof(buf), str,
                        g_strstrip(str);
                        if (*str != '\0') {
                                compose_convert_header(buf, sizeof(buf), str,
@@ -4363,7 +4456,8 @@ static gint compose_write_headers(Compose *compose, FILE *fp,
                }
                g_free(tmp);
                
                }
                g_free(tmp);
                
-               headervalue = gtk_entry_get_text(GTK_ENTRY(headerentry->entry));
+               entry_str = gtk_entry_get_text(GTK_ENTRY(headerentry->entry));
+               Xstrdup_a(headervalue, entry_str, return -1);
                subst_char(headervalue, '\r', ' ');
                subst_char(headervalue, '\n', ' ');
                string = std_headers;
                subst_char(headervalue, '\r', ' ');
                subst_char(headervalue, '\n', ' ');
                string = std_headers;
@@ -4441,7 +4535,8 @@ static void compose_create_header_entry(Compose *compose)
        GtkWidget *combo;
        GtkWidget *entry;
        GList *combo_list = NULL;
        GtkWidget *combo;
        GtkWidget *entry;
        GList *combo_list = NULL;
-       gchar **string, *header = NULL;
+       gchar **string;
+       const gchar *header = NULL;
        ComposeHeaderEntry *headerentry;
        gboolean standard_header = FALSE;
 
        ComposeHeaderEntry *headerentry;
        gboolean standard_header = FALSE;
 
@@ -4460,7 +4555,7 @@ static void compose_create_header_entry(Compose *compose)
        gtk_widget_show(combo);
        gtk_table_attach(GTK_TABLE(compose->header_table), combo, 0, 1, compose->header_nextrow, compose->header_nextrow+1, GTK_SHRINK, GTK_FILL, 0, 0);
        if (compose->header_last) {     
        gtk_widget_show(combo);
        gtk_table_attach(GTK_TABLE(compose->header_table), combo, 0, 1, compose->header_nextrow, compose->header_nextrow+1, GTK_SHRINK, GTK_FILL, 0, 0);
        if (compose->header_last) {     
-               gchar *last_header_entry = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(compose->header_last->combo)->entry));
+               const gchar *last_header_entry = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(compose->header_last->combo)->entry));
                string = headers;
                while (*string != NULL) {
                        if (!strcmp(*string, last_header_entry))
                string = headers;
                while (*string != NULL) {
                        if (!strcmp(*string, last_header_entry))
@@ -4596,35 +4691,35 @@ static GtkWidget *compose_create_header(Compose *compose)
 
        gtk_table_set_col_spacings(GTK_TABLE(table), 4);
 
 
        gtk_table_set_col_spacings(GTK_TABLE(table), 4);
 
-       gtk_signal_connect(GTK_OBJECT(to_entry), "activate",
-                          GTK_SIGNAL_FUNC(to_activated), compose);
-       gtk_signal_connect(GTK_OBJECT(newsgroups_entry), "activate",
-                          GTK_SIGNAL_FUNC(newsgroups_activated), compose);
-       gtk_signal_connect(GTK_OBJECT(subject_entry), "activate",
-                          GTK_SIGNAL_FUNC(subject_activated), compose);
-       gtk_signal_connect(GTK_OBJECT(cc_entry), "activate",
-                          GTK_SIGNAL_FUNC(cc_activated), compose);
-       gtk_signal_connect(GTK_OBJECT(bcc_entry), "activate",
-                          GTK_SIGNAL_FUNC(bcc_activated), compose);
-       gtk_signal_connect(GTK_OBJECT(reply_entry), "activate",
-                          GTK_SIGNAL_FUNC(replyto_activated), compose);
-       gtk_signal_connect(GTK_OBJECT(followup_entry), "activate",
-                          GTK_SIGNAL_FUNC(followupto_activated), compose);
-
-       gtk_signal_connect(GTK_OBJECT(subject_entry), "grab_focus",
-                          GTK_SIGNAL_FUNC(compose_grab_focus_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(to_entry), "grab_focus",
-                          GTK_SIGNAL_FUNC(compose_grab_focus_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(newsgroups_entry), "grab_focus",
-                          GTK_SIGNAL_FUNC(compose_grab_focus_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(cc_entry), "grab_focus",
-                          GTK_SIGNAL_FUNC(compose_grab_focus_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(bcc_entry), "grab_focus",
-                          GTK_SIGNAL_FUNC(compose_grab_focus_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(reply_entry), "grab_focus",
-                          GTK_SIGNAL_FUNC(compose_grab_focus_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(followup_entry), "grab_focus",
-                          GTK_SIGNAL_FUNC(compose_grab_focus_cb), compose);
+       g_signal_connect(G_OBJECT(to_entry), "activate",
+                        G_CALLBACK(to_activated), compose);
+       g_signal_connect(G_OBJECT(newsgroups_entry), "activate",
+                        G_CALLBACK(newsgroups_activated), compose);
+       g_signal_connect(G_OBJECT(subject_entry), "activate",
+                        G_CALLBACK(subject_activated), compose);
+       g_signal_connect(G_OBJECT(cc_entry), "activate",
+                        G_CALLBACK(cc_activated), compose);
+       g_signal_connect(G_OBJECT(bcc_entry), "activate",
+                        G_CALLBACK(bcc_activated), compose);
+       g_signal_connect(G_OBJECT(reply_entry), "activate",
+                        G_CALLBACK(replyto_activated), compose);
+       g_signal_connect(G_OBJECT(followup_entry), "activate",
+                        G_CALLBACK(followupto_activated), compose);
+
+       g_signal_connect(G_OBJECT(subject_entry), "grab_focus",
+                        G_CALLBACK(compose_grab_focus_cb), compose);
+       g_signal_connect(G_OBJECT(to_entry), "grab_focus",
+                        G_CALLBACK(compose_grab_focus_cb), compose);
+       g_signal_connect(G_OBJECT(newsgroups_entry), "grab_focus",
+                        G_CALLBACK(compose_grab_focus_cb), compose);
+       g_signal_connect(G_OBJECT(cc_entry), "grab_focus",
+                        G_CALLBACK(compose_grab_focus_cb), compose);
+       g_signal_connect(G_OBJECT(bcc_entry), "grab_focus",
+                        G_CALLBACK(compose_grab_focus_cb), compose);
+       g_signal_connect(G_OBJECT(reply_entry), "grab_focus",
+                        G_CALLBACK(compose_grab_focus_cb), compose);
+       g_signal_connect(G_OBJECT(followup_entry), "grab_focus",
+                        G_CALLBACK(compose_grab_focus_cb), compose);
 #endif
 
        compose->table            = NULL;
 #endif
 
        compose->table            = NULL;
@@ -4666,7 +4761,7 @@ GtkWidget *compose_create_attach(Compose *compose)
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(attach_scrwin),
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_ALWAYS);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(attach_scrwin),
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_ALWAYS);
-       gtk_widget_set_usize(attach_scrwin, -1, 80);
+       gtk_widget_set_size_request(attach_scrwin, -1, 80);
 
        attach_clist = gtk_clist_new_with_titles(N_ATTACH_COLS, titles);
        gtk_clist_set_column_justification(GTK_CLIST(attach_clist), COL_SIZE,
 
        attach_clist = gtk_clist_new_with_titles(N_ATTACH_COLS, titles);
        gtk_clist_set_column_justification(GTK_CLIST(attach_clist), COL_SIZE,
@@ -4681,20 +4776,20 @@ GtkWidget *compose_create_attach(Compose *compose)
                         GTK_CAN_FOCUS);
        gtk_container_add(GTK_CONTAINER(attach_scrwin), attach_clist);
 
                         GTK_CAN_FOCUS);
        gtk_container_add(GTK_CONTAINER(attach_scrwin), attach_clist);
 
-       gtk_signal_connect(GTK_OBJECT(attach_clist), "select_row",
-                          GTK_SIGNAL_FUNC(attach_selected), compose);
-       gtk_signal_connect(GTK_OBJECT(attach_clist), "button_press_event",
-                          GTK_SIGNAL_FUNC(attach_button_pressed), compose);
-       gtk_signal_connect(GTK_OBJECT(attach_clist), "key_press_event",
-                          GTK_SIGNAL_FUNC(attach_key_pressed), compose);
+       g_signal_connect(G_OBJECT(attach_clist), "select_row",
+                        G_CALLBACK(attach_selected), compose);
+       g_signal_connect(G_OBJECT(attach_clist), "button_press_event",
+                        G_CALLBACK(attach_button_pressed), compose);
+       g_signal_connect(G_OBJECT(attach_clist), "key_press_event",
+                        G_CALLBACK(attach_key_pressed), compose);
 
        /* drag and drop */
        gtk_drag_dest_set(attach_clist,
                          GTK_DEST_DEFAULT_ALL, compose_mime_types, 1,
                          GDK_ACTION_COPY | GDK_ACTION_MOVE);
 
        /* drag and drop */
        gtk_drag_dest_set(attach_clist,
                          GTK_DEST_DEFAULT_ALL, compose_mime_types, 1,
                          GDK_ACTION_COPY | GDK_ACTION_MOVE);
-       gtk_signal_connect(GTK_OBJECT(attach_clist), "drag_data_received",
-                          GTK_SIGNAL_FUNC(compose_attach_drag_received_cb),
-                          compose);
+       g_signal_connect(G_OBJECT(attach_clist), "drag_data_received",
+                        G_CALLBACK(compose_attach_drag_received_cb),
+                        compose);
 
        compose->attach_scrwin = attach_scrwin;
        compose->attach_clist  = attach_clist;
 
        compose->attach_scrwin = attach_scrwin;
        compose->attach_clist  = attach_clist;
@@ -4801,6 +4896,8 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
        GtkWidget *ruler;
        GtkWidget *scrolledwin;
        GtkWidget *text;
        GtkWidget *ruler;
        GtkWidget *scrolledwin;
        GtkWidget *text;
+       GtkTextBuffer *buffer;
+       GtkClipboard *clipboard;
 
        UndoMain *undostruct;
 
 
        UndoMain *undostruct;
 
@@ -4835,7 +4932,7 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
 
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
 
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
-       gtk_widget_set_usize(window, -1, prefs_common.compose_height);
+       gtk_widget_set_size_request(window, -1, prefs_common.compose_height);
        gtk_window_set_wmclass(GTK_WINDOW(window), "compose window", "Sylpheed");
 
        if (!geometry.max_width) {
        gtk_window_set_wmclass(GTK_WINDOW(window), "compose window", "Sylpheed");
 
        if (!geometry.max_width) {
@@ -4845,10 +4942,10 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
        gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL,
                                      &geometry, GDK_HINT_MAX_SIZE);
 
        gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL,
                                      &geometry, GDK_HINT_MAX_SIZE);
 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(compose_delete_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(window), "destroy",
-                          GTK_SIGNAL_FUNC(compose_destroy_cb), compose);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(compose_delete_cb), compose);
+       g_signal_connect(G_OBJECT(window), "destroy",
+                        G_CALLBACK(compose_destroy_cb), compose);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
        gtk_widget_realize(window);
 
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
        gtk_widget_realize(window);
 
@@ -4874,7 +4971,7 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
        
        /* Notebook */
        notebook = gtk_notebook_new();
        
        /* Notebook */
        notebook = gtk_notebook_new();
-       gtk_widget_set_usize(notebook, -1, 130);
+       gtk_widget_set_size_request(notebook, -1, 130);
        gtk_widget_show(notebook);
 
        /* header labels and entries */
        gtk_widget_show(notebook);
 
        /* header labels and entries */
@@ -4923,65 +5020,71 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
        gtk_ruler_set_range(GTK_RULER(ruler), 0.0, 100.0, 1.0, 100.0);
        gtk_box_pack_start(GTK_BOX(ruler_hbox), ruler, TRUE, TRUE,
                           BORDER_WIDTH + 1);
        gtk_ruler_set_range(GTK_RULER(ruler), 0.0, 100.0, 1.0, 100.0);
        gtk_box_pack_start(GTK_BOX(ruler_hbox), ruler, TRUE, TRUE,
                           BORDER_WIDTH + 1);
-       gtk_widget_set_usize(ruler_hbox, 1, -1);
+       gtk_widget_set_size_request(ruler_hbox, 1, -1);
 
        /* text widget */
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
                                       GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(edit_vbox), scrolledwin, TRUE, TRUE, 0);
 
        /* text widget */
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
                                       GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(edit_vbox), scrolledwin, TRUE, TRUE, 0);
-       gtk_widget_set_usize(scrolledwin, prefs_common.compose_width, -1);
+       gtk_widget_set_size_request(scrolledwin, prefs_common.compose_width, -1);
 
 
-       text = gtk_stext_new(gtk_scrolled_window_get_hadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)),
-                           gtk_scrolled_window_get_vadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)));
-       GTK_STEXT(text)->default_tab_width = 8;
-       gtk_stext_set_editable(GTK_STEXT(text), TRUE);
+       text = gtk_text_view_new();
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(text), TRUE);
+       clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
+       gtk_text_buffer_add_selection_clipboard(buffer, clipboard);
+#warning FIXME_GTK2
+       /* GTK_STEXT(text)->default_tab_width = 8; */
 
 
+#warning FIXME_GTK2
+#if 0
        if (prefs_common.block_cursor) {
                GTK_STEXT(text)->cursor_type = GTK_STEXT_CURSOR_BLOCK;
        }
        if (prefs_common.block_cursor) {
                GTK_STEXT(text)->cursor_type = GTK_STEXT_CURSOR_BLOCK;
        }
+#endif
        
        
+#warning FIXME_GTK2
+#if 0
        if (prefs_common.smart_wrapping) {      
                gtk_stext_set_word_wrap(GTK_STEXT(text), TRUE);
                gtk_stext_set_wrap_rmargin(GTK_STEXT(text), prefs_common.linewrap_len);
        }               
        if (prefs_common.smart_wrapping) {      
                gtk_stext_set_word_wrap(GTK_STEXT(text), TRUE);
                gtk_stext_set_wrap_rmargin(GTK_STEXT(text), prefs_common.linewrap_len);
        }               
+#else
+       if (prefs_common.smart_wrapping) {      
+               gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
+       }               
+#endif
 
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
 
 
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
 
-       gtk_signal_connect(GTK_OBJECT(text), "changed",
-                          GTK_SIGNAL_FUNC(compose_changed_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(text), "grab_focus",
-                          GTK_SIGNAL_FUNC(compose_grab_focus_cb), compose);
-       gtk_signal_connect(GTK_OBJECT(text), "activate",
-                          GTK_SIGNAL_FUNC(text_activated), compose);
-       gtk_signal_connect(GTK_OBJECT(text), "insert_text",
-                          GTK_SIGNAL_FUNC(text_inserted), compose);
-       gtk_signal_connect_after(GTK_OBJECT(text), "button_press_event",
-                                GTK_SIGNAL_FUNC(compose_button_press_cb),
-                                edit_vbox);
-#if 0
-       gtk_signal_connect_after(GTK_OBJECT(text), "key_press_event",
-                                GTK_SIGNAL_FUNC(compose_key_press_cb),
-                                compose);
-#endif
-       gtk_signal_connect_after(GTK_OBJECT(text), "size_allocate",
-                                GTK_SIGNAL_FUNC(compose_edit_size_alloc),
-                                ruler);
+#warning FIXME_GTK2
+#if 0 /* FIXME_GTK2 */
+       g_signal_connect(G_OBJECT(text), "activate",
+                        G_CALLBACK(text_activated), compose);
+#endif /* FIXME_GTK2 */
+
+       g_signal_connect_after(G_OBJECT(text), "size_allocate",
+                              G_CALLBACK(compose_edit_size_alloc),
+                              ruler);
+       g_signal_connect(G_OBJECT(buffer), "changed",
+                        G_CALLBACK(compose_changed_cb), compose);
+       g_signal_connect(G_OBJECT(text), "grab_focus",
+                        G_CALLBACK(compose_grab_focus_cb), compose);
+       g_signal_connect(G_OBJECT(buffer), "insert-text",
+                        G_CALLBACK(text_inserted), compose);
 
        /* drag and drop */
        gtk_drag_dest_set(text, GTK_DEST_DEFAULT_ALL, compose_mime_types, 1,
                          GDK_ACTION_COPY | GDK_ACTION_MOVE);
 
        /* drag and drop */
        gtk_drag_dest_set(text, GTK_DEST_DEFAULT_ALL, compose_mime_types, 1,
                          GDK_ACTION_COPY | GDK_ACTION_MOVE);
-       gtk_signal_connect(GTK_OBJECT(text), "drag_data_received",
-                          GTK_SIGNAL_FUNC(compose_insert_drag_received_cb),
-                          compose);
+       g_signal_connect(G_OBJECT(text), "drag_data_received",
+                        G_CALLBACK(compose_insert_drag_received_cb),
+                        compose);
        gtk_widget_show_all(vbox);
 
        /* pane between attach clist and text */
        paned = gtk_vpaned_new();
        gtk_paned_set_gutter_size(GTK_PANED(paned), 12);
        gtk_widget_show_all(vbox);
 
        /* pane between attach clist and text */
        paned = gtk_vpaned_new();
        gtk_paned_set_gutter_size(GTK_PANED(paned), 12);
-       gtk_paned_set_handle_size(GTK_PANED(paned), 12);
        gtk_container_add(GTK_CONTAINER(vbox2), paned);
        gtk_paned_add1(GTK_PANED(paned), notebook);
        gtk_paned_add2(GTK_PANED(paned), edit_vbox);
        gtk_container_add(GTK_CONTAINER(vbox2), paned);
        gtk_paned_add1(GTK_PANED(paned), notebook);
        gtk_paned_add2(GTK_PANED(paned), edit_vbox);
@@ -4990,6 +5093,8 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
        style = gtk_widget_get_style(text);
 
        /* workaround for the slow down of GtkSText when using Pixmap theme */
        style = gtk_widget_get_style(text);
 
        /* workaround for the slow down of GtkSText when using Pixmap theme */
+#warning FIXME_GTK2
+#if 0 /* FIXME_GTK2 */
        if (style->engine) {
                GtkThemeEngine *engine;
 
        if (style->engine) {
                GtkThemeEngine *engine;
 
@@ -4998,14 +5103,19 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
                new_style = gtk_style_copy(style);
                style->engine = engine;
        } else
                new_style = gtk_style_copy(style);
                style->engine = engine;
        } else
+#endif /* FIXME_GTK2 */
                new_style = gtk_style_copy(style);
 
        if (prefs_common.textfont) {
                new_style = gtk_style_copy(style);
 
        if (prefs_common.textfont) {
-               GdkFont *font;
-
-               if ((font = gtkut_font_load(prefs_common.textfont)) != NULL) {
-                       gdk_font_unref(new_style->font);
-                       new_style->font = font;
+               PangoFontDescription *font_desc;
+
+               font_desc = pango_font_description_from_string
+                                       (prefs_common.textfont);
+               if (font_desc) {
+                       if (new_style->font_desc)
+                               pango_font_description_free
+                                       (new_style->font_desc);
+                       new_style->font_desc = font_desc;
                }
        }
 
                }
        }
 
@@ -5248,9 +5358,9 @@ static GtkWidget *compose_account_option_menu_create(Compose *compose)
                                               ac->account_name, ac->address);
                MENUITEM_ADD(menu, menuitem, name, ac->account_id);
                g_free(name);
                                               ac->account_name, ac->address);
                MENUITEM_ADD(menu, menuitem, name, ac->account_id);
                g_free(name);
-               gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
-                                  GTK_SIGNAL_FUNC(account_activated),
-                                  compose);
+               g_signal_connect(G_OBJECT(menuitem), "activate",
+                                G_CALLBACK(account_activated),
+                                compose);
        }
 
        gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);
        }
 
        gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);
@@ -5348,11 +5458,11 @@ static void compose_set_template_menu(Compose *compose)
                Template *tmpl = (Template *)cur->data;
 
                item = gtk_menu_item_new_with_label(tmpl->name);
                Template *tmpl = (Template *)cur->data;
 
                item = gtk_menu_item_new_with_label(tmpl->name);
-               gtk_menu_append(GTK_MENU(menu), item);
-               gtk_signal_connect(GTK_OBJECT(item), "activate",
-                                  GTK_SIGNAL_FUNC(compose_template_activate_cb),
-                                  compose);
-               gtk_object_set_data(GTK_OBJECT(item), "template", tmpl);
+               gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+               g_signal_connect(G_OBJECT(item), "activate",
+                                G_CALLBACK(compose_template_activate_cb),
+                                compose);
+               g_object_set_data(G_OBJECT(item), "template", tmpl);
                gtk_widget_show(item);
        }
 
                gtk_widget_show(item);
        }
 
@@ -5385,12 +5495,17 @@ void compose_reflect_prefs_pixmap_theme(void)
 static void compose_template_apply(Compose *compose, Template *tmpl,
                                   gboolean replace)
 {
 static void compose_template_apply(Compose *compose, Template *tmpl,
                                   gboolean replace)
 {
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter iter;
        gchar *qmark;
        gchar *parsed_str;
 
        if (!tmpl || !tmpl->value) return;
 
        gchar *qmark;
        gchar *parsed_str;
 
        if (!tmpl || !tmpl->value) return;
 
-       gtk_stext_freeze(GTK_STEXT(compose->text));
+       text = GTK_TEXT_VIEW(compose->text);
+       buffer = gtk_text_view_get_buffer(text);
 
        if (tmpl->subject && *tmpl->subject != '\0')
                gtk_entry_set_text(GTK_ENTRY(compose->subject_entry),
 
        if (tmpl->subject && *tmpl->subject != '\0')
                gtk_entry_set_text(GTK_ENTRY(compose->subject_entry),
@@ -5404,7 +5519,10 @@ static void compose_template_apply(Compose *compose, Template *tmpl,
                compose_entry_append(compose, tmpl->bcc, COMPOSE_BCC);
 
        if (replace)
                compose_entry_append(compose, tmpl->bcc, COMPOSE_BCC);
 
        if (replace)
-               gtkut_stext_clear(GTK_STEXT(compose->text));
+               gtk_text_buffer_set_text(buffer, "\0", 1);
+
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
 
        if ((compose->replyinfo == NULL) && (compose->fwdinfo == NULL)) {
                parsed_str = compose_quote_fmt(compose, NULL, tmpl->value,
 
        if ((compose->replyinfo == NULL) && (compose->fwdinfo == NULL)) {
                parsed_str = compose_quote_fmt(compose, NULL, tmpl->value,
@@ -5429,14 +5547,12 @@ static void compose_template_apply(Compose *compose, Template *tmpl,
                compose_insert_sig(compose, FALSE);
 
        if (replace && parsed_str) {
                compose_insert_sig(compose, FALSE);
 
        if (replace && parsed_str) {
-               gtk_editable_set_position(GTK_EDITABLE(compose->text), 0);
-               gtk_stext_set_point(GTK_STEXT(compose->text), 0);
+               gtk_text_buffer_get_start_iter(buffer, &iter);
+               gtk_text_buffer_place_cursor(buffer, &iter);
        }
 
        if (parsed_str)
                compose_changed_cb(NULL, compose);
        }
 
        if (parsed_str)
                compose_changed_cb(NULL, compose);
-
-       gtk_stext_thaw(GTK_STEXT(compose->text));
 }
 
 static void compose_destroy(Compose *compose)
 }
 
 static void compose_destroy(Compose *compose)
@@ -5576,6 +5692,7 @@ static void compose_attach_property(Compose *compose)
                           ainfo->name ? ainfo->name : "");
 
        for (;;) {
                           ainfo->name ? ainfo->name : "");
 
        for (;;) {
+               const gchar *entry_text;
                gchar *text;
                gchar *cnttype = NULL;
                gchar *file = NULL;
                gchar *text;
                gchar *cnttype = NULL;
                gchar *file = NULL;
@@ -5591,11 +5708,11 @@ static void compose_attach_property(Compose *compose)
                        break;
                }
 
                        break;
                }
 
-               text = gtk_entry_get_text(GTK_ENTRY(attach_prop.mimetype_entry));
-               if (*text != '\0') {
+               entry_text = gtk_entry_get_text(GTK_ENTRY(attach_prop.mimetype_entry));
+               if (*entry_text != '\0') {
                        gchar *p;
 
                        gchar *p;
 
-                       text = g_strstrip(g_strdup(text));
+                       text = g_strstrip(g_strdup(entry_text));
                        if ((p = strchr(text, '/')) && !strchr(p + 1, '/')) {
                                cnttype = g_strdup(text);
                                g_free(text);
                        if ((p = strchr(text, '/')) && !strchr(p + 1, '/')) {
                                cnttype = g_strdup(text);
                                g_free(text);
@@ -5609,13 +5726,13 @@ static void compose_attach_property(Compose *compose)
                menu = gtk_option_menu_get_menu(optmenu);
                menuitem = gtk_menu_get_active(GTK_MENU(menu));
                ainfo->encoding = GPOINTER_TO_INT
                menu = gtk_option_menu_get_menu(optmenu);
                menuitem = gtk_menu_get_active(GTK_MENU(menu));
                ainfo->encoding = GPOINTER_TO_INT
-                       (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+                       (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
 
 
-               text = gtk_entry_get_text(GTK_ENTRY(attach_prop.path_entry));
-               if (*text != '\0') {
-                       if (is_file_exist(text) &&
-                           (size = get_file_size(text)) > 0)
-                               file = g_strdup(text);
+               entry_text = gtk_entry_get_text(GTK_ENTRY(attach_prop.path_entry));
+               if (*entry_text != '\0') {
+                       if (is_file_exist(entry_text) &&
+                           (size = get_file_size(entry_text)) > 0)
+                               file = g_strdup(entry_text);
                        else {
                                alertpanel_error
                                        (_("File doesn't exist or is empty."));
                        else {
                                alertpanel_error
                                        (_("File doesn't exist or is empty."));
@@ -5624,10 +5741,10 @@ static void compose_attach_property(Compose *compose)
                        }
                }
 
                        }
                }
 
-               text = gtk_entry_get_text(GTK_ENTRY(attach_prop.filename_entry));
-               if (*text != '\0') {
+               entry_text = gtk_entry_get_text(GTK_ENTRY(attach_prop.filename_entry));
+               if (*entry_text != '\0') {
                        g_free(ainfo->name);
                        g_free(ainfo->name);
-                       ainfo->name = g_strdup(text);
+                       ainfo->name = g_strdup(entry_text);
                }
 
                if (cnttype) {
                }
 
                if (cnttype) {
@@ -5684,18 +5801,18 @@ static void compose_attach_property_create(gboolean *cancelled)
 
        debug_print("Creating attach_property window...\n");
 
 
        debug_print("Creating attach_property window...\n");
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 480, -1);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 480, -1);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_title(GTK_WINDOW(window), _("Properties"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_title(GTK_WINDOW(window), _("Properties"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(attach_property_delete_event),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(attach_property_key_pressed),
-                          cancelled);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(attach_property_delete_event),
+                        cancelled);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(attach_property_key_pressed),
+                        cancelled);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -5771,12 +5888,12 @@ static void compose_attach_property_create(gboolean *cancelled)
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(attach_property_ok),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(attach_property_cancel),
-                          cancelled);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(attach_property_ok),
+                        cancelled);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(attach_property_cancel),
+                        cancelled);
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
@@ -5812,13 +5929,15 @@ static gint attach_property_delete_event(GtkWidget *widget, GdkEventAny *event,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void attach_property_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                                       gboolean *cancelled)
+static gboolean attach_property_key_pressed(GtkWidget *widget,
+                                           GdkEventKey *event,
+                                           gboolean *cancelled)
 {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
 {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void compose_exec_ext_editor(Compose *compose)
 }
 
 static void compose_exec_ext_editor(Compose *compose)
@@ -6000,14 +6119,12 @@ static void compose_input_cb(gpointer data, gint source,
        waitpid(compose->exteditor_pid, NULL, 0);
 
        if (buf[0] == '0') {            /* success */
        waitpid(compose->exteditor_pid, NULL, 0);
 
        if (buf[0] == '0') {            /* success */
-               GtkSText *text = GTK_STEXT(compose->text);
+               GtkTextView *text = GTK_TEXT_VIEW(compose->text);
+               GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
 
 
-               gtk_stext_freeze(text);
-               gtk_stext_set_point(text, 0);
-               gtk_stext_forward_delete(text, gtk_stext_get_length(text));
+               gtk_text_buffer_set_text(buffer, "\0", 1);
                compose_insert_file(compose, compose->exteditor_file);
                compose_changed_cb(NULL, compose);
                compose_insert_file(compose, compose->exteditor_file);
                compose_changed_cb(NULL, compose);
-               gtk_stext_thaw(text);
 
                if (unlink(compose->exteditor_file) < 0)
                        FILE_OP_ERROR(compose->exteditor_file, "unlink");
 
                if (unlink(compose->exteditor_file) < 0)
                        FILE_OP_ERROR(compose->exteditor_file, "unlink");
@@ -6127,14 +6244,10 @@ static void compose_undo_state_changed(UndoMain *undostruct, gint undo_state,
        }
 }
 
        }
 }
 
-static gint calc_cursor_xpos(GtkSText *text, gint extra, gint char_width)
+static gint calc_cursor_xpos(GtkTextView *text, gint extra, gint char_width)
 {
 {
-       gint cursor_pos;
-
-       cursor_pos = (text->cursor_pos_x - extra) / char_width;
-       cursor_pos = MAX(cursor_pos, 0);
-
-       return cursor_pos;
+#warning FIXME_GTK2
+       return 0;
 }
 
 /* callback functions */
 }
 
 /* callback functions */
@@ -6148,18 +6261,18 @@ static gboolean compose_edit_size_alloc(GtkEditable *widget,
                                        GtkSHRuler *shruler)
 {
        if (prefs_common.show_ruler) {
                                        GtkSHRuler *shruler)
 {
        if (prefs_common.show_ruler) {
-               gint char_width;
+               gint char_width = 0, char_height = 0;
                gint line_width_in_chars;
 
                gint line_width_in_chars;
 
-               char_width = gtkut_get_font_width
-                       (GTK_WIDGET(widget)->style->font);
+               gtkut_get_font_size(GTK_WIDGET(widget),
+                                   &char_width, &char_height);
                line_width_in_chars =
                        (allocation->width - allocation->x) / char_width;
 
                /* got the maximum */
                gtk_ruler_set_range(GTK_RULER(shruler),
                                    0.0, line_width_in_chars,
                line_width_in_chars =
                        (allocation->width - allocation->x) / char_width;
 
                /* got the maximum */
                gtk_ruler_set_range(GTK_RULER(shruler),
                                    0.0, line_width_in_chars,
-                                   calc_cursor_xpos(GTK_STEXT(widget),
+                                   calc_cursor_xpos(GTK_TEXT_VIEW(widget),
                                                     allocation->x,
                                                     char_width),
                                    /*line_width_in_chars*/ char_width);
                                                     allocation->x,
                                                     char_width),
                                    /*line_width_in_chars*/ char_width);
@@ -6191,14 +6304,14 @@ static void attach_selected(GtkCList *clist, gint row, gint column,
                compose_attach_property(compose);
 }
 
                compose_attach_property(compose);
 }
 
-static void attach_button_pressed(GtkWidget *widget, GdkEventButton *event,
-                                 gpointer data)
+static gboolean attach_button_pressed(GtkWidget *widget, GdkEventButton *event,
+                                     gpointer data)
 {
        Compose *compose = (Compose *)data;
        GtkCList *clist = GTK_CLIST(compose->attach_clist);
        gint row, column;
 
 {
        Compose *compose = (Compose *)data;
        GtkCList *clist = GTK_CLIST(compose->attach_clist);
        gint row, column;
 
-       if (!event) return;
+       if (!event) return FALSE;
 
        if (event->button == 3) {
                if ((clist->selection && !clist->selection->next) ||
 
        if (event->button == 3) {
                if ((clist->selection && !clist->selection->next) ||
@@ -6214,20 +6327,23 @@ static void attach_button_pressed(GtkWidget *widget, GdkEventButton *event,
                gtk_menu_popup(GTK_MENU(compose->popupmenu), NULL, NULL,
                               NULL, NULL, event->button, event->time);
        }
                gtk_menu_popup(GTK_MENU(compose->popupmenu), NULL, NULL,
                               NULL, NULL, event->button, event->time);
        }
+
+       return FALSE;
 }
 
 }
 
-static void attach_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                              gpointer data)
+static gboolean attach_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                  gpointer data)
 {
        Compose *compose = (Compose *)data;
 
 {
        Compose *compose = (Compose *)data;
 
-       if (!event) return;
+       if (!event) return FALSE;
 
        switch (event->keyval) {
        case GDK_Delete:
                compose_attach_remove_selected(compose);
                break;
        }
 
        switch (event->keyval) {
        case GDK_Delete:
                compose_attach_remove_selected(compose);
                break;
        }
+       return FALSE;
 }
 
 static void compose_allow_user_actions (Compose *compose, gboolean allow)
 }
 
 static void compose_allow_user_actions (Compose *compose, gboolean allow)
@@ -6467,7 +6583,7 @@ static void compose_template_activate_cb(GtkWidget *widget, gpointer data)
        gchar *msg;
        AlertValue val;
 
        gchar *msg;
        AlertValue val;
 
-       tmpl = gtk_object_get_data(GTK_OBJECT(widget), "template");
+       tmpl = g_object_get_data(G_OBJECT(widget), "template");
        g_return_if_fail(tmpl != NULL);
 
        msg = g_strdup_printf(_("Do you want to apply the template `%s' ?"),
        g_return_if_fail(tmpl != NULL);
 
        msg = g_strdup_printf(_("Do you want to apply the template `%s' ?"),
@@ -6558,44 +6674,299 @@ static void compose_allsel_cb(Compose *compose)
                        (GTK_EDITABLE(compose->focused_editable), 0, -1);
 }
 
                        (GTK_EDITABLE(compose->focused_editable), 0, -1);
 }
 
-static void compose_gtk_stext_action_cb(Compose *compose,
-                                       ComposeCallGtkSTextAction action)
+static void textview_move_beginning_of_line (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       gtk_text_iter_set_line_offset(&ins, 0);
+       gtk_text_buffer_place_cursor(buffer, &ins);
+}
+
+static void textview_move_forward_character (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       if (gtk_text_iter_forward_cursor_position(&ins))
+               gtk_text_buffer_place_cursor(buffer, &ins);
+}
+
+static void textview_move_backward_character (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       if (gtk_text_iter_backward_cursor_position(&ins))
+               gtk_text_buffer_place_cursor(buffer, &ins);
+}
+
+static void textview_move_forward_word (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins;
+       gint count;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       count = gtk_text_iter_inside_word (&ins) ? 2 : 1;
+       if (gtk_text_iter_forward_word_ends(&ins, count)) {
+               gtk_text_iter_backward_word_start(&ins);
+               gtk_text_buffer_place_cursor(buffer, &ins);
+       }
+}
+
+static void textview_move_backward_word (GtkTextView *text)
 {
 {
-       GtkSText *text = GTK_STEXT(compose->text);
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins;
+       gint count;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       count = gtk_text_iter_inside_word (&ins) ? 2 : 1;
+       if (gtk_text_iter_backward_word_starts(&ins, 1))
+               gtk_text_buffer_place_cursor(buffer, &ins);
+}
+
+static void textview_move_end_of_line (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       if (gtk_text_iter_forward_to_line_end(&ins))
+               gtk_text_buffer_place_cursor(buffer, &ins);
+}
+
+static void textview_move_next_line (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins;
+       gint offset;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+#warning FIXME_GTK2 /* should regist current line offset */
+       offset = gtk_text_iter_get_line_offset(&ins);
+       if (gtk_text_iter_forward_line(&ins)) {
+               gtk_text_iter_set_line_offset(&ins, offset);
+               gtk_text_buffer_place_cursor(buffer, &ins);
+       }
+}
+
+static void textview_move_previous_line (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins;
+       gint offset;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+#warning FIXME_GTK2 /* should regist current line offset */
+       offset = gtk_text_iter_get_line_offset(&ins);
+       if (gtk_text_iter_backward_line(&ins)) {
+               gtk_text_iter_set_line_offset(&ins, offset);
+               gtk_text_buffer_place_cursor(buffer, &ins);
+       }
+}
+
+static void textview_delete_forward_character (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins, end_iter;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       end_iter = ins;
+       if (gtk_text_iter_forward_char(&end_iter)) {
+               gtk_text_buffer_delete(buffer, &ins, &end_iter);
+       }
+}
+
+static void textview_delete_backward_character (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins, end_iter;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       end_iter = ins;
+       if (gtk_text_iter_backward_char(&end_iter)) {
+               gtk_text_buffer_delete(buffer, &end_iter, &ins);
+       }
+}
+
+static void textview_delete_forward_word (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins, end_iter;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       end_iter = ins;
+       if (gtk_text_iter_forward_word_end(&end_iter)) {
+               gtk_text_buffer_delete(buffer, &ins, &end_iter);
+       }
+}
+
+static void textview_delete_backward_word (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins, end_iter;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       end_iter = ins;
+       if (gtk_text_iter_backward_word_start(&end_iter)) {
+               gtk_text_buffer_delete(buffer, &end_iter, &ins);
+       }
+}
+
+static void textview_delete_line (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins, start_iter, end_iter;
+       gboolean found;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+
+       start_iter = ins;
+       gtk_text_iter_set_line_offset(&start_iter, 0);
+
+       end_iter = ins;
+       if (gtk_text_iter_ends_line(&end_iter))
+               found = gtk_text_iter_forward_char(&end_iter);
+       else
+               found = gtk_text_iter_forward_to_line_end(&end_iter);
+
+       if (found)
+               gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
+}
+
+static void textview_delete_to_line_end (GtkTextView *text)
+{
+       GtkTextBuffer *buffer;
+       GtkTextMark *mark;
+       GtkTextIter ins, end_iter;
+       gboolean found;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(text));
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &ins, mark);
+       end_iter = ins;
+       if (gtk_text_iter_ends_line(&end_iter))
+               found = gtk_text_iter_forward_char(&end_iter);
+       else
+               found = gtk_text_iter_forward_to_line_end(&end_iter);
+       if (found)
+               gtk_text_buffer_delete(buffer, &ins, &end_iter);
+}
+
+static void compose_advanced_action_cb(Compose *compose,
+                                       ComposeCallAdvancedAction action)
+{
+       GtkTextView *text = GTK_TEXT_VIEW(compose->text);
        static struct {
        static struct {
-               void (*do_action) (GtkSText *text);
+               void (*do_action) (GtkTextView *text);
        } action_table[] = {
        } action_table[] = {
-               {gtk_stext_move_beginning_of_line},
-               {gtk_stext_move_forward_character},
-               {gtk_stext_move_backward_character},
-               {gtk_stext_move_forward_word},
-               {gtk_stext_move_backward_word},
-               {gtk_stext_move_end_of_line},
-               {gtk_stext_move_next_line},
-               {gtk_stext_move_previous_line},
-               {gtk_stext_delete_forward_character},
-               {gtk_stext_delete_backward_character},
-               {gtk_stext_delete_forward_word},
-               {gtk_stext_delete_backward_word},
-               {gtk_stext_delete_line},
-               {gtk_stext_delete_line}, /* gtk_stext_delete_line_n */
-               {gtk_stext_delete_to_line_end}
+               {textview_move_beginning_of_line},
+               {textview_move_forward_character},
+               {textview_move_backward_character},
+               {textview_move_forward_word},
+               {textview_move_backward_word},
+               {textview_move_end_of_line},
+               {textview_move_next_line},
+               {textview_move_previous_line},
+               {textview_delete_forward_character},
+               {textview_delete_backward_character},
+               {textview_delete_forward_word},
+               {textview_delete_backward_word},
+               {textview_delete_line},
+               {NULL}, /* gtk_stext_delete_line_n */
+               {textview_delete_to_line_end}
        };
 
        if (!GTK_WIDGET_HAS_FOCUS(text)) return;
 
        };
 
        if (!GTK_WIDGET_HAS_FOCUS(text)) return;
 
-       if (action >= COMPOSE_CALL_GTK_STEXT_MOVE_BEGINNING_OF_LINE &&
-           action <= COMPOSE_CALL_GTK_STEXT_DELETE_TO_LINE_END)
-               action_table[action].do_action(text);
+       if (action >= COMPOSE_CALL_ADVANCED_ACTION_MOVE_BEGINNING_OF_LINE &&
+           action <= COMPOSE_CALL_ADVANCED_ACTION_DELETE_TO_LINE_END) {
+               if (action_table[action].do_action)
+                       action_table[action].do_action(text);
+               else
+                       g_warning("Not implemented yet.");
+       }
 }
 
 static void compose_grab_focus_cb(GtkWidget *widget, Compose *compose)
 {
 }
 
 static void compose_grab_focus_cb(GtkWidget *widget, Compose *compose)
 {
-       if (GTK_IS_EDITABLE(widget))
+       if (GTK_IS_EDITABLE(widget) || GTK_IS_TEXT_VIEW(widget))
                compose->focused_editable = widget;
 }
 
                compose->focused_editable = widget;
 }
 
-static void compose_changed_cb(GtkEditable *editable, Compose *compose)
+static void compose_changed_cb(GtkTextBuffer *textbuf, Compose *compose)
 {
        if (compose->modified == FALSE) {
                compose->modified = TRUE;
 {
        if (compose->modified == FALSE) {
                compose->modified = TRUE;
@@ -6603,22 +6974,6 @@ static void compose_changed_cb(GtkEditable *editable, Compose *compose)
        }
 }
 
        }
 }
 
-static void compose_button_press_cb(GtkWidget *widget, GdkEventButton *event,
-                                   Compose *compose)
-{
-       gtk_stext_set_point(GTK_STEXT(widget),
-                          gtk_editable_get_position(GTK_EDITABLE(widget)));
-}
-
-#if 0
-static void compose_key_press_cb(GtkWidget *widget, GdkEventKey *event,
-                                Compose *compose)
-{
-       gtk_stext_set_point(GTK_STEXT(widget),
-                          gtk_editable_get_position(GTK_EDITABLE(widget)));
-}
-#endif
-
 #if 0 /* NEW COMPOSE GUI */
 static void compose_toggle_to_cb(gpointer data, guint action,
                                 GtkWidget *widget)
 #if 0 /* NEW COMPOSE GUI */
 static void compose_toggle_to_cb(gpointer data, guint action,
                                 GtkWidget *widget)
@@ -7007,47 +7362,47 @@ static void text_activated(GtkWidget *widget, Compose *compose)
        compose_send_control_enter(compose);
 }
 
        compose_send_control_enter(compose);
 }
 
-static void text_inserted(GtkWidget *widget, const gchar *text,
-                         gint length, gint *position, Compose *compose)
+static void text_inserted(GtkTextBuffer *buffer, GtkTextIter *iter,
+                         const gchar *text, gint len, Compose *compose)
 {
 {
-       GtkEditable *editable = GTK_EDITABLE(widget);
-       gint paste_as_quotation = GPOINTER_TO_INT(gtk_object_get_data
-                               (GTK_OBJECT(widget), "paste_as_quotation"));
+       g_return_if_fail(text);
+
+       gint paste_as_quotation = GPOINTER_TO_INT(g_object_get_data
+                               (G_OBJECT(compose->text), "paste_as_quotation"));
 
 
-       gtk_signal_handler_block_by_func(GTK_OBJECT(widget),
-                                        GTK_SIGNAL_FUNC(text_inserted),
-                                        compose);
+       g_signal_handlers_block_by_func(G_OBJECT(buffer),
+                                       G_CALLBACK(text_inserted),
+                                       compose);
        if (paste_as_quotation) {
                gchar *new_text;
                gchar *qmark;
        if (paste_as_quotation) {
                gchar *new_text;
                gchar *qmark;
-               gint pos;
 
 
-               new_text = g_strndup(text, length);
+               if (len < 0)
+                       len = strlen(text);
+
+               new_text = g_strndup(text, len);
                if (prefs_common.quotemark && *prefs_common.quotemark)
                        qmark = prefs_common.quotemark;
                else
                        qmark = "> ";
                if (prefs_common.quotemark && *prefs_common.quotemark)
                        qmark = prefs_common.quotemark;
                else
                        qmark = "> ";
-               gtk_stext_set_point(GTK_STEXT(widget), *position);
+               gtk_text_buffer_place_cursor(buffer, iter);
                compose_quote_fmt(compose, NULL, "%Q", qmark, new_text);
                compose_quote_fmt(compose, NULL, "%Q", qmark, new_text);
-               pos = gtk_stext_get_point(GTK_STEXT(widget));
-               gtk_editable_set_position(editable, pos);
-               *position = pos;
                g_free(new_text);
                g_free(new_text);
-               gtk_object_set_data(GTK_OBJECT(widget), "paste_as_quotation",
-                                   GINT_TO_POINTER(paste_as_quotation - 1));
+               g_object_set_data(G_OBJECT(compose->text), "paste_as_quotation",
+                                 GINT_TO_POINTER(paste_as_quotation - 1));
        } else
        } else
-               gtk_editable_insert_text(editable, text, length, position);
+               gtk_text_buffer_insert(buffer, iter, text, len);
 
        if (prefs_common.autowrap)
                compose_wrap_line_all_full(compose, TRUE);
 
 
        if (prefs_common.autowrap)
                compose_wrap_line_all_full(compose, TRUE);
 
-       gtk_signal_handler_unblock_by_func(GTK_OBJECT(widget),
-                                          GTK_SIGNAL_FUNC(text_inserted),
-                                          compose);
-       gtk_signal_emit_stop_by_name(GTK_OBJECT(editable), "insert_text");
+       g_signal_handlers_unblock_by_func(G_OBJECT(buffer),
+                                         G_CALLBACK(text_inserted),
+                                         compose);
+       g_signal_stop_emission_by_name(G_OBJECT(buffer), "insert-text");
 
        if (prefs_common.autosave && 
 
        if (prefs_common.autosave && 
-           gtk_stext_get_length(GTK_STEXT(widget)) % prefs_common.autosave_length == 0)
+           gtk_text_buffer_get_char_count(buffer) % prefs_common.autosave_length == 0)
                gtk_timeout_add(500, (GtkFunction) compose_defer_auto_save_draft, compose);
 }
 
                gtk_timeout_add(500, (GtkFunction) compose_defer_auto_save_draft, compose);
 }
 
@@ -7062,7 +7417,7 @@ static gboolean compose_send_control_enter(Compose *compose)
        GdkEvent *ev;
        GdkEventKey *kev;
        GtkItemFactory *ifactory;
        GdkEvent *ev;
        GdkEventKey *kev;
        GtkItemFactory *ifactory;
-       GtkAccelEntry *accel;
+       GtkAccelKey *accel;
        GtkWidget *send_menu;
        GSList *list;
        GdkModifierType ignored_mods =
        GtkWidget *send_menu;
        GSList *list;
        GdkModifierType ignored_mods =
@@ -7078,13 +7433,13 @@ static gboolean compose_send_control_enter(Compose *compose)
 
        ifactory = gtk_item_factory_from_widget(compose->menubar);
        send_menu = gtk_item_factory_get_widget(ifactory, "/Message/Send");
 
        ifactory = gtk_item_factory_from_widget(compose->menubar);
        send_menu = gtk_item_factory_get_widget(ifactory, "/Message/Send");
-       list = gtk_accel_group_entries_from_object(GTK_OBJECT(send_menu));
+       list = gtk_accel_groups_from_object(G_OBJECT(send_menu));
        if (!list)
                return FALSE;
 
        if (!list)
                return FALSE;
 
-       accel = (GtkAccelEntry *)list->data;
-       if (accel && accel->accelerator_key == kev->keyval &&
-           (accel->accelerator_mods & ~ignored_mods) ==
+       accel = (GtkAccelKey *)list->data;
+       if (accel && accel->accel_key == kev->keyval &&
+           (accel->accel_mods & ~ignored_mods) ==
            (kev->state & ~ignored_mods)) {
                compose_send_cb(compose, 0, NULL);
                return TRUE;
            (kev->state & ~ignored_mods)) {
                compose_send_cb(compose, 0, NULL);
                return TRUE;
index 7a1db31e8bc618f54e6316ade01e595c494d4566..a85dfa988ee53119d828fd59b69ce6006f70b8a6 100644 (file)
@@ -218,6 +218,8 @@ struct _AttachInfo
        off_t size;
 };
 
        off_t size;
 };
 
+/*#warning FIXME_GTK2 */
+/* attache_files will be locale encode */
 Compose *compose_new                   (PrefsAccount   *account,
                                         const gchar    *mailto,
                                         GPtrArray      *attach_files);
 Compose *compose_new                   (PrefsAccount   *account,
                                         const gchar    *mailto,
                                         GPtrArray      *attach_files);
index 10e1be6479a1e1aa0cdd763a76e0c48110950050..64bb69a94ffbc51bb5fc402749d8abd3c9702d21 100644 (file)
@@ -126,11 +126,12 @@ static gint edit_person_delete_event(GtkWidget *widget, GdkEventAny *event, gboo
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void edit_person_key_pressed(GtkWidget *widget, GdkEventKey *event, gboolean *cancelled) {
+static gboolean edit_person_key_pressed(GtkWidget *widget, GdkEventKey *event, gboolean *cancelled) {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static gchar *_title_new_ = NULL;
 }
 
 static gchar *_title_new_ = NULL;
@@ -474,18 +475,18 @@ static void addressbook_edit_person_dialog_create( gboolean *cancelled ) {
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, EDITPERSON_WIDTH, EDITPERSON_HEIGHT );
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, EDITPERSON_WIDTH, EDITPERSON_HEIGHT );
        /* gtk_container_set_border_width(GTK_CONTAINER(window), 0); */
        gtk_window_set_title(GTK_WINDOW(window), _("Edit Person Data"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        /* gtk_container_set_border_width(GTK_CONTAINER(window), 0); */
        gtk_window_set_title(GTK_WINDOW(window), _("Edit Person Data"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_person_delete_event),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_person_key_pressed),
-                          cancelled);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_person_delete_event),
+                        cancelled);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_person_key_pressed),
+                        cancelled);
 
        vbox = gtk_vbox_new(FALSE, 4);
        /* gtk_container_set_border_width(GTK_CONTAINER(vbox), BORDER_WIDTH); */
 
        vbox = gtk_vbox_new(FALSE, 4);
        /* gtk_container_set_border_width(GTK_CONTAINER(vbox), BORDER_WIDTH); */
@@ -515,12 +516,12 @@ static void addressbook_edit_person_dialog_create( gboolean *cancelled ) {
        gtk_box_pack_end(GTK_BOX(vnbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
        gtk_box_pack_end(GTK_BOX(vnbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_person_ok), cancelled);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_person_cancel), cancelled);
-       gtk_signal_connect(GTK_OBJECT(notebook), "switch_page",
-                          GTK_SIGNAL_FUNC(edit_person_switch_page), NULL );
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_person_ok), cancelled);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_person_cancel), cancelled);
+       g_signal_connect(G_OBJECT(notebook), "switch_page",
+                        G_CALLBACK(edit_person_switch_page), NULL );
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
@@ -702,7 +703,7 @@ static void addressbook_edit_person_page_email( gint pageNum, gchar *pageLbl ) {
 
        vbuttonbox = gtk_vbutton_box_new();
        gtk_button_box_set_layout( GTK_BUTTON_BOX(vbuttonbox), GTK_BUTTONBOX_START );
 
        vbuttonbox = gtk_vbutton_box_new();
        gtk_button_box_set_layout( GTK_BUTTON_BOX(vbuttonbox), GTK_BUTTONBOX_START );
-       gtk_button_box_set_spacing( GTK_BUTTON_BOX(vbuttonbox), 8 );
+       gtk_box_set_spacing( GTK_BOX(vbuttonbox), 8 );
        gtk_container_set_border_width( GTK_CONTAINER(vbuttonbox), 4 );
        gtk_container_add( GTK_CONTAINER(vboxb), vbuttonbox );
 
        gtk_container_set_border_width( GTK_CONTAINER(vbuttonbox), 4 );
        gtk_container_add( GTK_CONTAINER(vboxb), vbuttonbox );
 
@@ -728,20 +729,20 @@ static void addressbook_edit_person_page_email( gint pageNum, gchar *pageLbl ) {
        gtk_widget_show_all(vbox);
 
        /* Event handlers */
        gtk_widget_show_all(vbox);
 
        /* Event handlers */
-       gtk_signal_connect( GTK_OBJECT(clist), "select_row",
-                       GTK_SIGNAL_FUNC( edit_person_email_list_selected), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonUp), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_email_move_up ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonDown), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_email_move_down ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonDel), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_email_delete ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonMod), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_email_modify ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonAdd), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_email_add ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonClr), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_email_clear ), NULL );
+       g_signal_connect( G_OBJECT(clist), "select_row",
+                         G_CALLBACK( edit_person_email_list_selected), NULL );
+       g_signal_connect( G_OBJECT(buttonUp), "clicked",
+                         G_CALLBACK( edit_person_email_move_up ), NULL );
+       g_signal_connect( G_OBJECT(buttonDown), "clicked",
+                         G_CALLBACK( edit_person_email_move_down ), NULL );
+       g_signal_connect( G_OBJECT(buttonDel), "clicked",
+                         G_CALLBACK( edit_person_email_delete ), NULL );
+       g_signal_connect( G_OBJECT(buttonMod), "clicked",
+                         G_CALLBACK( edit_person_email_modify ), NULL );
+       g_signal_connect( G_OBJECT(buttonAdd), "clicked",
+                         G_CALLBACK( edit_person_email_add ), NULL );
+       g_signal_connect( G_OBJECT(buttonClr), "clicked",
+                         G_CALLBACK( edit_person_email_clear ), NULL );
 
        personeditdlg.clist_email   = clist;
        personeditdlg.entry_email   = entry_email;
 
        personeditdlg.clist_email   = clist;
        personeditdlg.entry_email   = entry_email;
@@ -842,7 +843,7 @@ static void addressbook_edit_person_page_attrib( gint pageNum, gchar *pageLbl )
 
        vbuttonbox = gtk_vbutton_box_new();
        gtk_button_box_set_layout( GTK_BUTTON_BOX(vbuttonbox), GTK_BUTTONBOX_START );
 
        vbuttonbox = gtk_vbutton_box_new();
        gtk_button_box_set_layout( GTK_BUTTON_BOX(vbuttonbox), GTK_BUTTONBOX_START );
-       gtk_button_box_set_spacing( GTK_BUTTON_BOX(vbuttonbox), 8 );
+       gtk_box_set_spacing( GTK_BOX(vbuttonbox), 8 );
        gtk_container_set_border_width( GTK_CONTAINER(vbuttonbox), 4 );
        gtk_container_add( GTK_CONTAINER(vboxb), vbuttonbox );
 
        gtk_container_set_border_width( GTK_CONTAINER(vbuttonbox), 4 );
        gtk_container_add( GTK_CONTAINER(vboxb), vbuttonbox );
 
@@ -862,16 +863,16 @@ static void addressbook_edit_person_page_attrib( gint pageNum, gchar *pageLbl )
        gtk_widget_show_all(vbox);
 
        /* Event handlers */
        gtk_widget_show_all(vbox);
 
        /* Event handlers */
-       gtk_signal_connect( GTK_OBJECT(clist), "select_row",
-                       GTK_SIGNAL_FUNC( edit_person_attrib_list_selected), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonDel), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_attrib_delete ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonMod), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_attrib_modify ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonAdd), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_attrib_add ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonClr), "clicked",
-                       GTK_SIGNAL_FUNC( edit_person_attrib_clear ), NULL );
+       g_signal_connect( G_OBJECT(clist), "select_row",
+                         G_CALLBACK( edit_person_attrib_list_selected), NULL );
+       g_signal_connect( G_OBJECT(buttonDel), "clicked",
+                         G_CALLBACK( edit_person_attrib_delete ), NULL );
+       g_signal_connect( G_OBJECT(buttonMod), "clicked",
+                         G_CALLBACK( edit_person_attrib_modify ), NULL );
+       g_signal_connect( G_OBJECT(buttonAdd), "clicked",
+                         G_CALLBACK( edit_person_attrib_add ), NULL );
+       g_signal_connect( G_OBJECT(buttonClr), "clicked",
+                         G_CALLBACK( edit_person_attrib_clear ), NULL );
 
        personeditdlg.clist_attrib  = clist;
        personeditdlg.entry_atname  = entry_name;
 
        personeditdlg.clist_attrib  = clist;
        personeditdlg.entry_atname  = entry_name;
@@ -968,10 +969,10 @@ ItemPerson *addressbook_edit_person( AddressBookFile *abf, ItemFolder *parent, I
 
        /* Select appropriate start page */
        if( pgMail ) {
 
        /* Select appropriate start page */
        if( pgMail ) {
-               gtk_notebook_set_page( GTK_NOTEBOOK(personeditdlg.notebook), PAGE_EMAIL );
+               gtk_notebook_set_current_page( GTK_NOTEBOOK(personeditdlg.notebook), PAGE_EMAIL );
        }
        else {
        }
        else {
-               gtk_notebook_set_page( GTK_NOTEBOOK(personeditdlg.notebook), PAGE_BASIC );
+               gtk_notebook_set_current_page( GTK_NOTEBOOK(personeditdlg.notebook), PAGE_BASIC );
        }
 
        gtk_clist_select_row( GTK_CLIST(personeditdlg.clist_email), 0, 0 );
        }
 
        gtk_clist_select_row( GTK_CLIST(personeditdlg.clist_email), 0, 0 );
index 518400558ff280447b1df97f8b7677f901e238a1..9b5d9c8bc2f78c92c6916aea7093f2a9f15f68db 100644 (file)
@@ -95,11 +95,12 @@ static gint edit_book_delete_event( GtkWidget *widget, GdkEventAny *event, gbool
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void edit_book_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
+static gboolean edit_book_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void edit_book_file_check( void ) {
 }
 
 static void edit_book_file_check( void ) {
@@ -146,18 +147,18 @@ static void addressbook_edit_book_create( gboolean *cancelled ) {
        GtkWidget *hsbox;
        gint top;
 
        GtkWidget *hsbox;
        gint top;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 450, -1);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 450, -1);
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title(GTK_WINDOW(window), _("Edit Addressbook"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title(GTK_WINDOW(window), _("Edit Addressbook"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_book_delete_event),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_book_key_pressed),
-                          cancelled);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_book_delete_event),
+                        cancelled);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_book_key_pressed),
+                        cancelled);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -210,16 +211,16 @@ static void addressbook_edit_book_create( gboolean *cancelled ) {
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(name_entry), "focus_in_event",
-                          GTK_SIGNAL_FUNC(edit_book_name_focus), NULL );
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_book_ok), cancelled);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_book_cancel), cancelled);
-/*     gtk_signal_connect(GTK_OBJECT(file_btn), "clicked", */
-/*                        GTK_SIGNAL_FUNC(edit_book_file_select), NULL); */
-       gtk_signal_connect(GTK_OBJECT(check_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_book_file_check), NULL);
+       g_signal_connect(G_OBJECT(name_entry), "focus_in_event",
+                        G_CALLBACK(edit_book_name_focus), NULL );
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_book_ok), cancelled);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_book_cancel), cancelled);
+/*     g_signal_connect(G_OBJECT(file_btn), "clicked", */
+/*                      G_CALLBACK(edit_book_file_select), NULL); */
+       g_signal_connect(G_OBJECT(check_btn), "clicked",
+                        G_CALLBACK(edit_book_file_check), NULL);
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
index a86bbf95cfceddb631c3105a4f893fc73f3edb21..e5a7406f491db72b0eb0f4295c03dd0dfee58530 100644 (file)
@@ -116,11 +116,12 @@ static gint edit_group_delete_event(GtkWidget *widget, GdkEventAny *event, gbool
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void edit_group_key_pressed(GtkWidget *widget, GdkEventKey *event, gboolean *cancelled) {
+static gboolean edit_group_key_pressed(GtkWidget *widget, GdkEventKey *event, gboolean *cancelled) {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static gchar *edit_group_format_item_clist( ItemPerson *person, ItemEMail *email ) {
 }
 
 static gchar *edit_group_format_item_clist( ItemPerson *person, ItemEMail *email ) {
@@ -197,22 +198,24 @@ static void edit_group_to_avail( GtkWidget *widget, gpointer data ) {
        }
 }
 
        }
 }
 
-static void edit_group_list_group_button( GtkCList *clist, GdkEventButton *event, gpointer data ) {
-       if( ! event ) return;
+static gboolean edit_group_list_group_button( GtkCList *clist, GdkEventButton *event, gpointer data ) {
+       if( ! event ) return FALSE;
        if( event->button == 1 ) {
                if( event->type == GDK_2BUTTON_PRESS ) {
                        edit_group_to_avail( NULL, NULL );
                }
        }
        if( event->button == 1 ) {
                if( event->type == GDK_2BUTTON_PRESS ) {
                        edit_group_to_avail( NULL, NULL );
                }
        }
+       return FALSE;
 }
 
 }
 
-static void edit_group_list_avail_button( GtkCList *clist, GdkEventButton *event, gpointer data ) {
-       if( ! event ) return;
+static gboolean edit_group_list_avail_button( GtkCList *clist, GdkEventButton *event, gpointer data ) {
+       if( ! event ) return FALSE;
        if( event->button == 1 ) {
                if( event->type == GDK_2BUTTON_PRESS ) {
                        edit_group_to_group( NULL, NULL );
                }
        }
        if( event->button == 1 ) {
                if( event->type == GDK_2BUTTON_PRESS ) {
                        edit_group_to_group( NULL, NULL );
                }
        }
+       return FALSE;
 }
 
 static gint edit_group_list_compare_func( GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2 ) {
 }
 
 static gint edit_group_list_compare_func( GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2 ) {
@@ -258,18 +261,18 @@ static void addressbook_edit_group_create( gboolean *cancelled ) {
        titles[ GROUP_COL_EMAIL   ] = _("E-Mail Address");
        titles[ GROUP_COL_REMARKS ] = _("Remarks");
 
        titles[ GROUP_COL_EMAIL   ] = _("E-Mail Address");
        titles[ GROUP_COL_REMARKS ] = _("Remarks");
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, EDITGROUP_WIDTH, EDITGROUP_HEIGHT );
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, EDITGROUP_WIDTH, EDITGROUP_HEIGHT );
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit Group Data"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit Group Data"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_group_delete_event),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_group_key_pressed),
-                          cancelled);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_group_delete_event),
+                        cancelled);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_group_key_pressed),
+                        cancelled);
 
        vbox = gtk_vbox_new( FALSE, 6 );
        gtk_container_set_border_width(GTK_CONTAINER(vbox), BORDER_WIDTH);
 
        vbox = gtk_vbox_new( FALSE, 6 );
        gtk_container_set_border_width(GTK_CONTAINER(vbox), BORDER_WIDTH);
@@ -371,22 +374,22 @@ static void addressbook_edit_group_create( gboolean *cancelled ) {
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_group_ok), cancelled);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_group_cancel), cancelled);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_group_ok), cancelled);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_group_cancel), cancelled);
 
        gtk_widget_show_all(vbox);
 
        /* Event handlers */
 
        gtk_widget_show_all(vbox);
 
        /* Event handlers */
-       gtk_signal_connect( GTK_OBJECT(buttonGroup), "clicked",
-                       GTK_SIGNAL_FUNC( edit_group_to_group ), NULL );
-       gtk_signal_connect( GTK_OBJECT(buttonAvail), "clicked",
-                       GTK_SIGNAL_FUNC( edit_group_to_avail ), NULL );
-       gtk_signal_connect(GTK_OBJECT(clist_avail), "button_press_event",
-                          GTK_SIGNAL_FUNC(edit_group_list_avail_button), NULL);
-       gtk_signal_connect(GTK_OBJECT(clist_group), "button_press_event",
-                          GTK_SIGNAL_FUNC(edit_group_list_group_button), NULL);
+       g_signal_connect( G_OBJECT(buttonGroup), "clicked",
+                         G_CALLBACK( edit_group_to_group ), NULL );
+       g_signal_connect( G_OBJECT(buttonAvail), "clicked",
+                         G_CALLBACK( edit_group_to_avail ), NULL );
+       g_signal_connect(G_OBJECT(clist_avail), "button_press_event",
+                        G_CALLBACK(edit_group_list_avail_button), NULL);
+       g_signal_connect(G_OBJECT(clist_group), "button_press_event",
+                        G_CALLBACK(edit_group_list_group_button), NULL);
 
        groupeditdlg.window     = window;
        groupeditdlg.ok_btn     = ok_btn;
 
        groupeditdlg.window     = window;
        groupeditdlg.ok_btn     = ok_btn;
index 172ea1d6b6edd7e2a7eeb9ddf80bf77e08d6b5cb..43194e42de5ec0da850f3b5106987339779c7113 100644 (file)
@@ -83,11 +83,12 @@ static gint edit_jpilot_delete_event( GtkWidget *widget, GdkEventAny *event, gbo
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void edit_jpilot_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
+static gboolean edit_jpilot_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void edit_jpilot_ok( GtkWidget *widget, gboolean *cancelled ) {
 }
 
 static void edit_jpilot_ok( GtkWidget *widget, gboolean *cancelled ) {
@@ -195,7 +196,7 @@ static void edit_jpilot_file_check( void ) {
 }
 
 static void edit_jpilot_file_ok( GtkWidget *widget, gpointer data ) {
 }
 
 static void edit_jpilot_file_ok( GtkWidget *widget, gpointer data ) {
-       gchar *sFile;
+       const gchar *sFile;
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
@@ -224,10 +225,10 @@ static void edit_jpilot_file_select_create( AddressFileSelection *afs ) {
 
        fileSelector = gtk_file_selection_new( _("Select JPilot File") );
        gtk_file_selection_hide_fileop_buttons( GTK_FILE_SELECTION(fileSelector) );
 
        fileSelector = gtk_file_selection_new( _("Select JPilot File") );
        gtk_file_selection_hide_fileop_buttons( GTK_FILE_SELECTION(fileSelector) );
-       gtk_signal_connect( GTK_OBJECT (GTK_FILE_SELECTION(fileSelector)->ok_button),
-                             "clicked", GTK_SIGNAL_FUNC (edit_jpilot_file_ok), ( gpointer ) afs );
-       gtk_signal_connect( GTK_OBJECT (GTK_FILE_SELECTION(fileSelector)->cancel_button),
-                             "clicked", GTK_SIGNAL_FUNC (edit_jpilot_file_cancel), ( gpointer ) afs );
+       g_signal_connect( G_OBJECT (GTK_FILE_SELECTION(fileSelector)->ok_button),
+                         "clicked", G_CALLBACK (edit_jpilot_file_ok), ( gpointer ) afs );
+       g_signal_connect( G_OBJECT (GTK_FILE_SELECTION(fileSelector)->cancel_button),
+                         "clicked", G_CALLBACK (edit_jpilot_file_cancel), ( gpointer ) afs );
        afs->fileSelector = fileSelector;
        afs->cancelled = TRUE;
 }
        afs->fileSelector = fileSelector;
        afs->cancelled = TRUE;
 }
@@ -267,18 +268,18 @@ static void addressbook_edit_jpilot_create( gboolean *cancelled ) {
        GtkWidget *statusbar;
        gint top, i;
 
        GtkWidget *statusbar;
        gint top, i;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 450, -1);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 450, -1);
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit JPilot Entry"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit JPilot Entry"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_jpilot_delete_event),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_jpilot_key_pressed),
-                          cancelled);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_jpilot_delete_event),
+                        cancelled);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_jpilot_key_pressed),
+                        cancelled);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -350,14 +351,14 @@ static void addressbook_edit_jpilot_create( gboolean *cancelled ) {
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_jpilot_ok), cancelled);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_jpilot_cancel), cancelled);
-       gtk_signal_connect(GTK_OBJECT(file_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_jpilot_file_select), NULL);
-       gtk_signal_connect(GTK_OBJECT(check_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_jpilot_file_check), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_jpilot_ok), cancelled);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_jpilot_cancel), cancelled);
+       g_signal_connect(G_OBJECT(file_btn), "clicked",
+                        G_CALLBACK(edit_jpilot_file_select), NULL);
+       g_signal_connect(G_OBJECT(check_btn), "clicked",
+                        G_CALLBACK(edit_jpilot_file_check), NULL);
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
index 3fda5c01481bcef35cd1cf78f81dcd891cd251ff..4868fd7636863590a3a62bb47c42ef8676cf5f3c 100644 (file)
@@ -177,7 +177,7 @@ static gboolean edit_ldap_validate( void ) {
 
        /* Switch to page with error */
        if( errorFlag ) {
 
        /* Switch to page with error */
        if( errorFlag ) {
-               gtk_notebook_set_page( GTK_NOTEBOOK(ldapedit.notebook), page );
+               gtk_notebook_set_current_page( GTK_NOTEBOOK(ldapedit.notebook), page );
        }
 
        return errorFlag;
        }
 
        return errorFlag;
@@ -201,11 +201,12 @@ static gint edit_ldap_delete_event( GtkWidget *widget, GdkEventAny *event, gbool
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void edit_ldap_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
+static gboolean edit_ldap_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void edit_ldap_server_check( void ) {
 }
 
 static void edit_ldap_server_check( void ) {
@@ -307,18 +308,18 @@ static void addressbook_edit_ldap_dialog_create( gboolean *cancelled ) {
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 450, -1);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 450, -1);
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit LDAP Server"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit LDAP Server"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_ldap_delete_event),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_ldap_key_pressed),
-                          cancelled);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_ldap_delete_event),
+                        cancelled);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_ldap_key_pressed),
+                        cancelled);
 
        vbox = gtk_vbox_new( FALSE, 6 );
        gtk_widget_show( vbox );
 
        vbox = gtk_vbox_new( FALSE, 6 );
        gtk_widget_show( vbox );
@@ -342,10 +343,10 @@ static void addressbook_edit_ldap_dialog_create( gboolean *cancelled ) {
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_ok), cancelled);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_cancel), cancelled);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_ldap_ok), cancelled);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_ldap_cancel), cancelled);
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
@@ -419,7 +420,7 @@ static void addressbook_edit_ldap_page_basic( gint pageNum, gchar *pageLbl ) {
        spinbtn_port_adj = gtk_adjustment_new (389, 1, 65535, 100, 1000, 1000);
        spinbtn_port = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_port_adj), 1, 0);
        gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_port, FALSE, FALSE, 0);
        spinbtn_port_adj = gtk_adjustment_new (389, 1, 65535, 100, 1000, 1000);
        spinbtn_port = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_port_adj), 1, 0);
        gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_port, FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_port, 64, -1);
+       gtk_widget_set_size_request (spinbtn_port, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_port), TRUE);
        gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_port), TRUE);
        gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
@@ -441,10 +442,10 @@ static void addressbook_edit_ldap_page_basic( gint pageNum, gchar *pageLbl ) {
        gtk_table_attach(GTK_TABLE(table), lookdn_btn, 2, 3, top, (top + 1), GTK_FILL, 0, 3, 0);
 
        /* Signal handlers */
        gtk_table_attach(GTK_TABLE(table), lookdn_btn, 2, 3, top, (top + 1), GTK_FILL, 0, 3, 0);
 
        /* Signal handlers */
-       gtk_signal_connect(GTK_OBJECT(check_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_server_check), NULL);
-       gtk_signal_connect(GTK_OBJECT(lookdn_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_basedn_select), NULL);
+       g_signal_connect(G_OBJECT(check_btn), "clicked",
+                        G_CALLBACK(edit_ldap_server_check), NULL);
+       g_signal_connect(G_OBJECT(lookdn_btn), "clicked",
+                        G_CALLBACK(edit_ldap_basedn_select), NULL);
 
        /* Done */
        gtk_widget_show_all(vbox);
 
        /* Done */
        gtk_widget_show_all(vbox);
@@ -507,7 +508,7 @@ static void addressbook_edit_ldap_page_search( gint pageNum, gchar *pageLbl ) {
                LDAPCTL_DFL_QUERY_AGE, 1, LDAPCTL_MAX_QUERY_AGE, 10, 1000, 1000 );
        spinbtn_queryage = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_queryage_adj), 1, 0);
        gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_queryage, FALSE, FALSE, 0);
                LDAPCTL_DFL_QUERY_AGE, 1, LDAPCTL_MAX_QUERY_AGE, 10, 1000, 1000 );
        spinbtn_queryage = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_queryage_adj), 1, 0);
        gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_queryage, FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_queryage, 64, -1);
+       gtk_widget_set_size_request (spinbtn_queryage, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_queryage), TRUE);
        gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_queryage), TRUE);
        gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
@@ -520,8 +521,8 @@ static void addressbook_edit_ldap_page_search( gint pageNum, gchar *pageLbl ) {
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
 
        /* Signal handlers */
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
 
        /* Signal handlers */
-       gtk_signal_connect(GTK_OBJECT(reset_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_search_reset), NULL);
+       g_signal_connect(G_OBJECT(reset_btn), "clicked",
+                        G_CALLBACK(edit_ldap_search_reset), NULL);
 
        /* Done */
        gtk_widget_show_all(vbox);
 
        /* Done */
        gtk_widget_show_all(vbox);
@@ -590,7 +591,7 @@ static void addressbook_edit_ldap_page_extended( gint pageNum, gchar *pageLbl )
        spinbtn_timeout_adj = gtk_adjustment_new (0, 0, 300, 1, 10, 10);
        spinbtn_timeout = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_timeout_adj), 1, 0);
        gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_timeout, FALSE, FALSE, 0);
        spinbtn_timeout_adj = gtk_adjustment_new (0, 0, 300, 1, 10, 10);
        spinbtn_timeout = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_timeout_adj), 1, 0);
        gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_timeout, FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_timeout, 64, -1);
+       gtk_widget_set_size_request (spinbtn_timeout, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_timeout), TRUE);
        gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_timeout), TRUE);
        gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
@@ -605,7 +606,7 @@ static void addressbook_edit_ldap_page_extended( gint pageNum, gchar *pageLbl )
        spinbtn_maxentry_adj = gtk_adjustment_new (0, 0, 500, 1, 10, 10);
        spinbtn_maxentry = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_maxentry_adj), 1, 0);
        gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_maxentry, FALSE, FALSE, 0);
        spinbtn_maxentry_adj = gtk_adjustment_new (0, 0, 500, 1, 10, 10);
        spinbtn_maxentry = gtk_spin_button_new(GTK_ADJUSTMENT (spinbtn_maxentry_adj), 1, 0);
        gtk_box_pack_start (GTK_BOX (hbox_spin), spinbtn_maxentry, FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_maxentry, 64, -1);
+       gtk_widget_set_size_request (spinbtn_maxentry, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_maxentry), TRUE);
        gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_maxentry), TRUE);
        gtk_table_attach(GTK_TABLE(table), hbox_spin, 1, 2, top, (top + 1),
                GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
@@ -640,7 +641,7 @@ void edit_ldap_set_optmenu( GtkOptionMenu *optmenu, const gint value ) {
        menu = gtk_option_menu_get_menu(optmenu);
        for( cur = GTK_MENU_SHELL(menu)->children; cur != NULL; cur = cur->next ) {
                menuitem = GTK_WIDGET(cur->data);
        menu = gtk_option_menu_get_menu(optmenu);
        for( cur = GTK_MENU_SHELL(menu)->children; cur != NULL; cur = cur->next ) {
                menuitem = GTK_WIDGET(cur->data);
-               menuVal = GPOINTER_TO_INT(gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+               menuVal = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menuitem), "user_data"));
                if( menuVal == value ) {
                        gtk_option_menu_set_history(optmenu, n);
                        return;
                if( menuVal == value ) {
                        gtk_option_menu_set_history(optmenu, n);
                        return;
@@ -658,7 +659,7 @@ gint edit_ldap_get_optmenu( GtkOptionMenu *optmenu ) {
 
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
 
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
-       return GPOINTER_TO_INT(gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+       return GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menuitem), "user_data"));
 }
 
 /**
 }
 
 /**
@@ -809,7 +810,7 @@ AdapterDSource *addressbook_edit_ldap( AddressIndex *addrIndex, AdapterDSource *
 
        if (!ldapedit.window)
                addressbook_edit_ldap_create(&cancelled);
 
        if (!ldapedit.window)
                addressbook_edit_ldap_create(&cancelled);
-       gtk_notebook_set_page( GTK_NOTEBOOK(ldapedit.notebook), PAGE_BASIC );
+       gtk_notebook_set_current_page( GTK_NOTEBOOK(ldapedit.notebook), PAGE_BASIC );
        gtk_widget_grab_focus(ldapedit.ok_btn);
        gtk_widget_grab_focus(ldapedit.entry_name);
        gtk_widget_show(ldapedit.window);
        gtk_widget_grab_focus(ldapedit.ok_btn);
        gtk_widget_grab_focus(ldapedit.entry_name);
        gtk_widget_show(ldapedit.window);
index 7b144c40e97b172362e2cefe0640821a45ccb699..75580077c418e01f4b95242556b0a7299fec7a9e 100644 (file)
@@ -79,11 +79,12 @@ static gint edit_ldap_bdn_delete_event( GtkWidget *widget, GdkEventAny *event, g
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void edit_ldap_bdn_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
+static gboolean edit_ldap_bdn_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
        if (event && event->keyval == GDK_Escape) {
                ldapedit_basedn_cancelled = TRUE;
                gtk_main_quit();
        }
        if (event && event->keyval == GDK_Escape) {
                ldapedit_basedn_cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void edit_ldap_bdn_ok( GtkWidget *widget, gboolean *cancelled ) {
 }
 
 static void edit_ldap_bdn_ok( GtkWidget *widget, gboolean *cancelled ) {
@@ -106,14 +107,15 @@ static void edit_ldap_bdn_list_select( GtkCList *clist, gint row, gint column, G
        }
 }
 
        }
 }
 
-static void edit_ldap_bdn_list_button( GtkCList *clist, GdkEventButton *event, gpointer data ) {
-       if( ! event ) return;
+static gboolean edit_ldap_bdn_list_button( GtkCList *clist, GdkEventButton *event, gpointer data ) {
+       if( ! event ) return FALSE;
        if( event->button == 1 ) {
                if( event->type == GDK_2BUTTON_PRESS ) {
                        ldapedit_basedn_cancelled = FALSE;
                        gtk_main_quit();
                }
        }
        if( event->button == 1 ) {
                if( event->type == GDK_2BUTTON_PRESS ) {
                        ldapedit_basedn_cancelled = FALSE;
                        gtk_main_quit();
                }
        }
+       return FALSE;
 }
 
 static void edit_ldap_bdn_create(void) {
 }
 
 static void edit_ldap_bdn_create(void) {
@@ -135,16 +137,16 @@ static void edit_ldap_bdn_create(void) {
        GtkWidget *statusbar;
        gint top;
 
        GtkWidget *statusbar;
        gint top;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 300, 270);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 300, 270);
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit LDAP - Select Search Base"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit LDAP - Select Search Base"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_delete_event), NULL );
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_key_pressed), NULL );
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_ldap_bdn_delete_event), NULL );
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_ldap_bdn_key_pressed), NULL );
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -218,14 +220,14 @@ static void edit_ldap_bdn_create(void) {
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_ok), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_cancel), NULL);
-       gtk_signal_connect(GTK_OBJECT(basedn_list), "select_row",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_list_select), NULL);
-       gtk_signal_connect(GTK_OBJECT(basedn_list), "button_press_event",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_list_button), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_ldap_bdn_ok), NULL);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_ldap_bdn_cancel), NULL);
+       g_signal_connect(G_OBJECT(basedn_list), "select_row",
+                        G_CALLBACK(edit_ldap_bdn_list_select), NULL);
+       g_signal_connect(G_OBJECT(basedn_list), "button_press_event",
+                        G_CALLBACK(edit_ldap_bdn_list_button), NULL);
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
index 28bbc18a4e49bb8b834f95a11922958fa8425c29..a9b61c2347f8a85448f480877ecb3e1de5f12aa6 100644 (file)
@@ -102,7 +102,7 @@ static void edit_vcard_file_check( void ) {
 }
 
 static void edit_vcard_file_ok( GtkWidget *widget, gpointer data ) {
 }
 
 static void edit_vcard_file_ok( GtkWidget *widget, gpointer data ) {
-       gchar *sFile;
+       const gchar *sFile;
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
@@ -131,10 +131,10 @@ static void edit_vcard_file_select_create( AddressFileSelection *afs ) {
 
        fileSelector = gtk_file_selection_new( _("Select vCard File") );
        gtk_file_selection_hide_fileop_buttons( GTK_FILE_SELECTION(fileSelector) );
 
        fileSelector = gtk_file_selection_new( _("Select vCard File") );
        gtk_file_selection_hide_fileop_buttons( GTK_FILE_SELECTION(fileSelector) );
-       gtk_signal_connect( GTK_OBJECT (GTK_FILE_SELECTION(fileSelector)->ok_button),
-                             "clicked", GTK_SIGNAL_FUNC (edit_vcard_file_ok), ( gpointer ) afs );
-       gtk_signal_connect( GTK_OBJECT (GTK_FILE_SELECTION(fileSelector)->cancel_button),
-                             "clicked", GTK_SIGNAL_FUNC (edit_vcard_file_cancel), ( gpointer ) afs );
+       g_signal_connect( G_OBJECT (GTK_FILE_SELECTION(fileSelector)->ok_button),
+                         "clicked", G_CALLBACK (edit_vcard_file_ok), ( gpointer ) afs );
+       g_signal_connect( G_OBJECT (GTK_FILE_SELECTION(fileSelector)->cancel_button),
+                         "clicked", G_CALLBACK (edit_vcard_file_cancel), ( gpointer ) afs );
        afs->fileSelector = fileSelector;
        afs->cancelled = TRUE;
 }
        afs->fileSelector = fileSelector;
        afs->cancelled = TRUE;
 }
@@ -158,11 +158,12 @@ static gint edit_vcard_delete_event( GtkWidget *widget, GdkEventAny *event, gboo
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void edit_vcard_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
+static gboolean edit_vcard_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void addressbook_edit_vcard_create( gboolean *cancelled ) {
 }
 
 static void addressbook_edit_vcard_create( gboolean *cancelled ) {
@@ -182,18 +183,18 @@ static void addressbook_edit_vcard_create( gboolean *cancelled ) {
        GtkWidget *hsbox;
        gint top;
 
        GtkWidget *hsbox;
        gint top;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 450, -1);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 450, -1);
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title(GTK_WINDOW(window), _("Edit vCard Entry"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title(GTK_WINDOW(window), _("Edit vCard Entry"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_vcard_delete_event),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_vcard_key_pressed),
-                          cancelled);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_vcard_delete_event),
+                        cancelled);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_vcard_key_pressed),
+                        cancelled);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -245,14 +246,14 @@ static void addressbook_edit_vcard_create( gboolean *cancelled ) {
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_vcard_ok), cancelled);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_vcard_cancel), cancelled);
-       gtk_signal_connect(GTK_OBJECT(file_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_vcard_file_select), NULL);
-       gtk_signal_connect(GTK_OBJECT(check_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_vcard_file_check), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_vcard_ok), cancelled);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_vcard_cancel), cancelled);
+       g_signal_connect(G_OBJECT(file_btn), "clicked",
+                        G_CALLBACK(edit_vcard_file_select), NULL);
+       g_signal_connect(G_OBJECT(check_btn), "clicked",
+                        G_CALLBACK(edit_vcard_file_check), NULL);
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
index 1efa08028cc6129a5963355866b049d2fe929e51..5c222d3b5e30ae9e7daaa519c2392926928849c6 100644 (file)
@@ -323,7 +323,7 @@ static void export_html_browse( GtkWidget *widget, gpointer data ) {
  * \param data   User data.
  */
 static void exp_html_file_ok( GtkWidget *widget, gpointer data ) {
  * \param data   User data.
  */
 static void exp_html_file_ok( GtkWidget *widget, gpointer data ) {
-       gchar *sFile;
+       const gchar *sFile;
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
@@ -682,7 +682,7 @@ static void export_html_dialog_create( void ) {
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_widget_set_usize(window, EXPORTHTML_WIDTH, EXPORTHTML_HEIGHT );
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window),
        gtk_widget_set_usize(window, EXPORTHTML_WIDTH, EXPORTHTML_HEIGHT );
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window),
index 7d9bb26df76bdca02cc967c00061cf867f3760b6..00a2b360991968576e4b7072eec0b8da68f8bcac 100644 (file)
@@ -335,7 +335,7 @@ static void export_ldif_next( GtkWidget *widget ) {
  * \param data   User data.
  */
 static void exp_ldif_file_ok( GtkWidget *widget, gpointer data ) {
  * \param data   User data.
  */
 static void exp_ldif_file_ok( GtkWidget *widget, gpointer data ) {
-       gchar *sFile;
+       const gchar *sFile;
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
@@ -703,7 +703,7 @@ static void export_ldif_dialog_create( void ) {
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_widget_set_usize(window, EXPORTLDIF_WIDTH, EXPORTLDIF_HEIGHT );
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window),
        gtk_widget_set_usize(window, EXPORTLDIF_WIDTH, EXPORTLDIF_HEIGHT );
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window),
index a0886c6a4bb1e98c363f82b967abb26d03231f2a..7859b31a3950975af603324ff5b262e82e4f8861 100644 (file)
@@ -48,6 +48,7 @@
 #include "manage_window.h"
 #include "folder.h"
 #include "utils.h"
 #include "manage_window.h"
 #include "folder.h"
 #include "utils.h"
+#include "codeconv.h"
 
 static GtkWidget *window;
 static GtkWidget *src_entry;
 
 static GtkWidget *window;
 static GtkWidget *src_entry;
@@ -64,7 +65,7 @@ static void export_cancel_cb(GtkWidget *widget, gpointer data);
 static void export_srcsel_cb(GtkWidget *widget, gpointer data);
 static void export_filesel_cb(GtkWidget *widget, gpointer data);
 static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data);
 static void export_srcsel_cb(GtkWidget *widget, gpointer data);
 static void export_filesel_cb(GtkWidget *widget, gpointer data);
 static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data);
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
 
 gint export_mbox(FolderItem *default_src)
 {
 
 gint export_mbox(FolderItem *default_src)
 {
@@ -94,18 +95,30 @@ gint export_mbox(FolderItem *default_src)
        gtk_main();
 
        if (export_ack) {
        gtk_main();
 
        if (export_ack) {
-               gchar *srcdir, *mbox;
+               const gchar *srcdir, *utf8mbox;
                FolderItem *src;
 
                srcdir = gtk_entry_get_text(GTK_ENTRY(src_entry));
                FolderItem *src;
 
                srcdir = gtk_entry_get_text(GTK_ENTRY(src_entry));
-               mbox = gtk_entry_get_text(GTK_ENTRY(file_entry));
+               utf8mbox = gtk_entry_get_text(GTK_ENTRY(file_entry));
+               if (utf8mbox && *utf8mbox) {
+                       const gchar *src_codeset = CS_UTF_8;
+                       const gchar *dest_codeset = conv_get_current_charset_str();
+                       gchar *mbox;
+
+#warning FIXME_GTK2 /* should we use g_filename_from_utf8()? */
+                       mbox = conv_codeset_strdup(utf8mbox, src_codeset, dest_codeset);
+                       if (!mbox) {
+                               g_warning("faild to convert character set\n");
+                               mbox = g_strdup(utf8mbox);
+                       }
 
 
-               if (mbox && *mbox) {
                        src = folder_find_item_from_identifier(srcdir);
                        if (!src)
                                g_warning("Can't find the folder.\n");
                        else
                                ok = export_to_mbox(src, mbox);
                        src = folder_find_item_from_identifier(srcdir);
                        if (!src)
                                g_warning("Can't find the folder.\n");
                        else
                                ok = export_to_mbox(src, mbox);
+
+                       g_free(mbox);
                }
        }
 
                }
        }
 
@@ -124,16 +137,16 @@ static void export_create(void)
        GtkWidget *src_label;
        GtkWidget *confirm_area;
 
        GtkWidget *src_label;
        GtkWidget *confirm_area;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), _("Export"));
        gtk_container_set_border_width(GTK_CONTAINER(window), 5);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, FALSE);
        gtk_window_set_title(GTK_WINDOW(window), _("Export"));
        gtk_container_set_border_width(GTK_CONTAINER(window), 5);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, FALSE);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(delete_event), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(delete_event), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox = gtk_vbox_new(FALSE, 4);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox = gtk_vbox_new(FALSE, 4);
@@ -152,7 +165,7 @@ static void export_create(void)
        gtk_container_set_border_width(GTK_CONTAINER(table), 8);
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
        gtk_table_set_col_spacings(GTK_TABLE(table), 8);
        gtk_container_set_border_width(GTK_CONTAINER(table), 8);
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
        gtk_table_set_col_spacings(GTK_TABLE(table), 8);
-       gtk_widget_set_usize(table, 420, -1);
+       gtk_widget_set_size_request(table, 420, -1);
 
        src_label = gtk_label_new(_("Source dir:"));
        gtk_table_attach(GTK_TABLE(table), src_label, 0, 1, 0, 1,
 
        src_label = gtk_label_new(_("Source dir:"));
        gtk_table_attach(GTK_TABLE(table), src_label, 0, 1, 0, 1,
@@ -175,14 +188,14 @@ static void export_create(void)
        src_button = gtk_button_new_with_label(_(" Select... "));
        gtk_table_attach(GTK_TABLE(table), src_button, 2, 3, 0, 1,
                         0, 0, 0, 0);
        src_button = gtk_button_new_with_label(_(" Select... "));
        gtk_table_attach(GTK_TABLE(table), src_button, 2, 3, 0, 1,
                         0, 0, 0, 0);
-       gtk_signal_connect(GTK_OBJECT(src_button), "clicked",
-                          GTK_SIGNAL_FUNC(export_srcsel_cb), NULL);
+       g_signal_connect(G_OBJECT(src_button), "clicked",
+                        G_CALLBACK(export_srcsel_cb), NULL);
 
        file_button = gtk_button_new_with_label(_(" Select... "));
        gtk_table_attach(GTK_TABLE(table), file_button, 2, 3, 1, 2,
                         0, 0, 0, 0);
 
        file_button = gtk_button_new_with_label(_(" Select... "));
        gtk_table_attach(GTK_TABLE(table), file_button, 2, 3, 1, 2,
                         0, 0, 0, 0);
-       gtk_signal_connect(GTK_OBJECT(file_button), "clicked",
-                          GTK_SIGNAL_FUNC(export_filesel_cb), NULL);
+       g_signal_connect(G_OBJECT(file_button), "clicked",
+                        G_CALLBACK(export_filesel_cb), NULL);
 
        gtkut_button_set_create(&confirm_area,
                                &ok_button,     _("OK"),
 
        gtkut_button_set_create(&confirm_area,
                                &ok_button,     _("OK"),
@@ -191,10 +204,10 @@ static void export_create(void)
        gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_button);
 
        gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_button);
 
-       gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
-                          GTK_SIGNAL_FUNC(export_ok_cb), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
-                          GTK_SIGNAL_FUNC(export_cancel_cb), NULL);
+       g_signal_connect(G_OBJECT(ok_button), "clicked",
+                        G_CALLBACK(export_ok_cb), NULL);
+       g_signal_connect(G_OBJECT(cancel_button), "clicked",
+                        G_CALLBACK(export_cancel_cb), NULL);
 
        gtk_widget_show_all(window);
 }
 
        gtk_widget_show_all(window);
 }
@@ -218,7 +231,20 @@ static void export_filesel_cb(GtkWidget *widget, gpointer data)
        gchar *filename;
 
        filename = filesel_select_file(_("Select exporting file"), NULL);
        gchar *filename;
 
        filename = filesel_select_file(_("Select exporting file"), NULL);
-       if (filename)
+       if (!filename) return;
+
+       if (g_getenv ("G_BROKEN_FILENAMES")) {
+               const gchar *oldstr = filename;
+               filename = conv_codeset_strdup (filename,
+                                               conv_get_current_charset_str(),
+                                               CS_UTF_8);
+               if (!filename) {
+                       g_warning("export_filesel_cb(): faild to convert character set.");
+                       filename = g_strdup(oldstr);
+               }
+               gtk_entry_set_text(GTK_ENTRY(file_entry), filename);
+               g_free(filename);
+       } else
                gtk_entry_set_text(GTK_ENTRY(file_entry), filename);
 }
 
                gtk_entry_set_text(GTK_ENTRY(file_entry), filename);
 }
 
@@ -237,8 +263,9 @@ static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data)
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                export_cancel_cb(NULL, NULL);
 {
        if (event && event->keyval == GDK_Escape)
                export_cancel_cb(NULL, NULL);
+       return FALSE;
 }
 }
index c352228dfe90eb2d27431d1ac3dbabf5af366164..7a75f683fc3764a3b2e0bec29db2177f716c2d4c 100644 (file)
@@ -211,7 +211,8 @@ struct _FolderClass
        GSList          *(*get_msginfos)        (Folder         *folder,
                                                 FolderItem     *item,
                                                 MsgNumberList  *msgnum_list);
        GSList          *(*get_msginfos)        (Folder         *folder,
                                                 FolderItem     *item,
                                                 MsgNumberList  *msgnum_list);
-       gchar           *(*fetch_msg)           (Folder         *folder,
+       /* return value is locale charset */
+       gchar           *(*fetch_msg)           (Folder         *folder,
                                                 FolderItem     *item,
                                                 gint            num);
        gint            (*add_msg)              (Folder         *folder,
                                                 FolderItem     *item,
                                                 gint            num);
        gint            (*add_msg)              (Folder         *folder,
@@ -268,8 +269,8 @@ struct _FolderItem
 {
        SpecialFolderItemType stype;
 
 {
        SpecialFolderItemType stype;
 
-       gchar *name;
-       gchar *path;
+       gchar *name; /* UTF-8 */
+       gchar *path; /* UTF-8 */
 
        time_t mtime;
 
 
        time_t mtime;
 
@@ -407,6 +408,7 @@ FolderItem *folder_get_default_processing (void);
 void folder_set_missing_folders                (void);
 void folder_unref_account_all          (PrefsAccount   *account);
 
 void folder_set_missing_folders                (void);
 void folder_unref_account_all          (PrefsAccount   *account);
 
+/* return value is locale encoded file name */
 gchar *folder_item_get_path            (FolderItem     *item);
 
 gint   folder_item_open                        (FolderItem     *item);
 gchar *folder_item_get_path            (FolderItem     *item);
 
 gint   folder_item_open                        (FolderItem     *item);
@@ -418,6 +420,7 @@ MsgInfo *folder_item_get_msginfo    (FolderItem     *item,
 MsgInfo *folder_item_get_msginfo_by_msgid(FolderItem   *item,
                                         const gchar    *msgid);
 GSList *folder_item_get_msg_list       (FolderItem     *item);
 MsgInfo *folder_item_get_msginfo_by_msgid(FolderItem   *item,
                                         const gchar    *msgid);
 GSList *folder_item_get_msg_list       (FolderItem     *item);
+/* return value is locale charset */
 gchar *folder_item_fetch_msg           (FolderItem     *item,
                                         gint            num);
 gint   folder_item_add_msg             (FolderItem     *dest,
 gchar *folder_item_fetch_msg           (FolderItem     *item,
                                         gint            num);
 gint   folder_item_add_msg             (FolderItem     *dest,
@@ -448,6 +451,7 @@ void        folder_item_change_msg_flags    (FolderItem     *item,
                                         MsgPermFlags    newflags);
 gboolean folder_item_is_msg_changed    (FolderItem     *item,
                                         MsgInfo        *msginfo);
                                         MsgPermFlags    newflags);
 gboolean folder_item_is_msg_changed    (FolderItem     *item,
                                         MsgInfo        *msginfo);
+/* return value is locale chaset */
 gchar *folder_item_get_cache_file      (FolderItem     *item);
 gchar *folder_item_get_mark_file       (FolderItem     *item);
 gchar * folder_item_get_identifier     (FolderItem * item);
 gchar *folder_item_get_cache_file      (FolderItem     *item);
 gchar *folder_item_get_mark_file       (FolderItem     *item);
 gchar * folder_item_get_identifier     (FolderItem * item);
index 0c26393086db939001ceaf552b22f26a6785bfdc..1e5138c162cb614b9ba2de77c71cd1a34091fc1f 100644 (file)
@@ -83,7 +83,7 @@ static void foldersel_activated       (void);
 static gint delete_event       (GtkWidget      *widget,
                                 GdkEventAny    *event,
                                 gpointer        data);
 static gint delete_event       (GtkWidget      *widget,
                                 GdkEventAny    *event,
                                 gpointer        data);
-static void key_pressed                (GtkWidget      *widget,
+static gboolean key_pressed    (GtkWidget      *widget,
                                 GdkEventKey    *event,
                                 gpointer        data);
 
                                 GdkEventKey    *event,
                                 gpointer        data);
 
@@ -144,19 +144,19 @@ static void foldersel_create(void)
        GtkWidget *scrolledwin;
        GtkWidget *confirm_area;
 
        GtkWidget *scrolledwin;
        GtkWidget *confirm_area;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), _("Select folder"));
        gtk_window_set_title(GTK_WINDOW(window), _("Select folder"));
-       gtk_widget_set_usize(window, 300, 400);
+       gtk_widget_set_size_request(window, 300, 400);
        gtk_container_set_border_width(GTK_CONTAINER(window), BORDER_WIDTH);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE);
        gtk_window_set_wmclass
                (GTK_WINDOW(window), "folder_selection", "Sylpheed");
        gtk_container_set_border_width(GTK_CONTAINER(window), BORDER_WIDTH);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE);
        gtk_window_set_wmclass
                (GTK_WINDOW(window), "folder_selection", "Sylpheed");
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(delete_event), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(delete_event), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox = gtk_vbox_new(FALSE, 4);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox = gtk_vbox_new(FALSE, 4);
@@ -179,15 +179,15 @@ static void foldersel_create(void)
        gtk_clist_set_compare_func(GTK_CLIST(ctree), foldersel_clist_compare);
        GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(ctree)->column[0].button,
                               GTK_CAN_FOCUS);
        gtk_clist_set_compare_func(GTK_CLIST(ctree), foldersel_clist_compare);
        GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(ctree)->column[0].button,
                               GTK_CAN_FOCUS);
-       /* gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row",
-                          GTK_SIGNAL_FUNC(foldersel_selected), NULL); */
-       gtk_signal_connect(GTK_OBJECT(ctree), "select_row",
-                          GTK_SIGNAL_FUNC(foldersel_selected), NULL);
+       /* g_signal_connect(G_OBJECT(ctree), "tree_select_row",
+                           G_CALLBACK(foldersel_selected), NULL); */
+       g_signal_connect(G_OBJECT(ctree), "select_row",
+                        G_CALLBACK(foldersel_selected), NULL);
 
        entry = gtk_entry_new();
        gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
 
        entry = gtk_entry_new();
        gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(entry), "activate",
-                          GTK_SIGNAL_FUNC(foldersel_activated), NULL);
+       g_signal_connect(G_OBJECT(entry), "activate",
+                        G_CALLBACK(foldersel_activated), NULL);
 
        gtkut_button_set_create(&confirm_area,
                                &ok_button,     _("OK"),
 
        gtkut_button_set_create(&confirm_area,
                                &ok_button,     _("OK"),
@@ -197,10 +197,10 @@ static void foldersel_create(void)
        gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_button);
 
        gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_button);
 
-       gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
-                          GTK_SIGNAL_FUNC(foldersel_ok), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
-                          GTK_SIGNAL_FUNC(foldersel_cancel), NULL);
+       g_signal_connect(G_OBJECT(ok_button), "clicked",
+                        G_CALLBACK(foldersel_ok), NULL);
+       g_signal_connect(G_OBJECT(cancel_button), "clicked",
+                        G_CALLBACK(foldersel_cancel), NULL);
 
        gtk_widget_show_all(window);
 }
 
        gtk_widget_show_all(window);
 }
@@ -347,10 +347,11 @@ static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data)
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                foldersel_cancel(NULL, NULL);
 {
        if (event && event->keyval == GDK_Escape)
                foldersel_cancel(NULL, NULL);
+       return FALSE;
 }
 
 static gint foldersel_clist_compare(GtkCList *clist,
 }
 
 static gint foldersel_clist_compare(GtkCList *clist,
index dc1d1bb774451d89e678277666520164fce54f50..e8f886f4914bd7b6d6a8608d0a10499690e87ff8 100644 (file)
@@ -78,9 +78,6 @@ typedef enum
 
 static GList *folderview_list = NULL;
 
 
 static GList *folderview_list = NULL;
 
-static GdkFont *normalfont;
-static GdkFont *boldfont;
-
 static GtkStyle *normal_style;
 static GtkStyle *normal_color_style;
 static GtkStyle *bold_style;
 static GtkStyle *normal_style;
 static GtkStyle *normal_color_style;
 static GtkStyle *bold_style;
@@ -158,13 +155,13 @@ static gint folderview_compare_name       (gconstpointer   a,
                                         gconstpointer   b);
 
 /* callback functions */
                                         gconstpointer   b);
 
 /* callback functions */
-static void folderview_button_pressed  (GtkWidget      *ctree,
-                                        GdkEventButton *event,
-                                        FolderView     *folderview);
-static void folderview_button_released (GtkWidget      *ctree,
-                                        GdkEventButton *event,
-                                        FolderView     *folderview);
-static void folderview_key_pressed     (GtkWidget      *widget,
+static gboolean folderview_button_pressed      (GtkWidget      *ctree,
+                                                GdkEventButton *event,
+                                                FolderView     *folderview);
+static gboolean folderview_button_released     (GtkWidget      *ctree,
+                                                GdkEventButton *event,
+                                                FolderView     *folderview);
+static gboolean folderview_key_pressed (GtkWidget      *widget,
                                         GdkEventKey    *event,
                                         FolderView     *folderview);
 static void folderview_selected                (GtkCTree       *ctree,
                                         GdkEventKey    *event,
                                         FolderView     *folderview);
 static void folderview_selected                (GtkCTree       *ctree,
@@ -390,7 +387,7 @@ FolderView *folderview_create(void)
                (GTK_SCROLLED_WINDOW(scrolledwin),
                 GTK_POLICY_AUTOMATIC,
                 prefs_common.folderview_vscrollbar_policy);
                (GTK_SCROLLED_WINDOW(scrolledwin),
                 GTK_POLICY_AUTOMATIC,
                 prefs_common.folderview_vscrollbar_policy);
-       gtk_widget_set_usize(scrolledwin,
+       gtk_widget_set_size_request(scrolledwin,
                             prefs_common.folderview_width,
                             prefs_common.folderview_height);
 
                             prefs_common.folderview_width,
                             prefs_common.folderview_height);
 
@@ -451,63 +448,63 @@ FolderView *folderview_create(void)
                                       "<MboxFolder>", &mbox_factory,
                                       folderview);
 
                                       "<MboxFolder>", &mbox_factory,
                                       folderview);
 
-       gtk_signal_connect(GTK_OBJECT(ctree), "key_press_event",
-                          GTK_SIGNAL_FUNC(folderview_key_pressed),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "button_press_event",
-                          GTK_SIGNAL_FUNC(folderview_button_pressed),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "button_release_event",
-                          GTK_SIGNAL_FUNC(folderview_button_released),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row",
-                          GTK_SIGNAL_FUNC(folderview_selected), folderview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "start_drag",
-                          GTK_SIGNAL_FUNC(folderview_start_drag), folderview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "drag_data_get",
-                          GTK_SIGNAL_FUNC(folderview_drag_data_get),
-                          folderview);
-
-       gtk_signal_connect_after(GTK_OBJECT(ctree), "tree_expand",
-                                GTK_SIGNAL_FUNC(folderview_tree_expanded),
-                                folderview);
-       gtk_signal_connect_after(GTK_OBJECT(ctree), "tree_collapse",
-                                GTK_SIGNAL_FUNC(folderview_tree_collapsed),
-                                folderview);
-
-       gtk_signal_connect(GTK_OBJECT(ctree), "resize_column",
-                          GTK_SIGNAL_FUNC(folderview_col_resized),
-                          folderview);
-
-       gtk_signal_connect(GTK_OBJECT(mail_popup), "selection_done",
-                          GTK_SIGNAL_FUNC(folderview_popup_close),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(imap_popup), "selection_done",
-                          GTK_SIGNAL_FUNC(folderview_popup_close),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(news_popup), "selection_done",
-                          GTK_SIGNAL_FUNC(folderview_popup_close),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(mbox_popup), "selection_done",
-                          GTK_SIGNAL_FUNC(folderview_popup_close),
-                          folderview);
+       g_signal_connect(G_OBJECT(ctree), "key_press_event",
+                        G_CALLBACK(folderview_key_pressed),
+                        folderview);
+       g_signal_connect(G_OBJECT(ctree), "button_press_event",
+                        G_CALLBACK(folderview_button_pressed),
+                        folderview);
+       g_signal_connect(G_OBJECT(ctree), "button_release_event",
+                        G_CALLBACK(folderview_button_released),
+                        folderview);
+       g_signal_connect(G_OBJECT(ctree), "tree_select_row",
+                        G_CALLBACK(folderview_selected), folderview);
+       g_signal_connect(G_OBJECT(ctree), "start_drag",
+                        G_CALLBACK(folderview_start_drag), folderview);
+       g_signal_connect(G_OBJECT(ctree), "drag_data_get",
+                        G_CALLBACK(folderview_drag_data_get),
+                        folderview);
+
+       g_signal_connect_after(G_OBJECT(ctree), "tree_expand",
+                              G_CALLBACK(folderview_tree_expanded),
+                              folderview);
+       g_signal_connect_after(G_OBJECT(ctree), "tree_collapse",
+                              G_CALLBACK(folderview_tree_collapsed),
+                              folderview);
+
+       g_signal_connect(G_OBJECT(ctree), "resize_column",
+                        G_CALLBACK(folderview_col_resized),
+                        folderview);
+
+       g_signal_connect(G_OBJECT(mail_popup), "selection_done",
+                        G_CALLBACK(folderview_popup_close),
+                        folderview);
+       g_signal_connect(G_OBJECT(imap_popup), "selection_done",
+                        G_CALLBACK(folderview_popup_close),
+                        folderview);
+       g_signal_connect(G_OBJECT(news_popup), "selection_done",
+                        G_CALLBACK(folderview_popup_close),
+                        folderview);
+       g_signal_connect(G_OBJECT(mbox_popup), "selection_done",
+                        G_CALLBACK(folderview_popup_close),
+                        folderview);
 
         /* drop callback */
        gtk_drag_dest_set(ctree, GTK_DEST_DEFAULT_ALL & ~GTK_DEST_DEFAULT_HIGHLIGHT,
                          summary_drag_types, 1,
                          GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_DEFAULT);
 
         /* drop callback */
        gtk_drag_dest_set(ctree, GTK_DEST_DEFAULT_ALL & ~GTK_DEST_DEFAULT_HIGHLIGHT,
                          summary_drag_types, 1,
                          GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_DEFAULT);
-       gtk_signal_connect(GTK_OBJECT(ctree), "drag_motion",
-                          GTK_SIGNAL_FUNC(folderview_drag_motion_cb),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "drag_leave",
-                          GTK_SIGNAL_FUNC(folderview_drag_leave_cb),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "drag_data_received",
-                          GTK_SIGNAL_FUNC(folderview_drag_received_cb),
-                          folderview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "drag_end",
-                          GTK_SIGNAL_FUNC(folderview_drag_end_cb),
-                          folderview);
+       g_signal_connect(G_OBJECT(ctree), "drag_motion",
+                        G_CALLBACK(folderview_drag_motion_cb),
+                        folderview);
+       g_signal_connect(G_OBJECT(ctree), "drag_leave",
+                        G_CALLBACK(folderview_drag_leave_cb),
+                        folderview);
+       g_signal_connect(G_OBJECT(ctree), "drag_data_received",
+                        G_CALLBACK(folderview_drag_received_cb),
+                        folderview);
+       g_signal_connect(G_OBJECT(ctree), "drag_end",
+                        G_CALLBACK(folderview_drag_end_cb),
+                        folderview);
 
        folderview->scrolledwin  = scrolledwin;
        folderview->ctree        = ctree;
 
        folderview->scrolledwin  = scrolledwin;
        folderview->ctree        = ctree;
@@ -588,6 +585,7 @@ void folderview_init(FolderView *folderview)
        gtk_clist_set_column_widget(GTK_CLIST(ctree),COL_NEW,hbox_new);
        gtk_clist_set_column_widget(GTK_CLIST(ctree),COL_UNREAD,hbox_unread);
                        
        gtk_clist_set_column_widget(GTK_CLIST(ctree),COL_NEW,hbox_new);
        gtk_clist_set_column_widget(GTK_CLIST(ctree),COL_UNREAD,hbox_unread);
                        
+#if 0
        if (!normalfont) {
                if (gtkut_font_load(NORMAL_FONT) == NULL) {
                        GtkStyle *style = gtk_style_new();
        if (!normalfont) {
                if (gtkut_font_load(NORMAL_FONT) == NULL) {
                        GtkStyle *style = gtk_style_new();
@@ -609,10 +607,18 @@ void folderview_init(FolderView *folderview)
                else
                        boldfont = gtkut_font_load(BOLD_FONT);
        }
                else
                        boldfont = gtkut_font_load(BOLD_FONT);
        }
+#endif
        
        if (!bold_style) {
        
        if (!bold_style) {
+               PangoFontDescription *font_desc;
                bold_style = gtk_style_copy(gtk_widget_get_style(ctree));
                bold_style = gtk_style_copy(gtk_widget_get_style(ctree));
-               bold_style->font = boldfont;
+               font_desc = pango_font_description_from_string(BOLD_FONT);
+               if (font_desc) {
+                       if (bold_style->font_desc)
+                               pango_font_description_free
+                                       (bold_style->font_desc);
+                       bold_style->font_desc = font_desc;
+               }
                bold_color_style = gtk_style_copy(bold_style);
                bold_color_style->fg[GTK_STATE_NORMAL] = folderview->color_new;
 
                bold_color_style = gtk_style_copy(bold_style);
                bold_color_style->fg[GTK_STATE_NORMAL] = folderview->color_new;
 
@@ -620,8 +626,15 @@ void folderview_init(FolderView *folderview)
                bold_tgtfold_style->fg[GTK_STATE_NORMAL] = folderview->color_op;
        }
        if (!normal_style) {
                bold_tgtfold_style->fg[GTK_STATE_NORMAL] = folderview->color_op;
        }
        if (!normal_style) {
+               PangoFontDescription *font_desc;
                normal_style = gtk_style_copy(gtk_widget_get_style(ctree));
                normal_style = gtk_style_copy(gtk_widget_get_style(ctree));
-               normal_style->font = normalfont;
+               font_desc = pango_font_description_from_string(NORMAL_FONT);
+               if (font_desc) {
+                       if (normal_style->font_desc)
+                               pango_font_description_free
+                                       (normal_style->font_desc);
+                       normal_style->font_desc = font_desc;
+               }
                normal_color_style = gtk_style_copy(normal_style);
                normal_color_style->fg[GTK_STATE_NORMAL] = folderview->color_new;
        }
                normal_color_style = gtk_style_copy(normal_style);
                normal_color_style->fg[GTK_STATE_NORMAL] = folderview->color_new;
        }
@@ -811,8 +824,8 @@ static GtkWidget *label_window_create(const gchar *str)
        GtkWidget *window;
        GtkWidget *label;
 
        GtkWidget *window;
        GtkWidget *label;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 380, 60);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 380, 60);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_title(GTK_WINDOW(window), str);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_title(GTK_WINDOW(window), str);
@@ -1427,8 +1440,8 @@ void folderview_delete_folder(FolderView *folderview)
 
 /* callback functions */
 
 
 /* callback functions */
 
-static void folderview_button_pressed(GtkWidget *ctree, GdkEventButton *event,
-                                     FolderView *folderview)
+static gboolean folderview_button_pressed(GtkWidget *ctree, GdkEventButton *event,
+                                         FolderView *folderview)
 {
        GtkCList *clist = GTK_CLIST(ctree);
        gint prev_row = -1, row = -1, column = -1;
 {
        GtkCList *clist = GTK_CLIST(ctree);
        gint prev_row = -1, row = -1, column = -1;
@@ -1448,11 +1461,11 @@ static void folderview_button_pressed(GtkWidget *ctree, GdkEventButton *event,
        gboolean folder_processing  = FALSE;
        gboolean folder_scoring  = FALSE;
 
        gboolean folder_processing  = FALSE;
        gboolean folder_scoring  = FALSE;
 
-       if (!event) return;
+       if (!event) return FALSE;
 
        if (event->button == 1) {
                folderview->open_folder = TRUE;
 
        if (event->button == 1) {
                folderview->open_folder = TRUE;
-               return;
+               return FALSE;
        }
 
        if (event->button == 2 || event->button == 3) {
        }
 
        if (event->button == 2 || event->button == 3) {
@@ -1468,7 +1481,7 @@ static void folderview_button_pressed(GtkWidget *ctree, GdkEventButton *event,
 
                if (!gtk_clist_get_selection_info(clist, event->x, event->y,
                                                  &row, &column))
 
                if (!gtk_clist_get_selection_info(clist, event->x, event->y,
                                                  &row, &column))
-                       return;
+                       return FALSE;
                if (prev_row != row) {
                        gtk_clist_unselect_all(clist);
                        if (event->button == 2)
                if (prev_row != row) {
                        gtk_clist_unselect_all(clist);
                        if (event->button == 2)
@@ -1481,11 +1494,11 @@ static void folderview_button_pressed(GtkWidget *ctree, GdkEventButton *event,
                }
        }
 
                }
        }
 
-       if (event->button != 3) return;
+       if (event->button != 3) return FALSE;
 
        item = gtk_clist_get_row_data(clist, row);
 
        item = gtk_clist_get_row_data(clist, row);
-       g_return_if_fail(item != NULL);
-       g_return_if_fail(item->folder != NULL);
+       g_return_val_if_fail(item != NULL, FALSE);
+       g_return_val_if_fail(item->folder != NULL, FALSE);
        folder = item->folder;
 
        if (folderview->mainwin->lock_count == 0) {
        folder = item->folder;
 
        if (folderview->mainwin->lock_count == 0) {
@@ -1575,18 +1588,20 @@ static void folderview_button_pressed(GtkWidget *ctree, GdkEventButton *event,
                SET_SENS(mbox_factory, "/Processing...", folder_processing);
                SET_SENS(mbox_factory, "/Scoring...", folder_scoring);
        } else
                SET_SENS(mbox_factory, "/Processing...", folder_processing);
                SET_SENS(mbox_factory, "/Scoring...", folder_scoring);
        } else
-               return;
+               return FALSE;
 
 #undef SET_SENS
 
        gtk_menu_popup(GTK_MENU(popup), NULL, NULL, NULL, NULL,
                       event->button, event->time);
 
 #undef SET_SENS
 
        gtk_menu_popup(GTK_MENU(popup), NULL, NULL, NULL, NULL,
                       event->button, event->time);
+
+       return FALSE;
 }
 
 }
 
-static void folderview_button_released(GtkWidget *ctree, GdkEventButton *event,
-                                      FolderView *folderview)
+static gboolean folderview_button_released(GtkWidget *ctree, GdkEventButton *event,
+                                          FolderView *folderview)
 {
 {
-       if (!event) return;
+       if (!event) return FALSE;
 
        if (event->button == 1 && folderview->open_folder == FALSE &&
            folderview->opened != NULL) {
 
        if (event->button == 1 && folderview->open_folder == FALSE &&
            folderview->opened != NULL) {
@@ -1594,12 +1609,14 @@ static void folderview_button_released(GtkWidget *ctree, GdkEventButton *event,
                                          folderview->opened);
                gtk_ctree_select(GTK_CTREE(ctree), folderview->opened);
        }
                                          folderview->opened);
                gtk_ctree_select(GTK_CTREE(ctree), folderview->opened);
        }
+
+       return FALSE;
 }
 
 }
 
-static void folderview_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                                  FolderView *folderview)
+static gboolean folderview_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                      FolderView *folderview)
 {
 {
-       if (!event) return;
+       if (!event) return FALSE;
 
        switch (event->keyval) {
        case GDK_Return:
 
        switch (event->keyval) {
        case GDK_Return:
@@ -1622,6 +1639,8 @@ static void folderview_key_pressed(GtkWidget *widget, GdkEventKey *event,
        default:
                break;
        }
        default:
                break;
        }
+
+       return FALSE;
 }
 
 static void folderview_selected(GtkCTree *ctree, GtkCTreeNode *row,
 }
 
 static void folderview_selected(GtkCTree *ctree, GtkCTreeNode *row,
@@ -2830,13 +2849,13 @@ static gboolean folderview_drag_motion_cb(GtkWidget      *widget,
                drag_state_start(folderview, node, item);
        
        if (acceptable) {
                drag_state_start(folderview, node, item);
        
        if (acceptable) {
-               gtk_signal_handler_block_by_func
-                       (GTK_OBJECT(widget),
-                        GTK_SIGNAL_FUNC(folderview_selected), folderview);
+               g_signal_handlers_block_by_func
+                       (G_OBJECT(widget),
+                        G_CALLBACK(folderview_selected), folderview);
                gtk_ctree_select(GTK_CTREE(widget), node);
                gtk_ctree_select(GTK_CTREE(widget), node);
-               gtk_signal_handler_unblock_by_func
-                       (GTK_OBJECT(widget),
-                        GTK_SIGNAL_FUNC(folderview_selected), folderview);
+               g_signal_handlers_unblock_by_func
+                       (G_OBJECT(widget),
+                        G_CALLBACK(folderview_selected), folderview);
                gdk_drag_status(context, 
                                        (context->actions == GDK_ACTION_COPY ?
                                        GDK_ACTION_COPY : GDK_ACTION_MOVE) , time);
                gdk_drag_status(context, 
                                        (context->actions == GDK_ACTION_COPY ?
                                        GDK_ACTION_COPY : GDK_ACTION_MOVE) , time);
index c06a2436c76259dbd75d7542abaa530b46dbaa72..8c13ad325ea01180a00ee49b3aa4596cd58ac250 100644 (file)
@@ -85,7 +85,7 @@ static void cancel_clicked    (GtkWidget      *widget,
                                 gpointer        data);
 static void refresh_clicked    (GtkWidget      *widget,
                                 gpointer        data);
                                 gpointer        data);
 static void refresh_clicked    (GtkWidget      *widget,
                                 gpointer        data);
-static void key_pressed                (GtkWidget      *widget,
+static gboolean key_pressed    (GtkWidget      *widget,
                                 GdkEventKey    *event,
                                 gpointer        data);
 static void ctree_selected     (GtkCTree       *ctree,
                                 GdkEventKey    *event,
                                 gpointer        data);
 static void ctree_selected     (GtkCTree       *ctree,
@@ -165,16 +165,16 @@ static void grouplist_dialog_create(void)
 
        dialog = gtk_dialog_new();
        gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, TRUE, FALSE);
 
        dialog = gtk_dialog_new();
        gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, TRUE, FALSE);
-       gtk_widget_set_usize(dialog,
-                            GROUPLIST_DIALOG_WIDTH, GROUPLIST_DIALOG_HEIGHT);
+       gtk_widget_set_size_request(dialog,
+                                   GROUPLIST_DIALOG_WIDTH, GROUPLIST_DIALOG_HEIGHT);
        gtk_container_set_border_width
                (GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 5);
        gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
        gtk_window_set_title(GTK_WINDOW(dialog), _("Newsgroup subscription"));
        gtk_container_set_border_width
                (GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 5);
        gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
        gtk_window_set_title(GTK_WINDOW(dialog), _("Newsgroup subscription"));
-       gtk_signal_connect(GTK_OBJECT(dialog), "delete_event",
-                          GTK_SIGNAL_FUNC(cancel_clicked), NULL);
-       gtk_signal_connect(GTK_OBJECT(dialog), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(dialog), "delete_event",
+                        G_CALLBACK(cancel_clicked), NULL);
+       g_signal_connect(G_OBJECT(dialog), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog);
 
        gtk_widget_realize(dialog);
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog);
 
        gtk_widget_realize(dialog);
@@ -197,14 +197,14 @@ static void grouplist_dialog_create(void)
 
        entry = gtk_entry_new();
        gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
 
        entry = gtk_entry_new();
        gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
-       gtk_signal_connect(GTK_OBJECT(entry), "activate",
-                          GTK_SIGNAL_FUNC(entry_activated), NULL);
+       g_signal_connect(G_OBJECT(entry), "activate",
+                        G_CALLBACK(entry_activated), NULL);
 
        search_button = gtk_button_new_with_label(_(" Search "));
        gtk_box_pack_start(GTK_BOX(hbox), search_button, FALSE, FALSE, 0);
 
 
        search_button = gtk_button_new_with_label(_(" Search "));
        gtk_box_pack_start(GTK_BOX(hbox), search_button, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(search_button), "clicked",
-                          GTK_SIGNAL_FUNC(search_clicked), NULL);
+       g_signal_connect(G_OBJECT(search_button), "clicked",
+                        G_CALLBACK(search_clicked), NULL);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_box_pack_start(GTK_BOX (vbox), scrolledwin, TRUE, TRUE, 0);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_box_pack_start(GTK_BOX (vbox), scrolledwin, TRUE, TRUE, 0);
@@ -226,10 +226,10 @@ static void grouplist_dialog_create(void)
        for (i = 0; i < 3; i++)
                GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(ctree)->column[i].button,
                                       GTK_CAN_FOCUS);
        for (i = 0; i < 3; i++)
                GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(ctree)->column[i].button,
                                       GTK_CAN_FOCUS);
-       gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row",
-                          GTK_SIGNAL_FUNC(ctree_selected), NULL);
-       gtk_signal_connect(GTK_OBJECT(ctree), "tree_unselect_row",
-                          GTK_SIGNAL_FUNC(ctree_unselected), NULL);
+       g_signal_connect(G_OBJECT(ctree), "tree_select_row",
+                        G_CALLBACK(ctree_selected), NULL);
+       g_signal_connect(G_OBJECT(ctree), "tree_unselect_row",
+                        G_CALLBACK(ctree_unselected), NULL);
 
        hbox = gtk_hbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
        hbox = gtk_hbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
@@ -245,12 +245,12 @@ static void grouplist_dialog_create(void)
                          confirm_area);
        gtk_widget_grab_default(ok_button);
 
                          confirm_area);
        gtk_widget_grab_default(ok_button);
 
-       gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
-                          GTK_SIGNAL_FUNC(ok_clicked), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
-                          GTK_SIGNAL_FUNC(cancel_clicked), NULL);
-       gtk_signal_connect(GTK_OBJECT(refresh_button), "clicked",
-                          GTK_SIGNAL_FUNC(refresh_clicked), NULL);
+       g_signal_connect(G_OBJECT(ok_button), "clicked",
+                        G_CALLBACK(ok_clicked), NULL);
+       g_signal_connect(G_OBJECT(cancel_button), "clicked",
+                        G_CALLBACK(cancel_clicked), NULL);
+       g_signal_connect(G_OBJECT(refresh_button), "clicked",
+                        G_CALLBACK(refresh_clicked), NULL);
 
        gtk_widget_show_all(GTK_DIALOG(dialog)->vbox);
 }
 
        gtk_widget_show_all(GTK_DIALOG(dialog)->vbox);
 }
@@ -400,12 +400,12 @@ static void grouplist_dialog_set_list(const gchar *pattern, gboolean refresh)
                        return;
                }
        } else {
                        return;
                }
        } else {
-               gtk_signal_handler_block_by_func
-                       (GTK_OBJECT(ctree), GTK_SIGNAL_FUNC(ctree_unselected),
+               g_signal_handlers_block_by_func
+                       (G_OBJECT(ctree), G_CALLBACK(ctree_unselected),
                         NULL);
                gtk_clist_clear(GTK_CLIST(ctree));
                         NULL);
                gtk_clist_clear(GTK_CLIST(ctree));
-               gtk_signal_handler_unblock_by_func
-                       (GTK_OBJECT(ctree), GTK_SIGNAL_FUNC(ctree_unselected),
+               g_signal_handlers_unblock_by_func
+                       (G_OBJECT(ctree), G_CALLBACK(ctree_unselected),
                         NULL);
        }
        gtk_entry_set_text(GTK_ENTRY(entry), pattern);
                         NULL);
        }
        gtk_entry_set_text(GTK_ENTRY(entry), pattern);
@@ -414,9 +414,9 @@ static void grouplist_dialog_set_list(const gchar *pattern, gboolean refresh)
 
        gtk_clist_freeze(GTK_CLIST(ctree));
 
 
        gtk_clist_freeze(GTK_CLIST(ctree));
 
-       gtk_signal_handler_block_by_func(GTK_OBJECT(ctree),
-                                        GTK_SIGNAL_FUNC(ctree_selected),
-                                        NULL);
+       g_signal_handlers_block_by_func(G_OBJECT(ctree),
+                                                                       G_CALLBACK(ctree_selected),
+                                                                       NULL);
 
        for (cur = group_list; cur != NULL ; cur = cur->next) {
                NewsGroupInfo *ginfo = (NewsGroupInfo *)cur->data;
 
        for (cur = group_list; cur != NULL ; cur = cur->next) {
                NewsGroupInfo *ginfo = (NewsGroupInfo *)cur->data;
@@ -430,9 +430,9 @@ static void grouplist_dialog_set_list(const gchar *pattern, gboolean refresh)
                }
        }
 
                }
        }
 
-       gtk_signal_handler_unblock_by_func(GTK_OBJECT(ctree),
-                                          GTK_SIGNAL_FUNC(ctree_selected),
-                                          NULL);
+       g_signal_handlers_unblock_by_func(G_OBJECT(ctree),
+                                         G_CALLBACK(ctree_selected),
+                                         NULL);
 
        gtk_clist_thaw(GTK_CLIST(ctree));
 
 
        gtk_clist_thaw(GTK_CLIST(ctree));
 
@@ -456,16 +456,16 @@ static void grouplist_search(void)
 
 static void grouplist_clear(void)
 {
 
 static void grouplist_clear(void)
 {
-       gtk_signal_handler_block_by_func(GTK_OBJECT(ctree),
-                                        GTK_SIGNAL_FUNC(ctree_unselected),
-                                        NULL);
+       g_signal_handlers_block_by_func(G_OBJECT(ctree),
+                                       G_CALLBACK(ctree_unselected),
+                                       NULL);
        gtk_clist_clear(GTK_CLIST(ctree));
        gtk_entry_set_text(GTK_ENTRY(entry), "");
        news_group_list_free(group_list);
        group_list = NULL;
        gtk_clist_clear(GTK_CLIST(ctree));
        gtk_entry_set_text(GTK_ENTRY(entry), "");
        news_group_list_free(group_list);
        group_list = NULL;
-       gtk_signal_handler_unblock_by_func(GTK_OBJECT(ctree),
-                                          GTK_SIGNAL_FUNC(ctree_unselected),
-                                          NULL);
+       g_signal_handlers_unblock_by_func(G_OBJECT(ctree),
+                                         G_CALLBACK(ctree_unselected),
+                                         NULL);
 }
 
 static gboolean grouplist_recv_func(SockInfo *sock, gint count, gint read_bytes,
 }
 
 static gboolean grouplist_recv_func(SockInfo *sock, gint count, gint read_bytes,
@@ -511,10 +511,11 @@ static void refresh_clicked(GtkWidget *widget, gpointer data)
        g_free(str);
 }
 
        g_free(str);
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                cancel_clicked(NULL, NULL);
 {
        if (event && event->keyval == GDK_Escape)
                cancel_clicked(NULL, NULL);
+       return FALSE;
 }
 
 static void ctree_selected(GtkCTree *ctree, GtkCTreeNode *node, gint column,
 }
 
 static void ctree_selected(GtkCTree *ctree, GtkCTreeNode *node, gint column,
index a4978cd58bf1a5001896f512e8212263f1f259d8..eafa6f059d6f62ad4bf4dfcdc90e6e6a42e1f5e7 100644 (file)
@@ -1,5 +1,8 @@
 noinst_LTLIBRARIES = libsylpheedgtk.la
 
 noinst_LTLIBRARIES = libsylpheedgtk.la
 
+EXTRA_DIST = \
+       sylpheed-marshal.list
+
 libsylpheedgtk_la_SOURCES = \
        about.c \
        colorlabel.c \
 libsylpheedgtk_la_SOURCES = \
        about.c \
        colorlabel.c \
@@ -10,12 +13,12 @@ libsylpheedgtk_la_SOURCES = \
        gtkutils.c \
        gtkshruler.c \
        gtksctree.c \
        gtkutils.c \
        gtkshruler.c \
        gtksctree.c \
-       gtkstext.c \
        manage_window.c \
        menu.c \
        pluginwindow.c \
        prefswindow.c \
        sslcertwindow.c \
        manage_window.c \
        menu.c \
        pluginwindow.c \
        prefswindow.c \
        sslcertwindow.c \
+       sylpheed-marshal.c \
        gtkvscrollbutton.c
 
 sylpheedgtkincludedir = $(pkgincludedir)/gtk
        gtkvscrollbutton.c
 
 sylpheedgtkincludedir = $(pkgincludedir)/gtk
@@ -29,12 +32,12 @@ sylpheedgtkinclude_HEADERS = \
        gtkutils.h \
        gtkshruler.h \
        gtksctree.h \
        gtkutils.h \
        gtkshruler.h \
        gtksctree.h \
-       gtkstext.h \
        manage_window.h \
        menu.h \
        pluginwindow.h \
        prefswindow.h \
        sslcertwindow.h \
        manage_window.h \
        menu.h \
        pluginwindow.h \
        prefswindow.h \
        sslcertwindow.h \
+       sylpheed-marshal.h \
        gtkvscrollbutton.h
 
 AM_CPPFLAGS = \
        gtkvscrollbutton.h
 
 AM_CPPFLAGS = \
@@ -48,3 +51,11 @@ libsylpheedgtk_la_LIBADD = \
        ../common/libsylpheedcommon.la \
        $(GTK_LIBS) \
        $(ASPELL_LIBS)
        ../common/libsylpheedcommon.la \
        $(GTK_LIBS) \
        $(ASPELL_LIBS)
+
+BUILT_SOURCES=sylpheed-marshal.c sylpheed-marshal.h
+
+sylpheed-marshal.h: sylpheed-marshal.list
+       $(GLIB_GENMARSHAL) $< --header --prefix=sylpheed_marshal > $@
+
+sylpheed-marshal.c: sylpheed-marshal.list
+       $(GLIB_GENMARSHAL) $< --body --prefix=sylpheed_marshal > $@
index 44e2ed19e85b6dba14b919e98d14e0cdd3c5c1e3..063c44677b5e809a9fa5e14d3ae8fe57f20aeddf 100644 (file)
@@ -50,7 +50,7 @@
 static GtkWidget *window;
 
 static void about_create(void);
 static GtkWidget *window;
 
 static void about_create(void);
-static void key_pressed(GtkWidget *widget, GdkEventKey *event);
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event);
 static void about_uri_clicked(GtkButton *button, gpointer data);
 
 void about_show(void)
 static void about_uri_clicked(GtkButton *button, gpointer data);
 
 void about_show(void)
@@ -78,6 +78,8 @@ static void about_create(void)
        GdkColormap *cmap;
        GdkColor uri_color[2] = {{0, 0, 0, 0xffff}, {0, 0xffff, 0, 0}};
        gboolean success[2];
        GdkColormap *cmap;
        GdkColor uri_color[2] = {{0, 0, 0, 0xffff}, {0, 0xffff, 0, 0}};
        gboolean success[2];
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
 
 #if HAVE_SYS_UTSNAME_H
        struct utsname utsbuf;
 
 #if HAVE_SYS_UTSNAME_H
        struct utsname utsbuf;
@@ -85,15 +87,15 @@ static void about_create(void)
        gchar buf[1024];
        gint i;
 
        gchar buf[1024];
        gint i;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), _("About"));
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_title(GTK_WINDOW(window), _("About"));
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
-       gtk_widget_set_usize(window, 518, 358);
+       gtk_widget_set_size_request(window, 518, 358);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(gtk_widget_hide_on_delete), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        gtk_widget_realize(window);
 
        vbox = gtk_vbox_new(FALSE, 6);
        gtk_widget_realize(window);
 
        vbox = gtk_vbox_new(FALSE, 6);
@@ -172,8 +174,8 @@ static void about_create(void)
        button = gtk_button_new_with_label(" "HOMEPAGE_URI" ");
        gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 0);
        gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
        button = gtk_button_new_with_label(" "HOMEPAGE_URI" ");
        gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 0);
        gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
-       gtk_signal_connect(GTK_OBJECT(button), "clicked",
-                          GTK_SIGNAL_FUNC(about_uri_clicked), NULL);
+       g_signal_connect(G_OBJECT(button), "clicked",
+                        G_CALLBACK(about_uri_clicked), NULL);
        buf[0] = ' ';
        for (i = 1; i <= strlen(HOMEPAGE_URI); i++) buf[i] = '_';
        strcpy(buf + i, " ");
        buf[0] = ' ';
        for (i = 1; i <= strlen(HOMEPAGE_URI); i++) buf[i] = '_';
        strcpy(buf + i, " ");
@@ -196,55 +198,53 @@ static void about_create(void)
                                       GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
 
                                       GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
 
-       text = gtk_text_new(gtk_scrolled_window_get_hadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)),
-                           gtk_scrolled_window_get_vadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)));
-       gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
+       text = gtk_text_view_new();
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
+       gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
 
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
 
-       gtk_text_freeze(GTK_TEXT(text));
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);
 
 #if USE_GPGME
 
 #if USE_GPGME
-       gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL,
+       gtk_text_buffer_insert(buffer, &iter,
                _("GPGME is copyright 2001 by Werner Koch <dd9jn@gnu.org>\n\n"), -1);
 #endif /* USE_GPGME */
 
                _("GPGME is copyright 2001 by Werner Koch <dd9jn@gnu.org>\n\n"), -1);
 #endif /* USE_GPGME */
 
-       gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL,
+       gtk_text_buffer_insert(buffer, &iter,
                _("This program is free software; you can redistribute it and/or modify "
                  "it under the terms of the GNU General Public License as published by "
                  "the Free Software Foundation; either version 2, or (at your option) "
                  "any later version.\n\n"), -1);
 
                _("This program is free software; you can redistribute it and/or modify "
                  "it under the terms of the GNU General Public License as published by "
                  "the Free Software Foundation; either version 2, or (at your option) "
                  "any later version.\n\n"), -1);
 
-       gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL,
+       gtk_text_buffer_insert(buffer, &iter,
                _("This program is distributed in the hope that it will be useful, "
                  "but WITHOUT ANY WARRANTY; without even the implied warranty of "
                  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. "
                  "See the GNU General Public License for more details.\n\n"), -1);
 
                _("This program is distributed in the hope that it will be useful, "
                  "but WITHOUT ANY WARRANTY; without even the implied warranty of "
                  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. "
                  "See the GNU General Public License for more details.\n\n"), -1);
 
-       gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL,
+       gtk_text_buffer_insert(buffer, &iter,
                _("You should have received a copy of the GNU General Public License "
                  "along with this program; if not, write to the Free Software "
                  "Foundation, Inc., 59 Temple Place - Suite 330, Boston, "
                  "MA 02111-1307, USA."), -1);
 
                _("You should have received a copy of the GNU General Public License "
                  "along with this program; if not, write to the Free Software "
                  "Foundation, Inc., 59 Temple Place - Suite 330, Boston, "
                  "MA 02111-1307, USA."), -1);
 
-       gtk_text_thaw(GTK_TEXT(text));
-
        gtkut_button_set_create(&confirm_area, &ok_button, _("OK"),
                                NULL, NULL, NULL, NULL);
        gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_button);
        gtkut_button_set_create(&confirm_area, &ok_button, _("OK"),
                                NULL, NULL, NULL, NULL);
        gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_button);
-       gtk_signal_connect_object(GTK_OBJECT(ok_button), "clicked",
-                                 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
-                                 GTK_OBJECT(window));
-
+       g_signal_connect_closure
+               (G_OBJECT(ok_button), "clicked",
+                g_cclosure_new_swap(G_CALLBACK(gtk_widget_hide_on_delete),
+                                    window, NULL), FALSE);
        gtk_widget_show_all(window);
 }
 
        gtk_widget_show_all(window);
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event)
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(window);
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(window);
+       return FALSE;
 }
 
 static void about_uri_clicked(GtkButton *button, gpointer data)
 }
 
 static void about_uri_clicked(GtkButton *button, gpointer data)
index aa7c01f576566c1dc8bb12f709d62916d8fbe455..bdf98026db518b4a5a831b12cd1e22107ea90c44 100644 (file)
 #include "defs.h"
 
 #include <glib.h>
 #include "defs.h"
 
 #include <glib.h>
-#include <gdk/gdkx.h>
+#ifdef GDK_WINDOWING_X11
+#      include <gdk/gdkx.h>
+#endif /* GDK_WINDOWING_X11 */
 #include <gtk/gtk.h>
 #include <gtk/gtkwidget.h>
 #include <gtk/gtk.h>
 #include <gtk/gtkwidget.h>
-#include <gtk/gtkpixmap.h>
+#include <gtk/gtkimage.h>
 #include <gtk/gtkmenu.h>
 #include <gtk/gtkcheckmenuitem.h>
 #include <gtk/gtklabel.h>
 #include <gtk/gtkmenu.h>
 #include <gtk/gtkcheckmenuitem.h>
 #include <gtk/gtklabel.h>
@@ -143,17 +145,17 @@ static GtkWidget *colorlabel_create_color_widget(GdkColor color)
        GtkWidget *widget;
 
        widget = gtk_drawing_area_new();
        GtkWidget *widget;
 
        widget = gtk_drawing_area_new();
-       gtk_drawing_area_size(GTK_DRAWING_AREA(widget), 16, 16);
+       gtk_widget_set_size_request(widget, 16, 16);
 
 #define CL(x)          (((gulong) (x) >> (gulong) 8) & 0xFFUL) 
 #define CR(r, g, b)    ((CL(r) << (gulong) 16) | \
                         (CL(g) << (gulong)  8) | \
                         (CL(b)))
 
 
 #define CL(x)          (((gulong) (x) >> (gulong) 8) & 0xFFUL) 
 #define CR(r, g, b)    ((CL(r) << (gulong) 16) | \
                         (CL(g) << (gulong)  8) | \
                         (CL(b)))
 
-       gtk_signal_connect(GTK_OBJECT(widget), "expose_event", 
-                          GTK_SIGNAL_FUNC
+       g_signal_connect(G_OBJECT(widget), "expose_event", 
+                        G_CALLBACK
                                (colorlabel_drawing_area_expose_event_cb),
                                (colorlabel_drawing_area_expose_event_cb),
-                          GINT_TO_POINTER
+                        GINT_TO_POINTER
                                ((gint)CR(color.red, color.green, color.blue)));
 
        return widget;
                                ((gint)CR(color.red, color.green, color.blue)));
 
        return widget;
@@ -251,7 +253,7 @@ GtkWidget *colorlabel_create_check_color_menu_item(gint color_index)
 
        gtk_container_add(GTK_CONTAINER(align), label_colors[color_index].widget);
        gtk_widget_show(label_colors[color_index].widget);
 
        gtk_container_add(GTK_CONTAINER(align), label_colors[color_index].widget);
        gtk_widget_show(label_colors[color_index].widget);
-       gtk_widget_set_usize(align, 16, 16);
+       gtk_widget_set_size_request(align, 16, 16);
 
        gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
 
        gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
@@ -274,11 +276,11 @@ GtkWidget *colorlabel_create_color_menu(void)
 
        /* create the menu items. each item has its color code attached */
        menu = gtk_menu_new();
 
        /* create the menu items. each item has its color code attached */
        menu = gtk_menu_new();
-       gtk_object_set_data(GTK_OBJECT(menu), "label_color_menu", menu);
+       g_object_set_data(G_OBJECT(menu), "label_color_menu", menu);
 
        item = gtk_menu_item_new_with_label(_("None"));
 
        item = gtk_menu_item_new_with_label(_("None"));
-       gtk_menu_append(GTK_MENU(menu), item);
-       gtk_object_set_data(GTK_OBJECT(item), "color", GUINT_TO_POINTER(0));
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+       g_object_set_data(G_OBJECT(item), "color", GUINT_TO_POINTER(0));
        gtk_widget_show(item);
        
        /* and the color items */
        gtk_widget_show(item);
        
        /* and the color items */
@@ -286,7 +288,7 @@ GtkWidget *colorlabel_create_color_menu(void)
                GtkWidget *widget = colorlabel_create_color_widget(label_colors[i].color);
 
                item  = gtk_menu_item_new();
                GtkWidget *widget = colorlabel_create_color_widget(label_colors[i].color);
 
                item  = gtk_menu_item_new();
-               gtk_object_set_data(GTK_OBJECT(item), "color", GUINT_TO_POINTER(i + 1));
+               g_object_set_data(G_OBJECT(item), "color", GUINT_TO_POINTER(i + 1));
 
                label = gtk_label_new(label_colors[i].label);
                
 
                label = gtk_label_new(label_colors[i].label);
                
@@ -302,12 +304,12 @@ GtkWidget *colorlabel_create_color_menu(void)
 
                gtk_container_add(GTK_CONTAINER(align), widget);
                gtk_widget_show(widget);
 
                gtk_container_add(GTK_CONTAINER(align), widget);
                gtk_widget_show(widget);
-               gtk_widget_set_usize(align, 16, 16);
+               gtk_widget_set_size_request(align, 16, 16);
 
                gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0);
                gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
                
 
                gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0);
                gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
                
-               gtk_menu_append(GTK_MENU(menu), item);
+               gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
                gtk_widget_show(item);
        }
 
                gtk_widget_show(item);
        }
 
@@ -322,10 +324,10 @@ guint colorlabel_get_color_menu_active_item(GtkWidget *menu)
        guint      color;
 
        g_return_val_if_fail
        guint      color;
 
        g_return_val_if_fail
-               (gtk_object_get_data(GTK_OBJECT(menu), "label_color_menu"), 0);
+               (g_object_get_data(G_OBJECT(menu), "label_color_menu"), 0);
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        color = GPOINTER_TO_UINT
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        color = GPOINTER_TO_UINT
-               (gtk_object_get_data(GTK_OBJECT(menuitem), "color"));
+               (g_object_get_data(G_OBJECT(menuitem), "color"));
        return color;
 }
 
        return color;
 }
 
index 437f3bab06794f7987585451de693fe391e4bece..f3ffd3fca0658ac303856073ddf71f74ac49e3de 100644 (file)
 #define COLORLABEL_H__
 
 #include <glib.h>
 #define COLORLABEL_H__
 
 #include <glib.h>
+#include <gtk/gtkimage.h>
 
 gint colorlabel_get_color_count                        (void);
 GdkColor colorlabel_get_color                  (gint            color_index);
 gchar *colorlabel_get_color_text               (gint            color_index);
 
 gint colorlabel_get_color_count                        (void);
 GdkColor colorlabel_get_color                  (gint            color_index);
 gchar *colorlabel_get_color_text               (gint            color_index);
-GtkPixmap *colorlabel_create_color_pixmap      (GdkColor        color);
+GtkImage *colorlabel_create_color_pixmap       (GdkColor        color);
 gboolean colorlabel_changed                    (void);
 GtkWidget *colorlabel_create_check_color_menu_item
                                                (gint            color_index);
 gboolean colorlabel_changed                    (void);
 GtkWidget *colorlabel_create_check_color_menu_item
                                                (gint            color_index);
index 0a5bdb05cd7c35d426e9707408fcecab10f058fe..38d0d7e9f1baa8a38bdfb0e7b13745e80fac2fdf 100644 (file)
@@ -58,7 +58,7 @@ static void description_create(DescriptionWindow * dwindow)
        int line;
        int j;
 
        int line;
        int j;
 
-       dwindow->window = gtk_window_new(GTK_WINDOW_DIALOG);
+       dwindow->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_widget_set_usize(dwindow->window,400,450);
        
        gtk_window_set_title(GTK_WINDOW(dwindow->window),
        gtk_widget_set_usize(dwindow->window,400,450);
        
        gtk_window_set_title(GTK_WINDOW(dwindow->window),
index a6f089715af359af76fb824205c42d932044826e..342a69a34ee03f7ee1b7bdf1e7a3b8dea0f12d67 100644 (file)
@@ -41,7 +41,7 @@ static void filesel_create(const gchar *title, gboolean multiple_files);
 static void filesel_ok_cb(GtkWidget *widget, gpointer data);
 static void filesel_cancel_cb(GtkWidget *widget, gpointer data);
 static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data);
 static void filesel_ok_cb(GtkWidget *widget, gpointer data);
 static void filesel_cancel_cb(GtkWidget *widget, gpointer data);
 static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data);
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
 
 static void filesel_file_list_select_row_multi(GtkCList *clist, gint row, gint col,
                                               GdkEventButton *event, gpointer userdata);
 
 static void filesel_file_list_select_row_multi(GtkCList *clist, gint row, gint col,
                                               GdkEventButton *event, gpointer userdata);
@@ -90,7 +90,7 @@ gchar *filesel_select_file(const gchar *title, const gchar *file)
                gtk_main_iteration();
 
        if (filesel_ack) {
                gtk_main_iteration();
 
        if (filesel_ack) {
-               gchar *str;
+               const gchar *str;
 
                str = gtk_file_selection_get_filename
                        (GTK_FILE_SELECTION(filesel));
 
                str = gtk_file_selection_get_filename
                        (GTK_FILE_SELECTION(filesel));
@@ -148,7 +148,7 @@ GList *filesel_select_multiple_files(const gchar *title, const gchar *file)
                gtk_main_iteration();
 
        if (filesel_ack) {
                gtk_main_iteration();
 
        if (filesel_ack) {
-               gchar *fname = NULL;
+               const gchar *fname = NULL;
 
                list = filesel_get_multiple_filenames();
 
 
                list = filesel_get_multiple_filenames();
 
@@ -182,17 +182,17 @@ static void filesel_create(const gchar *title, gboolean multiple_files)
        gtk_window_set_wmclass
                (GTK_WINDOW(filesel), "file_selection", "Sylpheed");
 
        gtk_window_set_wmclass
                (GTK_WINDOW(filesel), "file_selection", "Sylpheed");
 
-       gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button),
-                          "clicked", GTK_SIGNAL_FUNC(filesel_ok_cb),
-                          NULL);
-       gtk_signal_connect
-               (GTK_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button),
-                "clicked", GTK_SIGNAL_FUNC(filesel_cancel_cb),
+       g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button),
+                        "clicked", G_CALLBACK(filesel_ok_cb),
+                        NULL);
+       g_signal_connect
+               (G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button),
+                "clicked", G_CALLBACK(filesel_cancel_cb),
                 NULL);
                 NULL);
-       gtk_signal_connect(GTK_OBJECT(filesel), "delete_event",
-                          GTK_SIGNAL_FUNC(delete_event), NULL);
-       gtk_signal_connect(GTK_OBJECT(filesel), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(filesel), "delete_event",
+                        G_CALLBACK(delete_event), NULL);
+       g_signal_connect(G_OBJECT(filesel), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(filesel);
 
        if (multiple_files) {
        MANAGE_WINDOW_SIGNALS_CONNECT(filesel);
 
        if (multiple_files) {
@@ -245,10 +245,11 @@ static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data)
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                filesel_cancel_cb(NULL, NULL);
 {
        if (event && event->keyval == GDK_Escape)
                filesel_cancel_cb(NULL, NULL);
+       return FALSE;
 }
 
 /* handle both "select_row" and "unselect_row". note that we're using the
 }
 
 /* handle both "select_row" and "unselect_row". note that we're using the
@@ -329,15 +330,12 @@ static GList *filesel_get_multiple_filenames(void)
         * entry is only useful for extracting the current directory. */
        GtkCList *file_list  = GTK_CLIST(GTK_FILE_SELECTION(filesel)->file_list);
        GList    *list = NULL, *sel_list;
         * entry is only useful for extracting the current directory. */
        GtkCList *file_list  = GTK_CLIST(GTK_FILE_SELECTION(filesel)->file_list);
        GList    *list = NULL, *sel_list;
-       gchar    *cwd, *tmp;     
+       gchar    *cwd;   
        gboolean  separator;
 
        g_return_val_if_fail(file_list->selection != NULL, NULL);
 
        gboolean  separator;
 
        g_return_val_if_fail(file_list->selection != NULL, NULL);
 
-       tmp = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel));
-       tmp = g_strdup(tmp);
-       cwd = g_dirname(tmp);
-       g_free(tmp);
+       cwd = g_dirname(gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel)));
        g_return_val_if_fail(cwd != NULL, NULL);
 
        /* only quick way to check the end of a multi byte string for our
        g_return_val_if_fail(cwd != NULL, NULL);
 
        /* only quick way to check the end of a multi byte string for our
index 839600da177a58a79df7a6f1b868400688741de6..40ca671977ea39d77041e70059a8a9184ee92a42 100644 (file)
@@ -5,6 +5,7 @@
 #include <stdlib.h>
 
 #include "gtksctree.h"
 #include <stdlib.h>
 
 #include "gtksctree.h"
+#include "sylpheed-marshal.h"
 
 
 enum {
 
 
 enum {
@@ -64,8 +65,6 @@ static GtkCTreeClass *parent_class;
 static guint sctree_signals[LAST_SIGNAL];
 
 
 static guint sctree_signals[LAST_SIGNAL];
 
 
-#define GTK_CLIST_CLASS_FW(_widget_) GTK_CLIST_CLASS (((GtkObject*) (_widget_))->klass)
-
 /**
  * gtk_sctree_get_type:
  * @void: 
 /**
  * gtk_sctree_get_type:
  * @void: 
@@ -74,24 +73,28 @@ static guint sctree_signals[LAST_SIGNAL];
  * 
  * Return value: The type ID for GtkSCTreeClass
  **/
  * 
  * Return value: The type ID for GtkSCTreeClass
  **/
-GtkType
+GType
 gtk_sctree_get_type (void)
 {
 gtk_sctree_get_type (void)
 {
-       static GtkType sctree_type = 0;
+       static GType sctree_type = 0;
 
        if (!sctree_type) {
 
        if (!sctree_type) {
-               GtkTypeInfo sctree_info = {
-                       "GtkSCTree",
-                       sizeof (GtkSCTree),
+               GTypeInfo sctree_info = {
                        sizeof (GtkSCTreeClass),
                        sizeof (GtkSCTreeClass),
-                       (GtkClassInitFunc) gtk_sctree_class_init,
-                       (GtkObjectInitFunc) gtk_sctree_init,
-                       NULL, /* reserved_1 */
-                       NULL, /* reserved_2 */
-                       (GtkClassInitFunc) NULL
+
+                       (GBaseInitFunc) NULL,
+                       (GBaseFinalizeFunc) NULL,
+
+                       (GClassInitFunc) gtk_sctree_class_init,
+                       (GClassFinalizeFunc) NULL,
+                       NULL,   /* class_data */
+
+                       sizeof (GtkSCTree),
+                       0,      /* n_preallocs */
+                       (GInstanceInitFunc) gtk_sctree_init,
                };
 
                };
 
-               sctree_type = gtk_type_unique (gtk_ctree_get_type (), &sctree_info);
+               sctree_type = g_type_register_static (GTK_TYPE_CTREE, "GtkSCTree", &sctree_info, (GTypeFlags)0);
        }
 
        return sctree_type;
        }
 
        return sctree_type;
@@ -114,39 +117,43 @@ gtk_sctree_class_init (GtkSCTreeClass *klass)
        parent_class = gtk_type_class (gtk_ctree_get_type ());
 
        sctree_signals[ROW_POPUP_MENU] =
        parent_class = gtk_type_class (gtk_ctree_get_type ());
 
        sctree_signals[ROW_POPUP_MENU] =
-               gtk_signal_new ("row_popup_menu",
-                               GTK_RUN_FIRST,
-                               object_class->type,
-                               GTK_SIGNAL_OFFSET (GtkSCTreeClass, row_popup_menu),
-                               gtk_marshal_NONE__POINTER,
-                               GTK_TYPE_NONE, 1,
-                               GTK_TYPE_GDK_EVENT);
+               g_signal_new ("row_popup_menu",
+                             G_TYPE_FROM_CLASS (klass),
+                             G_SIGNAL_RUN_FIRST,
+                             G_STRUCT_OFFSET (GtkSCTreeClass, row_popup_menu),
+                             NULL, NULL,
+                             sylpheed_marshal_VOID__POINTER,
+                             G_TYPE_NONE, 1,
+                             GDK_TYPE_EVENT);
        sctree_signals[EMPTY_POPUP_MENU] =
        sctree_signals[EMPTY_POPUP_MENU] =
-               gtk_signal_new ("empty_popup_menu",
-                               GTK_RUN_FIRST,
-                               object_class->type,
-                               GTK_SIGNAL_OFFSET (GtkSCTreeClass, empty_popup_menu),
-                               gtk_marshal_NONE__POINTER,
-                               GTK_TYPE_NONE, 1,
-                               GTK_TYPE_GDK_EVENT);
+               g_signal_new ("empty_popup_menu",
+                             G_TYPE_FROM_CLASS (klass),
+                             G_SIGNAL_RUN_FIRST,
+                             G_STRUCT_OFFSET (GtkSCTreeClass, empty_popup_menu),
+                             NULL, NULL,
+                             sylpheed_marshal_VOID__POINTER,
+                             G_TYPE_NONE, 1,
+                             GDK_TYPE_EVENT);
        sctree_signals[OPEN_ROW] =
        sctree_signals[OPEN_ROW] =
-               gtk_signal_new ("open_row",
-                               GTK_RUN_FIRST,
-                               object_class->type,
-                               GTK_SIGNAL_OFFSET (GtkSCTreeClass, open_row),
-                               gtk_marshal_NONE__NONE,
-                               GTK_TYPE_NONE, 0);
+               g_signal_new ("open_row",
+                             G_TYPE_FROM_CLASS (klass),
+                             G_SIGNAL_RUN_FIRST,
+                             G_STRUCT_OFFSET (GtkSCTreeClass, open_row),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                             G_TYPE_NONE, 0);
        sctree_signals[START_DRAG] =
        sctree_signals[START_DRAG] =
-               gtk_signal_new ("start_drag",
-                               GTK_RUN_FIRST,
-                               object_class->type,
-                               GTK_SIGNAL_OFFSET (GtkSCTreeClass, start_drag),
-                               gtk_marshal_NONE__INT_POINTER,
-                               GTK_TYPE_NONE, 2,
-                               GTK_TYPE_INT,
-                               GTK_TYPE_GDK_EVENT);
-
-       gtk_object_class_add_signals (object_class, sctree_signals, LAST_SIGNAL);
+               g_signal_new ("start_drag",
+                             G_TYPE_FROM_CLASS (klass),
+                             G_SIGNAL_RUN_FIRST,
+                             G_STRUCT_OFFSET (GtkSCTreeClass, start_drag),
+                             NULL, NULL,
+                             sylpheed_marshal_VOID__INT_POINTER,
+                             G_TYPE_NONE, 2,
+                             G_TYPE_INT,
+                             GDK_TYPE_EVENT);
+
+       /* gtk_object_class_add_signals (object_class, sctree_signals, LAST_SIGNAL); */
 
        clist_class->clear = gtk_sctree_clear;
         ctree_class->tree_collapse = gtk_sctree_collapse;
 
        clist_class->clear = gtk_sctree_clear;
         ctree_class->tree_collapse = gtk_sctree_collapse;
@@ -228,7 +235,7 @@ select_row (GtkSCTree *sctree, gint row, gint col, guint state)
 
        gtk_clist_freeze (GTK_CLIST (sctree));
        GTK_CLIST(sctree)->focus_row = row;
 
        gtk_clist_freeze (GTK_CLIST (sctree));
        GTK_CLIST(sctree)->focus_row = row;
-       GTK_CLIST_CLASS(GTK_OBJECT(sctree)->klass)->refresh(GTK_CLIST(sctree));
+       GTK_CLIST_GET_CLASS(sctree)->refresh(GTK_CLIST(sctree));
        if (!additive)
                gtk_clist_unselect_all (GTK_CLIST (sctree));
 
        if (!additive)
                gtk_clist_unselect_all (GTK_CLIST (sctree));
 
@@ -242,12 +249,12 @@ select_row (GtkSCTree *sctree, gint row, gint col, guint state)
                        if (row_is_selected(sctree, row))
                                gtk_clist_unselect_row (GTK_CLIST (sctree), row, col);
                        else
                        if (row_is_selected(sctree, row))
                                gtk_clist_unselect_row (GTK_CLIST (sctree), row, col);
                        else
-                               gtk_signal_emit_by_name
-                                       (GTK_OBJECT (sctree),
+                               g_signal_emit_by_name
+                                       (G_OBJECT (sctree),
                                         "tree_select_row", node, col);
                } else {
                                         "tree_select_row", node, col);
                } else {
-                       gtk_signal_emit_by_name
-                               (GTK_OBJECT (sctree),
+                       g_signal_emit_by_name
+                               (G_OBJECT (sctree),
                                 "tree_select_row", node, col);
                }
                sctree->anchor_row = node;
                                 "tree_select_row", node, col);
                }
                sctree->anchor_row = node;
@@ -322,14 +329,14 @@ gtk_sctree_button_press (GtkWidget *widget, GdkEventButton *event)
                        if (on_row) {
                                if (!row_is_selected(sctree,row))
                                        select_row (sctree, row, col, 0);
                        if (on_row) {
                                if (!row_is_selected(sctree,row))
                                        select_row (sctree, row, col, 0);
-                               gtk_signal_emit (GTK_OBJECT (sctree),
+                               g_signal_emit (G_OBJECT (sctree),
                                                 sctree_signals[ROW_POPUP_MENU],
                                                 sctree_signals[ROW_POPUP_MENU],
-                                                event);
+                                                0, event);
                        } else {
                                gtk_clist_unselect_all(clist);
                        } else {
                                gtk_clist_unselect_all(clist);
-                               gtk_signal_emit (GTK_OBJECT (sctree),
+                               g_signal_emit (G_OBJECT (sctree),
                                                 sctree_signals[EMPTY_POPUP_MENU],
                                                 sctree_signals[EMPTY_POPUP_MENU],
-                                                event);
+                                                0, event);
                        }
                        retval = TRUE;
                }
                        }
                        retval = TRUE;
                }
@@ -344,8 +351,8 @@ gtk_sctree_button_press (GtkWidget *widget, GdkEventButton *event)
                sctree->dnd_select_pending_state = 0;
 
                if (on_row)
                sctree->dnd_select_pending_state = 0;
 
                if (on_row)
-                       gtk_signal_emit (GTK_OBJECT (sctree),
-                                        sctree_signals[OPEN_ROW]);
+                       g_signal_emit (GTK_OBJECT (sctree),
+                                      sctree_signals[OPEN_ROW], 0);
 
                retval = TRUE;
                break;
 
                retval = TRUE;
                break;
@@ -444,10 +451,11 @@ gtk_sctree_motion (GtkWidget *widget, GdkEventMotion *event)
                sctree->dnd_select_pending_state = 0;
        }
 
                sctree->dnd_select_pending_state = 0;
        }
 
-       gtk_signal_emit (GTK_OBJECT (sctree),
-                        sctree_signals[START_DRAG],
-                        sctree->dnd_press_button,
-                        event);
+       g_signal_emit (G_OBJECT (sctree),
+                      sctree_signals[START_DRAG],
+                      0,
+                      sctree->dnd_press_button,
+                      event);
        return TRUE;
 }
 
        return TRUE;
 }
 
@@ -540,13 +548,36 @@ gtk_sctree_collapse (GtkCTree *ctree, GtkCTreeNode *node)
 GtkWidget *gtk_sctree_new_with_titles (gint columns, gint tree_column, 
                                       gchar *titles[])
 {
 GtkWidget *gtk_sctree_new_with_titles (gint columns, gint tree_column, 
                                       gchar *titles[])
 {
+#if 0
        GtkSCTree* sctree;
 
        sctree = gtk_type_new (gtk_sctree_get_type ());
        gtk_ctree_construct (GTK_CTREE (sctree), columns, tree_column, titles);
        GtkSCTree* sctree;
 
        sctree = gtk_type_new (gtk_sctree_get_type ());
        gtk_ctree_construct (GTK_CTREE (sctree), columns, tree_column, titles);
+       
        gtk_clist_set_selection_mode(GTK_CLIST(sctree), GTK_SELECTION_EXTENDED);
 
        return GTK_WIDGET (sctree);
        gtk_clist_set_selection_mode(GTK_CLIST(sctree), GTK_SELECTION_EXTENDED);
 
        return GTK_WIDGET (sctree);
+#else
+       GtkWidget *widget;
+                                                                                                            
+       g_return_val_if_fail (columns > 0, NULL);
+       g_return_val_if_fail (tree_column >= 0 && tree_column < columns, NULL);
+                                                                                                            
+       widget = gtk_widget_new (TYPE_GTK_SCTREE,
+                                "n_columns", columns,
+                                "tree_column", tree_column,
+                                NULL);
+       if (titles) {
+               GtkCList *clist = GTK_CLIST (widget);
+               guint i;
+
+               for (i = 0; i < columns; i++)
+                       gtk_clist_set_column_title (clist, i, titles[i]);
+               gtk_clist_column_titles_show (clist);
+       }
+
+       return widget;
+#endif
 }
 
 void gtk_sctree_select (GtkSCTree *sctree, GtkCTreeNode *node)
 }
 
 void gtk_sctree_select (GtkSCTree *sctree, GtkCTreeNode *node)
@@ -698,7 +729,7 @@ gtk_sctree_sort_recursive (GtkCTree     *ctree,
        gtk_clist_freeze (clist);
 
        if (clist->selection_mode == GTK_SELECTION_EXTENDED) {
        gtk_clist_freeze (clist);
 
        if (clist->selection_mode == GTK_SELECTION_EXTENDED) {
-               GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL);
+               GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
       
                g_list_free (clist->undo_selection);
                g_list_free (clist->undo_unselection);
       
                g_list_free (clist->undo_selection);
                g_list_free (clist->undo_unselection);
@@ -737,7 +768,7 @@ gtk_sctree_sort_node (GtkCTree     *ctree,
        gtk_clist_freeze (clist);
 
        if (clist->selection_mode == GTK_SELECTION_EXTENDED) {
        gtk_clist_freeze (clist);
 
        if (clist->selection_mode == GTK_SELECTION_EXTENDED) {
-               GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL);
+               GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
 
                g_list_free (clist->undo_selection);
                g_list_free (clist->undo_unselection);
 
                g_list_free (clist->undo_selection);
                g_list_free (clist->undo_unselection);
@@ -780,7 +811,7 @@ gtk_ctree_unlink (GtkCTree     *ctree,
        clist = GTK_CLIST (ctree);
   
        if (update_focus_row && clist->selection_mode == GTK_SELECTION_EXTENDED) {
        clist = GTK_CLIST (ctree);
   
        if (update_focus_row && clist->selection_mode == GTK_SELECTION_EXTENDED) {
-               GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL);
+               GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
 
                g_list_free (clist->undo_selection);
                g_list_free (clist->undo_unselection);
 
                g_list_free (clist->undo_selection);
                g_list_free (clist->undo_unselection);
@@ -893,7 +924,7 @@ gtk_ctree_link (GtkCTree     *ctree,
        clist = GTK_CLIST (ctree);
 
        if (update_focus_row && clist->selection_mode == GTK_SELECTION_EXTENDED) {
        clist = GTK_CLIST (ctree);
 
        if (update_focus_row && clist->selection_mode == GTK_SELECTION_EXTENDED) {
-               GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL);
+               GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL);
 
                g_list_free (clist->undo_selection);
                g_list_free (clist->undo_unselection);
 
                g_list_free (clist->undo_selection);
                g_list_free (clist->undo_unselection);
index 70b69b7a2ecd86a3ff07cda40cd0797a8fac97ce..387cc0c7a6891a74fee7a6bde020a6e38b8813ff 100644 (file)
@@ -52,7 +52,7 @@ struct _GtkSCTreeClass {
 };
 
 
 };
 
 
-GtkType gtk_sctree_get_type (void);
+GType gtk_sctree_get_type (void);
 
 GtkWidget *gtk_sctree_new_with_titles  (gint            columns, 
                                         gint            tree_column, 
 
 GtkWidget *gtk_sctree_new_with_titles  (gint            columns, 
                                         gint            tree_column, 
index 091c1907ed561d9e5115adececf8b087296ad815..5a79123ce1014852d20afc3d2bf9e99514d3651f 100644 (file)
@@ -48,24 +48,28 @@ static void gtk_shruler_draw_ticks  (GtkRuler        *ruler);
 static void gtk_shruler_draw_pos       (GtkRuler        *ruler);
 #endif
 
 static void gtk_shruler_draw_pos       (GtkRuler        *ruler);
 #endif
 
-guint
+GType
 gtk_shruler_get_type(void)
 {
 gtk_shruler_get_type(void)
 {
-       static guint shruler_type = 0;
+       static GType shruler_type = 0;
 
        if ( !shruler_type ) {
 
        if ( !shruler_type ) {
-               static const GtkTypeInfo shruler_info = {
-                       "GtkSHRuler",
-                       sizeof (GtkSHRuler),
+               static const GTypeInfo shruler_info = {
                        sizeof (GtkSHRulerClass),
                        sizeof (GtkSHRulerClass),
-                       (GtkClassInitFunc) gtk_shruler_class_init,
-                       (GtkObjectInitFunc) gtk_shruler_init,
-                       /* reserved_1 */ NULL,
-               /* reserved_2 */ NULL,
-               (GtkClassInitFunc) NULL,
-        };
+
+                       (GBaseInitFunc) NULL,
+                       (GBaseFinalizeFunc) NULL,
+
+                       (GClassInitFunc) gtk_shruler_class_init,
+                       (GClassFinalizeFunc) NULL,
+                       NULL,   /* class_data */
+
+                       sizeof (GtkSHRuler),
+                       0,      /* n_preallocs */
+                       (GInstanceInitFunc) gtk_shruler_init,
+               };
                /* inherit from GtkHRuler */
                /* inherit from GtkHRuler */
-       shruler_type = gtk_type_unique( gtk_hruler_get_type (), &shruler_info );
+               shruler_type = g_type_register_static (GTK_TYPE_HRULER, "GtkSHRuler", &shruler_info, (GTypeFlags)0);
        }
        return shruler_type;
 }
        }
        return shruler_type;
 }
@@ -99,15 +103,15 @@ gtk_shruler_init (GtkSHRuler * shruler)
        GtkWidget * widget;
        
        widget = GTK_WIDGET (shruler);
        GtkWidget * widget;
        
        widget = GTK_WIDGET (shruler);
-       widget->requisition.width = widget->style->klass->xthickness * 2 + 1;
-       widget->requisition.height = widget->style->klass->ythickness * 2 + RULER_HEIGHT;
+       widget->requisition.width = widget->style->xthickness * 2 + 1;
+       widget->requisition.height = widget->style->ythickness * 2 + RULER_HEIGHT;
 }
 
 
 GtkWidget*
 gtk_shruler_new(void)
 {
 }
 
 
 GtkWidget*
 gtk_shruler_new(void)
 {
-       return GTK_WIDGET( gtk_type_new( gtk_shruler_get_type() ) );
+       return GTK_WIDGET( g_object_new( gtk_shruler_get_type(), NULL ) );
 }
 
 static void
 }
 
 static void
@@ -132,10 +136,10 @@ gtk_shruler_draw_ticks(GtkRuler *ruler)
        
        gc = widget->style->fg_gc[GTK_STATE_NORMAL];
        bg_gc = widget->style->bg_gc[GTK_STATE_NORMAL];
        
        gc = widget->style->fg_gc[GTK_STATE_NORMAL];
        bg_gc = widget->style->bg_gc[GTK_STATE_NORMAL];
-       font = widget->style->font;
+       font = gtk_style_get_font(widget->style);
 
 
-       xthickness = widget->style->klass->xthickness;
-       ythickness = widget->style->klass->ythickness;
+       xthickness = widget->style->xthickness;
+       ythickness = widget->style->ythickness;
 
        width = widget->allocation.width;
        height = widget->allocation.height - ythickness * 2;
 
        width = widget->allocation.width;
        height = widget->allocation.height - ythickness * 2;
index df7afb50bb6ddf4c88f641bfb74ae4abbfde151c..2d6ddb2345cfd68d15cb2c223670ba9efd70e426 100644 (file)
@@ -49,7 +49,7 @@ struct _GtkSHRulerClass
 };
 
 
 };
 
 
-guint      gtk_shruler_get_type (void);
+GType      gtk_shruler_get_type (void);
 GtkWidget* gtk_shruler_new      (void);
 void       gtk_shruler_set_pos  (GtkSHRuler *ruler,
                                 gfloat      pos);
 GtkWidget* gtk_shruler_new      (void);
 void       gtk_shruler_set_pos  (GtkSHRuler *ruler,
                                 gfloat      pos);
index 6430db91fd41107c166d4670b60b12122156c06c..4abec525f8596b07a90cfb9449fa89cf811427b8 100644 (file)
@@ -29,7 +29,8 @@
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkctree.h>
 #include <gtk/gtkcombo.h>
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkctree.h>
 #include <gtk/gtkcombo.h>
-#include <gtk/gtkthemes.h>
+#warning FIXME_GTK2
+/* #include <gtk/gtkthemes.h> */
 #include <gtk/gtkbindings.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <gtk/gtkbindings.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include "menu.h"
 #include "prefs_account.h"
 
 #include "menu.h"
 #include "prefs_account.h"
 
-gint gtkut_get_font_width(GdkFont *font)
+#warning FIXME_GTK2
+gboolean gtkut_get_font_size(GtkWidget *widget,
+                            gint *width, gint *height)
 {
 {
-       gchar *str;
-       gint width;
+       PangoLayout *layout;
+       const gchar *str = "Abcdef";
 
 
-       if (conv_get_current_charset() == C_UTF_8)
-               str = "Abcdef";
-       else
-               str = _("Abcdef");
-
-       width = gdk_string_width(font, str);
-       width /= strlen(str);
-
-       return width;
-}
-
-gint gtkut_get_font_height(GdkFont *font)
-{
-       gchar *str;
-       gint height;
-
-       if (conv_get_current_charset() == C_UTF_8)
-               str = "Abcdef";
-       else
-               str = _("Abcdef");
-
-       height = gdk_string_height(font, str);
-
-       return height;
-}
-
-GdkFont *gtkut_font_load(const gchar *fontset_name)
-{
-       GdkFont *font;
-
-       g_return_val_if_fail(fontset_name != NULL, NULL);
-
-       if (conv_get_current_charset() == C_US_ASCII)
-               font = gtkut_font_load_from_fontset(fontset_name);
-       else
-               font = gdk_fontset_load(fontset_name);
-
-       return font;
-}
+       g_return_val_if_fail(GTK_IS_WIDGET(widget), FALSE);
 
 
-GdkFont *gtkut_font_load_from_fontset(const gchar *fontset_name)
-{
-       GdkFont *font = NULL;
-
-       if (strchr(fontset_name, ',') == NULL) {
-               font = gdk_font_load(fontset_name);
-       } else {
-               gchar **fonts;
-               gint i;
-
-               fonts = g_strsplit(fontset_name, ",", -1);
-               for (i = 0; fonts[i] != NULL && fonts[i][0] != '\0';
-                    i++) {
-                       font = gdk_font_load(fonts[i]);
-                       if (font) break;
-               }
-               g_strfreev(fonts);
-       }
+       layout = gtk_widget_create_pango_layout(widget, str);
+       g_return_val_if_fail(layout, FALSE);
+       pango_layout_get_pixel_size(layout, width, height);
+       if (width)
+               *width = *width / g_utf8_strlen(str, -1);
+       g_object_unref(layout);
 
 
-       return font;
+       return TRUE;
 }
 
 void gtkut_convert_int_to_gdk_color(gint rgbvalue, GdkColor *color)
 }
 
 void gtkut_convert_int_to_gdk_color(gint rgbvalue, GdkColor *color)
@@ -136,7 +89,7 @@ void gtkut_button_set_create(GtkWidget **bbox,
 
        *bbox = gtk_hbutton_box_new();
        gtk_button_box_set_layout(GTK_BUTTON_BOX(*bbox), GTK_BUTTONBOX_END);
 
        *bbox = gtk_hbutton_box_new();
        gtk_button_box_set_layout(GTK_BUTTON_BOX(*bbox), GTK_BUTTONBOX_END);
-       gtk_button_box_set_spacing(GTK_BUTTON_BOX(*bbox), 5);
+       gtk_box_set_spacing(GTK_BOX(*bbox), 5);
 
        *button1 = gtk_button_new_with_label(label1);
        GTK_WIDGET_SET_FLAGS(*button1, GTK_CAN_DEFAULT);
 
        *button1 = gtk_button_new_with_label(label1);
        GTK_WIDGET_SET_FLAGS(*button1, GTK_CAN_DEFAULT);
@@ -343,23 +296,16 @@ void gtkut_combo_set_items(GtkCombo *combo, const gchar *str1, ...)
 gchar *gtkut_editable_get_selection(GtkEditable *editable)
 {
        guint start_pos, end_pos;
 gchar *gtkut_editable_get_selection(GtkEditable *editable)
 {
        guint start_pos, end_pos;
+       gboolean found;
 
 
-       g_return_val_if_fail(editable != NULL, NULL);
+       g_return_val_if_fail(GTK_IS_EDITABLE(editable), NULL);
 
 
-       if (!editable->has_selection) return NULL;
-
-       if (editable->selection_start_pos == editable->selection_end_pos)
+       found = gtk_editable_get_selection_bounds(editable,
+                                                 &start_pos, &end_pos);
+       if (found)
+               return gtk_editable_get_chars(editable, start_pos, end_pos);
+       else
                return NULL;
                return NULL;
-
-       if (editable->selection_start_pos < editable->selection_end_pos) {
-               start_pos = editable->selection_start_pos;
-               end_pos = editable->selection_end_pos;
-       } else {
-               start_pos = editable->selection_end_pos;
-               end_pos = editable->selection_start_pos;
-       }
-
-       return gtk_editable_get_chars(editable, start_pos, end_pos);
 }
 
 /*
 }
 
 /*
@@ -375,9 +321,12 @@ static void gtkut_check_before_remove(GtkWidget *widget, gpointer unused)
        if (GTK_IS_CONTAINER(widget))
                gtk_container_forall(GTK_CONTAINER(widget),
                                     gtkut_check_before_remove, NULL);
        if (GTK_IS_CONTAINER(widget))
                gtk_container_forall(GTK_CONTAINER(widget),
                                     gtkut_check_before_remove, NULL);
+#warning FIXME_GTK2
+#if 0
        if (GTK_IS_EDITABLE(widget))
                gtk_editable_claim_selection(GTK_EDITABLE(widget),
                                             FALSE, GDK_CURRENT_TIME);
        if (GTK_IS_EDITABLE(widget))
                gtk_editable_claim_selection(GTK_EDITABLE(widget),
                                             FALSE, GDK_CURRENT_TIME);
+#endif
 }
 
 /*
 }
 
 /*
@@ -444,6 +393,8 @@ void gtkut_widget_get_uposition(GtkWidget *widget, gint *px, gint *py)
 
 void gtkut_widget_disable_theme_engine(GtkWidget *widget)
 {
 
 void gtkut_widget_disable_theme_engine(GtkWidget *widget)
 {
+#warning FIXME_GTK2
+#if 0
        GtkStyle *style, *new_style;
 
        style = gtk_widget_get_style(widget);
        GtkStyle *style, *new_style;
 
        style = gtk_widget_get_style(widget);
@@ -457,24 +408,14 @@ void gtkut_widget_disable_theme_engine(GtkWidget *widget)
                style->engine = engine;
                gtk_widget_set_style(widget, new_style);
        }
                style->engine = engine;
                gtk_widget_set_style(widget, new_style);
        }
-}
-
-static void gtkut_widget_draw_cb(GtkWidget *widget, GdkRectangle *area,
-                                gboolean *flag)
-{
-       *flag = TRUE;
-       gtk_signal_disconnect_by_data(GTK_OBJECT(widget), flag);
+#endif
 }
 
 void gtkut_widget_wait_for_draw(GtkWidget *widget)
 {
 }
 
 void gtkut_widget_wait_for_draw(GtkWidget *widget)
 {
-       gboolean flag = FALSE;
-
        if (!GTK_WIDGET_DRAWABLE(widget)) return;
 
        if (!GTK_WIDGET_DRAWABLE(widget)) return;
 
-       gtk_signal_connect(GTK_OBJECT(widget), "draw",
-                          GTK_SIGNAL_FUNC(gtkut_widget_draw_cb), &flag);
-       while (!flag)
+       while (gtk_events_pending())
                gtk_main_iteration();
 }
 
                gtk_main_iteration();
 }
 
@@ -483,16 +424,16 @@ static void gtkut_clist_bindings_add(GtkWidget *clist)
        GtkBindingSet *binding_set;
 
        binding_set = gtk_binding_set_by_class
        GtkBindingSet *binding_set;
 
        binding_set = gtk_binding_set_by_class
-               (GTK_CLIST_CLASS(GTK_OBJECT(clist)->klass));
+               (GTK_CLIST_GET_CLASS(clist));
 
        gtk_binding_entry_add_signal(binding_set, GDK_n, GDK_CONTROL_MASK,
                                     "scroll_vertical", 2,
 
        gtk_binding_entry_add_signal(binding_set, GDK_n, GDK_CONTROL_MASK,
                                     "scroll_vertical", 2,
-                                    GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
-                                    GTK_TYPE_FLOAT, 0.0);
+                                    G_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD,
+                                    G_TYPE_FLOAT, 0.0);
        gtk_binding_entry_add_signal(binding_set, GDK_p, GDK_CONTROL_MASK,
                                     "scroll_vertical", 2,
        gtk_binding_entry_add_signal(binding_set, GDK_p, GDK_CONTROL_MASK,
                                     "scroll_vertical", 2,
-                                    GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
-                                    GTK_TYPE_FLOAT, 0.0);
+                                    G_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD,
+                                    G_TYPE_FLOAT, 0.0);
 }
 
 void gtkut_widget_init(void)
 }
 
 void gtkut_widget_init(void)
@@ -500,16 +441,22 @@ void gtkut_widget_init(void)
        GtkWidget *clist;
 
        clist = gtk_clist_new(1);
        GtkWidget *clist;
 
        clist = gtk_clist_new(1);
+       g_object_ref(G_OBJECT(clist));
+       gtk_object_sink(GTK_OBJECT(clist));
        gtkut_clist_bindings_add(clist);
        gtkut_clist_bindings_add(clist);
-       gtk_widget_unref(clist);
+       g_object_unref(G_OBJECT(clist));
 
        clist = gtk_ctree_new(1, 0);
 
        clist = gtk_ctree_new(1, 0);
+       g_object_ref(G_OBJECT(clist));
+       gtk_object_sink(GTK_OBJECT(clist));
        gtkut_clist_bindings_add(clist);
        gtkut_clist_bindings_add(clist);
-       gtk_widget_unref(clist);
+       g_object_unref(G_OBJECT(clist));
 
        clist = gtk_sctree_new_with_titles(1, 0, NULL);
 
        clist = gtk_sctree_new_with_titles(1, 0, NULL);
+       g_object_ref(G_OBJECT(clist));
+       gtk_object_sink(GTK_OBJECT(clist));
        gtkut_clist_bindings_add(clist);
        gtkut_clist_bindings_add(clist);
-       gtk_widget_unref(clist);
+       g_object_unref(G_OBJECT(clist));
 }
 
 void gtkut_widget_set_app_icon(GtkWidget *widget)
 }
 
 void gtkut_widget_set_app_icon(GtkWidget *widget)
@@ -587,4 +534,154 @@ void gtkut_set_widget_bgcolor_rgb(GtkWidget *widget, guint rgbvalue)
        newstyle->bg[GTK_STATE_ACTIVE]   = gdk_color;
        gtk_widget_set_style(widget, newstyle);
 }
        newstyle->bg[GTK_STATE_ACTIVE]   = gdk_color;
        gtk_widget_set_style(widget, newstyle);
 }
+  
+#warning FIXME_GTK2
+#if 1 /* FIXME_GTK2 */
+gboolean gtkut_text_buffer_match_string(GtkTextBuffer *textbuf, gint pos, gunichar *wcs,
+                                       gint len, gboolean case_sens)
+{
+       GtkTextIter start_iter, end_iter;
+       gchar *utf8str;
+       gint match_count = 0;
+
+       gtk_text_buffer_get_iter_at_offset(textbuf, &start_iter, pos);
+       gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter, pos + len);
 
 
+       utf8str = gtk_text_buffer_get_text(textbuf, &start_iter, &end_iter, FALSE);
+       if (!utf8str) return FALSE;
+
+       if ((gint) g_utf8_strlen(utf8str, -1) != len) {
+               g_free(utf8str);
+               return FALSE;
+       }
+
+       for (; match_count < len; pos++, match_count++) {
+               gchar *ptr = g_utf8_offset_to_pointer(utf8str, match_count);
+               gunichar ch;
+
+               if (!ptr) break;
+               ch = g_utf8_get_char(ptr);
+
+               if (case_sens) {
+                       if (ch != wcs[match_count])
+                               break;
+               } else {
+                       if (g_unichar_tolower(ch) !=
+                           g_unichar_tolower(wcs[match_count]))
+                               break;
+               }
+       }
+
+       g_free(utf8str);
+
+       if (match_count == len)
+               return TRUE;
+       else
+               return FALSE;
+}
+
+guint gtkut_text_buffer_str_compare_n(GtkTextBuffer *textbuf,
+                                     guint pos1, guint pos2,
+                                     guint len, guint text_len)
+{
+       guint i;
+
+       for (i = 0; i < len && pos1 + i < text_len && pos2 + i < text_len; i++) {
+               GtkTextIter start_iter, end_iter;
+               gchar *utf8str1, *utf8str2;
+
+               gtk_text_buffer_get_iter_at_offset(textbuf, &start_iter,
+                                                  pos1 + i);
+               gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter,
+                                                  pos1 + i + 1);
+               utf8str1 = gtk_text_buffer_get_text(textbuf,
+                                                   &start_iter,
+                                                   &end_iter,
+                                                   FALSE);
+
+               gtk_text_buffer_get_iter_at_offset(textbuf, &start_iter,
+                                                  pos2 + i);
+               gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter,
+                                                  pos2 + i + 1);
+               utf8str2 = gtk_text_buffer_get_text(textbuf,
+                                                   &start_iter,
+                                                   &end_iter,
+                                                   FALSE);
+
+               if (!utf8str1 || !utf8str2 || strcmp(utf8str1, utf8str2)) {
+                       g_free(utf8str1);
+                       g_free(utf8str2);
+                       break;
+               }
+
+               g_free(utf8str1);
+               g_free(utf8str2);
+       }
+
+       return i;
+}
+
+guint gtkut_text_buffer_str_compare(GtkTextBuffer *textbuf,
+                                   guint start_pos, guint text_len,
+                                   const gchar *str)
+{
+       gunichar *wcs;
+       guint len = 0;
+       glong items_read = 0, items_written = 0;
+       gboolean result;
+       GError *error = NULL;
+
+       if (!str) return 0;
+
+       wcs = g_utf8_to_ucs4(str, -1, &items_read, &items_written, &error);
+       if (error != NULL) {
+               g_warning("An error occured while converting a string from UTF-8 to UCS-4: %s\n",
+                         error->message);
+               g_error_free(error);
+       }
+       if (!wcs || items_written <= 0) return 0;
+       len = (guint) items_written;
+
+       if (len > text_len - start_pos)
+               result = FALSE;
+       else
+               result = gtkut_text_buffer_match_string(textbuf, start_pos,
+                                                       wcs, len,
+                                                       TRUE);
+
+       g_free(wcs);
+
+       return result ? len : 0;
+}
+
+gboolean gtkut_text_buffer_is_uri_string(GtkTextBuffer *textbuf,
+                                        guint start_pos, guint text_len)
+{
+       if (gtkut_text_buffer_str_compare(textbuf, start_pos, text_len, "http://")  ||
+           gtkut_text_buffer_str_compare(textbuf, start_pos, text_len, "ftp://")   ||
+           gtkut_text_buffer_str_compare(textbuf, start_pos, text_len, "https://") ||
+           gtkut_text_buffer_str_compare(textbuf, start_pos, text_len, "www."))
+               return TRUE;
+
+       return FALSE;
+}
+  
+gchar *gtkut_text_view_get_selection(GtkTextView *textview)
+{
+       GtkTextBuffer *buffer;
+       GtkTextIter start_iter, end_iter;
+       gboolean found;
+
+       g_return_val_if_fail(GTK_IS_TEXT_VIEW(textview), NULL);
+
+       buffer = gtk_text_view_get_buffer(textview);
+       found = gtk_text_buffer_get_selection_bounds(buffer,
+                                                    &start_iter,
+                                                    &end_iter);
+       if (found)
+               return gtk_text_buffer_get_text(buffer, &start_iter, &end_iter,
+                                               FALSE);
+       else
+               return NULL;
+}
+#endif /* FIXME_GTK2 */
index 527733a402f584ca6cc583ae91b0659e228ca713..90b7eb0f0d1c4feb0fdebcc2593aea8690b6bb7b 100644 (file)
@@ -32,7 +32,7 @@
 #include <gtk/gtkeditable.h>
 #include <gtk/gtkctree.h>
 #include <gtk/gtkcombo.h>
 #include <gtk/gtkeditable.h>
 #include <gtk/gtkctree.h>
 #include <gtk/gtkcombo.h>
-#include "gtkstext.h"
+#include <gtk/gtktextview.h>
 #include <stdlib.h>
 #if HAVE_WCHAR_H
 #  include <wchar.h>
 #include <stdlib.h>
 #if HAVE_WCHAR_H
 #  include <wchar.h>
        (GTK_CTREE_ROW(node)->row.data)
 
 #define GTKUT_CTREE_REFRESH(clist) \
        (GTK_CTREE_ROW(node)->row.data)
 
 #define GTKUT_CTREE_REFRESH(clist) \
-       GTK_CLIST_CLASS(GTK_OBJECT(clist)->klass)->refresh(clist)
+       GTK_CLIST_GET_CLASS(clist)->refresh(clist)
 
 
-gint gtkut_get_font_width              (GdkFont        *font);
-gint gtkut_get_font_height             (GdkFont        *font);
-
-GdkFont *gtkut_font_load               (const gchar    *fontset_name);
-GdkFont *gtkut_font_load_from_fontset  (const gchar    *fontset_name);
+gboolean gtkut_get_font_size           (GtkWidget      *widget,
+                                        gint           *width,
+                                        gint           *height);
 
 void gtkut_convert_int_to_gdk_color    (gint            rgbvalue,
                                         GdkColor       *color);
 
 void gtkut_convert_int_to_gdk_color    (gint            rgbvalue,
                                         GdkColor       *color);
@@ -145,4 +143,24 @@ GtkWidget *gtkut_account_menu_new  (GList                  *ac_list,
 
 void gtkut_set_widget_bgcolor_rgb      (GtkWidget      *widget,
                                         guint           rgbvalue);
 
 void gtkut_set_widget_bgcolor_rgb      (GtkWidget      *widget,
                                         guint           rgbvalue);
+
+gboolean gtkut_text_buffer_match_string        (GtkTextBuffer  *text,
+                                        gint            pos,
+                                        gunichar       *wcs,
+                                        gint            len,
+                                        gboolean        case_sens);
+guint gtkut_text_buffer_str_compare_n  (GtkTextBuffer  *text,
+                                        guint           pos1,
+                                        guint           pos2,
+                                        guint           len,
+                                        guint           text_len);
+guint gtkut_text_buffer_str_compare    (GtkTextBuffer  *text,
+                                        guint           start_pos,
+                                        guint           text_len,
+                                        const gchar    *str);
+gboolean gtkut_text_buffer_is_uri_string(GtkTextBuffer *text,
+                                        guint           start_pos,
+                                        guint           text_len);
+gchar *gtkut_text_view_get_selection   (GtkTextView    *textview);
+
 #endif /* __GTKUTILS_H__ */
 #endif /* __GTKUTILS_H__ */
index 26e1e1508bcfeaedf133ec3fca79144d60bea980..1fb48119eb926cb48f5b4f5190db91e1bb81d6d2 100644 (file)
 
 #define MANAGE_WINDOW_SIGNALS_CONNECT(window) \
 { \
 
 #define MANAGE_WINDOW_SIGNALS_CONNECT(window) \
 { \
-       gtk_signal_connect(GTK_OBJECT(window), "focus_in_event", \
-                          GTK_SIGNAL_FUNC(manage_window_focus_in), NULL); \
-       gtk_signal_connect(GTK_OBJECT(window), "focus_out_event", \
-                          GTK_SIGNAL_FUNC(manage_window_focus_out), NULL); \
-       gtk_signal_connect(GTK_OBJECT(window), "unmap_event", \
-                          GTK_SIGNAL_FUNC(manage_window_unmap), NULL); \
-       gtk_signal_connect(GTK_OBJECT(window), "destroy", \
-                          GTK_SIGNAL_FUNC(manage_window_destroy), NULL); \
+       g_signal_connect(G_OBJECT(window), "focus_in_event", \
+                        G_CALLBACK(manage_window_focus_in), NULL); \
+       g_signal_connect(G_OBJECT(window), "focus_out_event", \
+                        G_CALLBACK(manage_window_focus_out), NULL); \
+       g_signal_connect(G_OBJECT(window), "unmap_event", \
+                        G_CALLBACK(manage_window_unmap), NULL); \
+       g_signal_connect(G_OBJECT(window), "destroy", \
+                        G_CALLBACK(manage_window_destroy), NULL); \
 }
 
 gint manage_window_focus_in            (GtkWidget      *widget,
 }
 
 gint manage_window_focus_in            (GtkWidget      *widget,
index eec7bb4b3f3fd99783c85fc459b379cb33c03597..d844410e6ded19ce138918deb12d723bd61c4a15 100644 (file)
@@ -29,6 +29,7 @@
 #include <gtk/gtkitemfactory.h>
 #include <gtk/gtkcheckmenuitem.h>
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkitemfactory.h>
 #include <gtk/gtkcheckmenuitem.h>
 #include <gtk/gtkbutton.h>
+#include <gtk/gtkwindow.h>
 
 #include "intl.h"
 #include "menu.h"
 
 #include "intl.h"
 #include "menu.h"
@@ -56,7 +57,7 @@ GtkWidget *menubar_create(GtkWidget *window, GtkItemFactoryEntry *entries,
        gtk_item_factory_set_translate_func(factory, menu_translate,
                                            NULL, NULL);
        gtk_item_factory_create_items(factory, n_entries, entries, data);
        gtk_item_factory_set_translate_func(factory, menu_translate,
                                            NULL, NULL);
        gtk_item_factory_create_items(factory, n_entries, entries, data);
-       gtk_accel_group_attach(factory->accel_group, GTK_OBJECT(window));
+       gtk_window_add_accel_group (GTK_WINDOW (window), factory->accel_group);
 
        return gtk_item_factory_get_widget(factory, path);
 }
 
        return gtk_item_factory_get_widget(factory, path);
 }
@@ -84,7 +85,7 @@ GtkWidget *popupmenu_create(GtkWidget *window, GtkItemFactoryEntry *entries,
        gtk_item_factory_set_translate_func(factory, menu_translate,
                                            NULL, NULL);
        gtk_item_factory_create_items(factory, n_entries, entries, data);
        gtk_item_factory_set_translate_func(factory, menu_translate,
                                            NULL, NULL);
        gtk_item_factory_create_items(factory, n_entries, entries, data);
-       gtk_accel_group_attach(accel_group, GTK_OBJECT(window));
+       gtk_window_add_accel_group(GTK_WINDOW (window), accel_group);
 
        return gtk_item_factory_get_widget(factory, path);
 }
 
        return gtk_item_factory_get_widget(factory, path);
 }
@@ -106,6 +107,8 @@ static void factory_print_func(gpointer data, gchar *string)
        g_string_append_c(out_str, '\n');
 }
 
        g_string_append_c(out_str, '\n');
 }
 
+#warning FIXME_GTK2
+#if 0
 GString *menu_factory_get_rc(const gchar *path)
 {
        GString *string;
 GString *menu_factory_get_rc(const gchar *path)
 {
        GString *string;
@@ -178,6 +181,7 @@ void menu_factory_copy_rc(const gchar *src_path, const gchar *dest_path)
        gtk_item_factory_parse_rc_string(string->str);
        g_string_free(string, TRUE);
 }
        gtk_item_factory_parse_rc_string(string->str);
        g_string_free(string, TRUE);
 }
+#endif
 
 void menu_set_sensitive(GtkItemFactory *ifactory, const gchar *path,
                        gboolean sensitive)
 
 void menu_set_sensitive(GtkItemFactory *ifactory, const gchar *path,
                        gboolean sensitive)
@@ -223,42 +227,25 @@ void menu_toggle_toggle(GtkItemFactory *ifactory, const gchar *path)
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), !((GTK_CHECK_MENU_ITEM(widget))->active));
 }
 
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), !((GTK_CHECK_MENU_ITEM(widget))->active));
 }
 
-void menu_button_position(GtkMenu *menu, gint *x, gint *y, gpointer user_data)
+void menu_button_position(GtkMenu *menu, gint *x, gint *y, gboolean *push_in,
+                         gpointer user_data)
 {
 {
-       GtkWidget *button;
-       GtkRequisition requisition;
-       gint button_xpos, button_ypos;
-       gint xpos, ypos;
-       gint width, height;
-       gint scr_width, scr_height;
-
-       g_return_if_fail(user_data != NULL);
-       g_return_if_fail(GTK_IS_BUTTON(user_data));
-
-       button = GTK_WIDGET(user_data);
-
-       gtk_widget_get_child_requisition(GTK_WIDGET(menu), &requisition);
-       width = requisition.width;
-       height = requisition.height;
-       gdk_window_get_origin(button->window, &button_xpos, &button_ypos);
-
-       xpos = button_xpos;
-       ypos = button_ypos + button->allocation.height;
-
-       scr_width = gdk_screen_width();
-       scr_height = gdk_screen_height();
-
-       if (xpos + width > scr_width)
-               xpos -= (xpos + width) - scr_width;
-       if (ypos + height > scr_height)
-               ypos = button_ypos - height;
-       if (xpos < 0)
-               xpos = 0;
-       if (ypos < 0)
-               ypos = 0;
-
-       *x = xpos;
-       *y = ypos;
+        GtkWidget *widget;
+        gint wheight;
+        gint wx, wy;
+
+       g_return_if_fail(x && y);
+       g_return_if_fail(GTK_IS_BUTTON(user_data));
+
+       widget = GTK_WIDGET(user_data);
+
+        gdk_window_get_origin(widget->window, x, y);
+        wheight = widget->requisition.height;
+        wx = widget->allocation.x;
+        wy = widget->allocation.y;
+         
+        *y = *y + wy + wheight;
+        *x = *x + wx;
 }
 
 gint menu_find_option_menu_index(GtkOptionMenu *optmenu, gpointer data,
 }
 
 gint menu_find_option_menu_index(GtkOptionMenu *optmenu, gpointer data,
@@ -275,7 +262,8 @@ gint menu_find_option_menu_index(GtkOptionMenu *optmenu, gpointer data,
        for (cur = GTK_MENU_SHELL(menu)->children, n = 0;
             cur != NULL; cur = cur->next, n++) {
                menuitem = GTK_WIDGET(cur->data);
        for (cur = GTK_MENU_SHELL(menu)->children, n = 0;
             cur != NULL; cur = cur->next, n++) {
                menuitem = GTK_WIDGET(cur->data);
-               menu_data = gtk_object_get_user_data(GTK_OBJECT(menuitem));
+               menu_data = g_object_get_data(G_OBJECT(menuitem),
+                                             MENU_VAL_ID);
                if (func) {
                        if (func(menu_data, data) == 0)
                                return n;
                if (func) {
                        if (func(menu_data, data) == 0)
                                return n;
@@ -291,6 +279,8 @@ static void menu_item_add_accel( GtkWidget *widget, guint accel_signal_id, GtkAc
                                 guint accel_key, GdkModifierType accel_mods, GtkAccelFlags accel_flags,
                                 gpointer user_data)
 {
                                 guint accel_key, GdkModifierType accel_mods, GtkAccelFlags accel_flags,
                                 gpointer user_data)
 {
+#warning FIXME_GTK2
+#if 0
        GtkWidget *connected = GTK_WIDGET(user_data);   
        if (gtk_signal_n_emissions_by_name(GTK_OBJECT(widget),"add_accelerator") > 1 ) return;
        gtk_widget_remove_accelerators(connected,"activate",FALSE);
        GtkWidget *connected = GTK_WIDGET(user_data);   
        if (gtk_signal_n_emissions_by_name(GTK_OBJECT(widget),"add_accelerator") > 1 ) return;
        gtk_widget_remove_accelerators(connected,"activate",FALSE);
@@ -302,26 +292,30 @@ static void menu_item_add_accel( GtkWidget *widget, guint accel_signal_id, GtkAc
                                   accel_key, accel_mods,
                                   GTK_ACCEL_VISIBLE );
        gtk_accel_group_unlock_entry(accel_group,accel_key,accel_mods);                            
                                   accel_key, accel_mods,
                                   GTK_ACCEL_VISIBLE );
        gtk_accel_group_unlock_entry(accel_group,accel_key,accel_mods);                            
+#endif
 }
 
 static void menu_item_remove_accel(GtkWidget *widget, GtkAccelGroup *accel_group,
                                   guint accel_key, GdkModifierType accel_mods,
                                   gpointer user_data)
 {      
 }
 
 static void menu_item_remove_accel(GtkWidget *widget, GtkAccelGroup *accel_group,
                                   guint accel_key, GdkModifierType accel_mods,
                                   gpointer user_data)
 {      
+#warning FIXME_GTK2
+#if 0
        GtkWidget *wid = GTK_WIDGET(user_data);
 
        if (gtk_signal_n_emissions_by_name(GTK_OBJECT(widget),
            "remove_accelerator") > 2 )
                return;
        gtk_widget_remove_accelerators(wid,"activate",FALSE);
        GtkWidget *wid = GTK_WIDGET(user_data);
 
        if (gtk_signal_n_emissions_by_name(GTK_OBJECT(widget),
            "remove_accelerator") > 2 )
                return;
        gtk_widget_remove_accelerators(wid,"activate",FALSE);
+#endif
 }
 
 static void connect_accel_change_signals(GtkWidget* widget, GtkWidget *wid2) 
 {
        gtk_signal_connect_after(GTK_OBJECT(widget), "add_accelerator", 
 }
 
 static void connect_accel_change_signals(GtkWidget* widget, GtkWidget *wid2) 
 {
        gtk_signal_connect_after(GTK_OBJECT(widget), "add_accelerator", 
-                                menu_item_add_accel, wid2);
+                                G_CALLBACK(menu_item_add_accel), wid2);
        gtk_signal_connect_after(GTK_OBJECT(widget), "remove_accelerator", 
        gtk_signal_connect_after(GTK_OBJECT(widget), "remove_accelerator", 
-                                menu_item_remove_accel, wid2);
+                                G_CALLBACK(menu_item_remove_accel), wid2);
 }
 
 void menu_connect_identical_items(void)
 }
 
 void menu_connect_identical_items(void)
index 467e616ee578a0c6d97a0e602f7e0398f865317a..d8fdf83c0da6e957853f5c879a7e09513ddd7752 100644 (file)
 #include <gtk/gtkmenushell.h>
 #include <gtk/gtkoptionmenu.h>
 
 #include <gtk/gtkmenushell.h>
 #include <gtk/gtkoptionmenu.h>
 
+#define MENU_VAL_ID "Sylpheed::Menu::ValueID"
+
 #define MENUITEM_ADD(menu, menuitem, label, data) \
 { \
        menuitem = gtk_menu_item_new_with_label(label); \
        gtk_widget_show(menuitem); \
 #define MENUITEM_ADD(menu, menuitem, label, data) \
 { \
        menuitem = gtk_menu_item_new_with_label(label); \
        gtk_widget_show(menuitem); \
-       gtk_menu_append(GTK_MENU(menu), menuitem); \
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); \
        if (data) \
        if (data) \
-               gtk_object_set_user_data(GTK_OBJECT(menuitem), \
-                                        GINT_TO_POINTER(data)); \
+               g_object_set_data(G_OBJECT(menuitem), \
+                                 MENU_VAL_ID, \
+                                 GINT_TO_POINTER(data)); \
 }
 
 #define menu_set_insensitive_all(menu_shell) \
 }
 
 #define menu_set_insensitive_all(menu_shell) \
@@ -75,6 +78,7 @@ void menu_toggle_toggle               (GtkItemFactory         *ifactory,
 void menu_button_position      (GtkMenu                *menu,
                                 gint                   *x,
                                 gint                   *y,
 void menu_button_position      (GtkMenu                *menu,
                                 gint                   *x,
                                 gint                   *y,
+                                gboolean               *push_in,
                                 gpointer                user_data);
 
 gint menu_find_option_menu_index(GtkOptionMenu         *optmenu,
                                 gpointer                user_data);
 
 gint menu_find_option_menu_index(GtkOptionMenu         *optmenu,
index 10dcab240b243b347c6755c29a38ff4a6c59a072..044f64a545291a1e17b67d05efddbfca75907622 100644 (file)
@@ -54,11 +54,16 @@ static void set_plugin_list(PluginWindow *pluginwindow)
        gchar *text[1];
        gint row;
        GtkCList *clist = GTK_CLIST(pluginwindow->plugin_list);
        gchar *text[1];
        gint row;
        GtkCList *clist = GTK_CLIST(pluginwindow->plugin_list);
+       GtkTextBuffer *textbuf;
+       GtkTextIter start_iter, end_iter;
        
        plugins = plugin_get_list();
        gtk_clist_freeze(clist);
        gtk_clist_clear(clist);
        
        plugins = plugin_get_list();
        gtk_clist_freeze(clist);
        gtk_clist_clear(clist);
-       gtk_editable_delete_text(GTK_EDITABLE(pluginwindow->plugin_desc), 0, -1);
+       textbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pluginwindow->plugin_desc));
+       gtk_text_buffer_get_start_iter(textbuf, &start_iter);
+       gtk_text_buffer_get_end_iter(textbuf, &end_iter);
+       gtk_text_buffer_delete(textbuf, &start_iter, &end_iter);
        gtk_widget_set_sensitive(pluginwindow->unload_btn, FALSE);
        
        for(cur = plugins; cur != NULL; cur = g_slist_next(cur)) {
        gtk_widget_set_sensitive(pluginwindow->unload_btn, FALSE);
        
        for(cur = plugins; cur != NULL; cur = g_slist_next(cur)) {
@@ -75,17 +80,20 @@ static void select_row_cb(GtkCList *clist, gint row, gint column,
                          GdkEventButton *event, PluginWindow *pluginwindow)
 {
        Plugin *plugin;
                          GdkEventButton *event, PluginWindow *pluginwindow)
 {
        Plugin *plugin;
-       GtkEditable *plugin_desc = GTK_EDITABLE(pluginwindow->plugin_desc);
+       GtkTextView *plugin_desc = GTK_TEXT_VIEW(pluginwindow->plugin_desc);
+       GtkTextBuffer *textbuf = gtk_text_view_get_buffer(plugin_desc);
+       GtkTextIter start_iter, end_iter;
        const gchar *text;
        const gchar *text;
-       gint pos = 0;
        
        plugin = (Plugin *) gtk_clist_get_row_data(clist, row);
        pluginwindow->selected_plugin = plugin;
 
        if (pluginwindow->selected_plugin != NULL) {
        
        plugin = (Plugin *) gtk_clist_get_row_data(clist, row);
        pluginwindow->selected_plugin = plugin;
 
        if (pluginwindow->selected_plugin != NULL) {
-               gtk_editable_delete_text(plugin_desc, 0, -1);
+               gtk_text_buffer_get_start_iter(textbuf, &start_iter);
+               gtk_text_buffer_get_end_iter(textbuf, &end_iter);
+               gtk_text_buffer_delete(textbuf, &start_iter, &end_iter);
                text = plugin_get_desc(plugin);
                text = plugin_get_desc(plugin);
-               gtk_editable_insert_text(plugin_desc, text, strlen(text), &pos);
+               gtk_text_buffer_insert(textbuf, &start_iter, text, strlen(text));
                gtk_widget_set_sensitive(pluginwindow->unload_btn, TRUE);
        } else {
                gtk_widget_set_sensitive(pluginwindow->unload_btn, FALSE);
                gtk_widget_set_sensitive(pluginwindow->unload_btn, TRUE);
        } else {
                gtk_widget_set_sensitive(pluginwindow->unload_btn, FALSE);
@@ -200,7 +208,7 @@ void pluginwindow_create()
                                       (scrolledwindow3), GTK_POLICY_NEVER,
                                       GTK_POLICY_ALWAYS);
 
                                       (scrolledwindow3), GTK_POLICY_NEVER,
                                       GTK_POLICY_ALWAYS);
 
-       plugin_desc = gtk_text_new(NULL, NULL);
+       plugin_desc = gtk_text_view_new();
        gtk_widget_show(plugin_desc);
        gtk_container_add(GTK_CONTAINER(scrolledwindow3), plugin_desc);
 
        gtk_widget_show(plugin_desc);
        gtk_container_add(GTK_CONTAINER(scrolledwindow3), plugin_desc);
 
@@ -227,7 +235,7 @@ void pluginwindow_create()
        GTK_WIDGET_SET_FLAGS(close_btn, GTK_CAN_DEFAULT);
        /* ----------------------------------------------------------- */
 
        GTK_WIDGET_SET_FLAGS(close_btn, GTK_CAN_DEFAULT);
        /* ----------------------------------------------------------- */
 
-       gtk_text_set_word_wrap(GTK_TEXT(plugin_desc), TRUE);
+       gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(plugin_desc), GTK_WRAP_WORD);
        gtk_widget_set_sensitive(GTK_WIDGET(unload_btn), FALSE);
 
        pluginwindow = g_new0(PluginWindow, 1);
        gtk_widget_set_sensitive(GTK_WIDGET(unload_btn), FALSE);
 
        pluginwindow = g_new0(PluginWindow, 1);
diff --git a/src/gtk/sylpheed-marshal.list b/src/gtk/sylpheed-marshal.list
new file mode 100644 (file)
index 0000000..7e722df
--- /dev/null
@@ -0,0 +1,2 @@
+NONE:POINTER
+NONE:INT,POINTER
index e98c7484e823d3c42ad86448fe8fe5b6ec05617b..8941bf5c7236844b1788824b6153cac974d991ec 100644 (file)
@@ -30,7 +30,7 @@
 #include <gtk/gtkhbox.h>
 #include <gtk/gtkvbox.h>
 #include <gtk/gtklabel.h>
 #include <gtk/gtkhbox.h>
 #include <gtk/gtkvbox.h>
 #include <gtk/gtklabel.h>
-#include <gtk/gtkpixmap.h>
+#include <gtk/gtkimage.h>
 #include <stdio.h>
 #include <string.h>
 #include <time.h>
 #include <stdio.h>
 #include <string.h>
 #include <time.h>
@@ -46,7 +46,7 @@
 #include "gtkutils.h"
 #include "utils.h"
 
 #include "gtkutils.h"
 #include "utils.h"
 
-static GdkFont *boldfont;
+PangoFontDescription *boldfont;
 
 #define TR(str)        (prefs_common.trans_hdr ? gettext(str) : str)
 
 
 #define TR(str)        (prefs_common.trans_hdr ? gettext(str) : str)
 
@@ -133,17 +133,14 @@ HeaderView *headerview_create(void)
 
 void headerview_init(HeaderView *headerview)
 {
 
 void headerview_init(HeaderView *headerview)
 {
-       if (!boldfont)
-               boldfont = gtkut_font_load(BOLD_FONT);
+       if (!boldfont && BOLD_FONT)
+               boldfont = pango_font_description_from_string
+                               (BOLD_FONT);
 
 #define SET_FONT_STYLE(wid) \
 { \
 
 #define SET_FONT_STYLE(wid) \
 { \
-       GtkStyle *style; \
- \
-       style = gtk_style_copy(gtk_widget_get_style(headerview->wid)); \
        if (boldfont) \
        if (boldfont) \
-               style->font = boldfont; \
-       gtk_widget_set_style(headerview->wid, style); \
+               gtk_widget_modify_font(headerview->wid, boldfont); \
 }
 
        SET_FONT_STYLE(from_header_label);
 }
 
        SET_FONT_STYLE(from_header_label);
@@ -168,38 +165,25 @@ void headerview_init(HeaderView *headerview)
 
 void headerview_show(HeaderView *headerview, MsgInfo *msginfo)
 {
 
 void headerview_show(HeaderView *headerview, MsgInfo *msginfo)
 {
-       gchar *str;
-
        headerview_clear(headerview);
 
        headerview_clear(headerview);
 
-       if (msginfo->from) {
-               Xstrdup_a(str, msginfo->from, return);
-               conv_unreadable_locale(str);
-       } else
-               str = NULL;
        gtk_label_set_text(GTK_LABEL(headerview->from_body_label),
        gtk_label_set_text(GTK_LABEL(headerview->from_body_label),
-                          str ? str : _("(No From)"));
+                          msginfo->from ? msginfo->from : _("(No From)"));
        if (msginfo->to) {
        if (msginfo->to) {
-               Xstrdup_a(str, msginfo->to, return);
-               conv_unreadable_locale(str);
-               gtk_label_set_text(GTK_LABEL(headerview->to_body_label), str);
+               gtk_label_set_text(GTK_LABEL(headerview->to_body_label),
+                                  msginfo->to);
                gtk_widget_show(headerview->to_header_label);
                gtk_widget_show(headerview->to_body_label);
        }
        if (msginfo->newsgroups) {
                gtk_widget_show(headerview->to_header_label);
                gtk_widget_show(headerview->to_body_label);
        }
        if (msginfo->newsgroups) {
-               Xstrdup_a(str, msginfo->newsgroups, return);
-               conv_unreadable_locale(str);
-               gtk_label_set_text(GTK_LABEL(headerview->ng_body_label), str);
+               gtk_label_set_text(GTK_LABEL(headerview->ng_body_label),
+                                  msginfo->newsgroups);
                gtk_widget_show(headerview->ng_header_label);
                gtk_widget_show(headerview->ng_body_label);
        }
                gtk_widget_show(headerview->ng_header_label);
                gtk_widget_show(headerview->ng_body_label);
        }
-       if (msginfo->subject) {
-               Xstrdup_a(str, msginfo->subject, return);
-               conv_unreadable_locale(str);
-       } else
-               str = NULL;
        gtk_label_set_text(GTK_LABEL(headerview->subject_body_label),
        gtk_label_set_text(GTK_LABEL(headerview->subject_body_label),
-                          str ? str : _("(No Subject)"));
+                          msginfo->subject ? msginfo->subject :
+                          _("(No Subject)"));
 
 #if HAVE_LIBCOMPFACE
        headerview_show_xface(headerview, msginfo);
 
 #if HAVE_LIBCOMPFACE
        headerview_show_xface(headerview, msginfo);
@@ -241,12 +225,12 @@ static void headerview_show_xface(HeaderView *headerview, MsgInfo *msginfo)
        if (!headerview->image) {
                GtkWidget *image;
 
        if (!headerview->image) {
                GtkWidget *image;
 
-               image = gtk_pixmap_new(pixmap, mask);
+               image = gtk_image_new_from_pixmap(pixmap, mask);
                gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
                gtk_widget_show(image);
                headerview->image = image;
        } else {
                gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
                gtk_widget_show(image);
                headerview->image = image;
        } else {
-               gtk_pixmap_set(GTK_PIXMAP(headerview->image), pixmap, mask);
+               gtk_image_set_from_pixmap(GTK_IMAGE(headerview->image), pixmap, mask);
                gtk_widget_show(headerview->image);
        }
 
                gtk_widget_show(headerview->image);
        }
 
index ea63ce5e67e48cfa892540802468fc940efad6aa..19b3d716d8be3f2db90c5c875ab6a5fe84c12f5a 100644 (file)
@@ -392,8 +392,8 @@ static gchar *search_array_str                      (GPtrArray      *array,
 static void imap_path_separator_subst          (gchar          *str,
                                                 gchar           separator);
 
 static void imap_path_separator_subst          (gchar          *str,
                                                 gchar           separator);
 
-static gchar *imap_modified_utf7_to_locale     (const gchar    *mutf7_str);
-static gchar *imap_locale_to_modified_utf7     (const gchar    *from);
+static gchar *imap_utf8_to_modified_utf7       (const gchar    *from);
+static gchar *imap_modified_utf7_to_utf8       (const gchar    *mutf7_str);
 
 static GSList *imap_get_seq_set_from_numlist    (MsgNumberList  *msglist);
 static GSList *imap_get_seq_set_from_msglist   (MsgInfoList    *msglist);
 
 static GSList *imap_get_seq_set_from_numlist    (MsgNumberList  *msglist);
 static GSList *imap_get_seq_set_from_msglist   (MsgInfoList    *msglist);
@@ -1298,7 +1298,7 @@ static gint imap_scan_tree_recursive(IMAPSession *session, FolderItem *item)
                        new_item->stype = F_INBOX;
                        folder->inbox = new_item;
                } else if (!item->parent || item->stype == F_INBOX) {
                        new_item->stype = F_INBOX;
                        folder->inbox = new_item;
                } else if (!item->parent || item->stype == F_INBOX) {
-                       gchar *base;
+                       const gchar *base;
 
                        base = g_basename(new_item->path);
 
 
                        base = g_basename(new_item->path);
 
@@ -1333,7 +1333,7 @@ static GSList *imap_parse_list(IMAPFolder *folder, IMAPSession *session,
        gchar flags[256];
        gchar separator_str[16];
        gchar *p;
        gchar flags[256];
        gchar separator_str[16];
        gchar *p;
-       gchar *name;
+       const gchar *name;
        gchar *loc_name, *loc_path;
        GSList *item_list = NULL;
        GString *str;
        gchar *loc_name, *loc_path;
        GSList *item_list = NULL;
        GString *str;
@@ -1391,8 +1391,8 @@ static GSList *imap_parse_list(IMAPFolder *folder, IMAPSession *session,
                name = g_basename(buf);
                if (name[0] == '.') continue;
 
                name = g_basename(buf);
                if (name[0] == '.') continue;
 
-               loc_name = imap_modified_utf7_to_locale(name);
-               loc_path = imap_modified_utf7_to_locale(buf);
+               loc_name = imap_modified_utf7_to_utf8(name);
+               loc_path = imap_modified_utf7_to_utf8(buf);
                new_item = folder_item_new(FOLDER(folder), loc_name, loc_path);
                if (strcasestr(flags, "\\Noinferiors") != NULL)
                        new_item->no_sub = TRUE;
                new_item = folder_item_new(FOLDER(folder), loc_name, loc_path);
                if (strcasestr(flags, "\\Noinferiors") != NULL)
                        new_item->no_sub = TRUE;
@@ -1561,7 +1561,7 @@ FolderItem *imap_create_folder(Folder *folder, FolderItem *parent,
 
        /* keep trailing directory separator to create a folder that contains
           sub folder */
 
        /* keep trailing directory separator to create a folder that contains
           sub folder */
-       imap_path = imap_locale_to_modified_utf7(dirpath);
+       imap_path = imap_utf8_to_modified_utf7(dirpath);
        strtailchomp(dirpath, '/');
        Xstrdup_a(new_name, name, {g_free(dirpath); return NULL;});
        strtailchomp(new_name, '/');
        strtailchomp(dirpath, '/');
        Xstrdup_a(new_name, name, {g_free(dirpath); return NULL;});
        strtailchomp(new_name, '/');
@@ -1663,7 +1663,7 @@ gint imap_rename_folder(Folder *folder, FolderItem *item, const gchar *name)
        } else
                newpath = g_strdup(name);
 
        } else
                newpath = g_strdup(name);
 
-       real_newpath = imap_locale_to_modified_utf7(newpath);
+       real_newpath = imap_utf8_to_modified_utf7(newpath);
        imap_path_separator_subst(real_newpath, separator);
 
        ok = imap_cmd_rename(session, real_oldpath, real_newpath);
        imap_path_separator_subst(real_newpath, separator);
 
        ok = imap_cmd_rename(session, real_oldpath, real_newpath);
@@ -2079,7 +2079,7 @@ static gchar *imap_get_real_path(IMAPFolder *folder, const gchar *path)
        g_return_val_if_fail(folder != NULL, NULL);
        g_return_val_if_fail(path != NULL, NULL);
 
        g_return_val_if_fail(folder != NULL, NULL);
        g_return_val_if_fail(path != NULL, NULL);
 
-       real_path = imap_locale_to_modified_utf7(path);
+       real_path = imap_utf8_to_modified_utf7(path);
        separator = imap_get_path_separator(folder, path);
        imap_path_separator_subst(real_path, separator);
 
        separator = imap_get_path_separator(folder, path);
        imap_path_separator_subst(real_path, separator);
 
@@ -3218,7 +3218,7 @@ static void imap_path_separator_subst(gchar *str, gchar separator)
        }
 }
 
        }
 }
 
-static gchar *imap_modified_utf7_to_locale(const gchar *mutf7_str)
+static gchar *imap_modified_utf7_to_utf8(const gchar *mutf7_str)
 {
 #if !HAVE_ICONV
        const gchar *from_p;
 {
 #if !HAVE_ICONV
        const gchar *from_p;
@@ -3251,10 +3251,9 @@ static gchar *imap_modified_utf7_to_locale(const gchar *mutf7_str)
        if (!iconv_ok) return g_strdup(mutf7_str);
 
        if (cd == (iconv_t)-1) {
        if (!iconv_ok) return g_strdup(mutf7_str);
 
        if (cd == (iconv_t)-1) {
-               cd = iconv_open(conv_get_current_charset_str(), "UTF-7");
+               cd = iconv_open(conv_get_current_charset_str(), CS_UTF_8);
                if (cd == (iconv_t)-1) {
                if (cd == (iconv_t)-1) {
-                       g_warning("iconv cannot convert UTF-7 to %s\n",
-                                 conv_get_current_charset_str());
+                       g_warning(_("iconv cannot convert UTF-7 to UTF-8\n"));
                        iconv_ok = FALSE;
                        return g_strdup(mutf7_str);
                }
                        iconv_ok = FALSE;
                        return g_strdup(mutf7_str);
                }
@@ -3291,8 +3290,7 @@ static gchar *imap_modified_utf7_to_locale(const gchar *mutf7_str)
 
        if (iconv(cd, (ICONV_CONST gchar **)&norm_utf7_p, &norm_utf7_len,
                  &to_p, &to_len) == -1) {
 
        if (iconv(cd, (ICONV_CONST gchar **)&norm_utf7_p, &norm_utf7_len,
                  &to_p, &to_len) == -1) {
-               g_warning(_("iconv cannot convert UTF-7 to %s\n"),
-                         conv_get_current_charset_str());
+               g_warning(_("iconv cannot convert UTF-7 to UTF-8\n"));
                g_string_free(norm_utf7, TRUE);
                g_free(to_str);
                return g_strdup(mutf7_str);
                g_string_free(norm_utf7, TRUE);
                g_free(to_str);
                return g_strdup(mutf7_str);
@@ -3307,7 +3305,7 @@ static gchar *imap_modified_utf7_to_locale(const gchar *mutf7_str)
 #endif /* !HAVE_ICONV */
 }
 
 #endif /* !HAVE_ICONV */
 }
 
-static gchar *imap_locale_to_modified_utf7(const gchar *from)
+static gchar *imap_utf8_to_modified_utf7(const gchar *from)
 {
 #if !HAVE_ICONV
        const gchar *from_p;
 {
 #if !HAVE_ICONV
        const gchar *from_p;
@@ -3338,10 +3336,9 @@ static gchar *imap_locale_to_modified_utf7(const gchar *from)
        if (!iconv_ok) return g_strdup(from);
 
        if (cd == (iconv_t)-1) {
        if (!iconv_ok) return g_strdup(from);
 
        if (cd == (iconv_t)-1) {
-               cd = iconv_open("UTF-7", conv_get_current_charset_str());
+               cd = iconv_open("UTF-7", CS_UTF_8);
                if (cd == (iconv_t)-1) {
                if (cd == (iconv_t)-1) {
-                       g_warning("iconv cannot convert %s to UTF-7\n",
-                                 conv_get_current_charset_str());
+                       g_warning("iconv cannot convert UTF-8 to UTF-7\n");
                        iconv_ok = FALSE;
                        return g_strdup(from);
                }
                        iconv_ok = FALSE;
                        return g_strdup(from);
                }
@@ -3388,8 +3385,7 @@ static gchar *imap_locale_to_modified_utf7(const gchar *from)
                        if (iconv(cd, (ICONV_CONST gchar **)&from_tmp,
                                  &conv_len,
                                  &norm_utf7_p, &norm_utf7_len) == -1) {
                        if (iconv(cd, (ICONV_CONST gchar **)&from_tmp,
                                  &conv_len,
                                  &norm_utf7_p, &norm_utf7_len) == -1) {
-                               g_warning("iconv cannot convert %s to UTF-7\n",
-                                         conv_get_current_charset_str());
+                               g_warning(_("iconv cannot convert UTF-8 to UTF-7\n"));
                                return g_strdup(from);
                        }
 
                                return g_strdup(from);
                        }
 
index 6a1af854865dc4cbd29a4ba30410cb7dcff9563a..9258258163376901da156a4cc8a68c3cd01ef64d 100644 (file)
@@ -47,6 +47,7 @@
 #include "gtkutils.h"
 #include "manage_window.h"
 #include "folder.h"
 #include "gtkutils.h"
 #include "manage_window.h"
 #include "folder.h"
+#include "codeconv.h"
 
 static GtkWidget *window;
 static GtkWidget *file_entry;
 
 static GtkWidget *window;
 static GtkWidget *file_entry;
@@ -63,7 +64,7 @@ static void import_cancel_cb(GtkWidget *widget, gpointer data);
 static void import_filesel_cb(GtkWidget *widget, gpointer data);
 static void import_destsel_cb(GtkWidget *widget, gpointer data);
 static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data);
 static void import_filesel_cb(GtkWidget *widget, gpointer data);
 static void import_destsel_cb(GtkWidget *widget, gpointer data);
 static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data);
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
 
 gint import_mbox(FolderItem *default_dest)
 {
 
 gint import_mbox(FolderItem *default_dest)
 {
@@ -91,12 +92,25 @@ gint import_mbox(FolderItem *default_dest)
        gtk_main();
 
        if (import_ack) {
        gtk_main();
 
        if (import_ack) {
-               gchar *filename, *destdir;
+               const gchar *utf8filename, *destdir;
                FolderItem *dest;
 
                FolderItem *dest;
 
-               filename = gtk_entry_get_text(GTK_ENTRY(file_entry));
+               utf8filename = gtk_entry_get_text(GTK_ENTRY(file_entry));
                destdir = gtk_entry_get_text(GTK_ENTRY(dest_entry));
                destdir = gtk_entry_get_text(GTK_ENTRY(dest_entry));
-               if (filename && *filename) {
+               if (utf8filename && *utf8filename) {
+                       const gchar *src_codeset = CS_UTF_8;
+                       const gchar *dest_codeset = conv_get_current_charset_str();
+                       gchar *filename;
+
+#warning FIXME_GTK2 /* should we use g_filename_from_utf8? */
+                       filename = conv_codeset_strdup(utf8filename,
+                                                      src_codeset,
+                                                      dest_codeset);
+                       if (!filename) {
+                               g_warning("faild to convert character set\n");
+                               filename = g_strdup(utf8filename);
+                       }
+
                        if (!destdir || !*destdir) {
                                dest = folder_find_item_from_path(INBOX_DIR);
                        } else
                        if (!destdir || !*destdir) {
                                dest = folder_find_item_from_path(INBOX_DIR);
                        } else
@@ -108,6 +122,8 @@ gint import_mbox(FolderItem *default_dest)
                        } else {
                                ok = proc_mbox(dest, filename);
                        }
                        } else {
                                ok = proc_mbox(dest, filename);
                        }
+
+                       g_free(filename);
                }
        }
 
                }
        }
 
@@ -126,16 +142,16 @@ static void import_create(void)
        GtkWidget *dest_label;
        GtkWidget *confirm_area;
 
        GtkWidget *dest_label;
        GtkWidget *confirm_area;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), _("Import"));
        gtk_container_set_border_width(GTK_CONTAINER(window), 5);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, FALSE);
        gtk_window_set_title(GTK_WINDOW(window), _("Import"));
        gtk_container_set_border_width(GTK_CONTAINER(window), 5);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, FALSE);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(delete_event), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(delete_event), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox = gtk_vbox_new(FALSE, 4);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox = gtk_vbox_new(FALSE, 4);
@@ -154,7 +170,7 @@ static void import_create(void)
        gtk_container_set_border_width(GTK_CONTAINER(table), 8);
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
        gtk_table_set_col_spacings(GTK_TABLE(table), 8);
        gtk_container_set_border_width(GTK_CONTAINER(table), 8);
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
        gtk_table_set_col_spacings(GTK_TABLE(table), 8);
-       gtk_widget_set_usize(table, 420, -1);
+       gtk_widget_set_size_request(table, 420, -1);
 
        file_label = gtk_label_new(_("Importing file:"));
        gtk_table_attach(GTK_TABLE(table), file_label, 0, 1, 0, 1,
 
        file_label = gtk_label_new(_("Importing file:"));
        gtk_table_attach(GTK_TABLE(table), file_label, 0, 1, 0, 1,
@@ -177,14 +193,14 @@ static void import_create(void)
        file_button = gtk_button_new_with_label(_(" Select... "));
        gtk_table_attach(GTK_TABLE(table), file_button, 2, 3, 0, 1,
                         0, 0, 0, 0);
        file_button = gtk_button_new_with_label(_(" Select... "));
        gtk_table_attach(GTK_TABLE(table), file_button, 2, 3, 0, 1,
                         0, 0, 0, 0);
-       gtk_signal_connect(GTK_OBJECT(file_button), "clicked",
-                          GTK_SIGNAL_FUNC(import_filesel_cb), NULL);
+       g_signal_connect(G_OBJECT(file_button), "clicked",
+                        G_CALLBACK(import_filesel_cb), NULL);
 
        dest_button = gtk_button_new_with_label(_(" Select... "));
        gtk_table_attach(GTK_TABLE(table), dest_button, 2, 3, 1, 2,
                         0, 0, 0, 0);
 
        dest_button = gtk_button_new_with_label(_(" Select... "));
        gtk_table_attach(GTK_TABLE(table), dest_button, 2, 3, 1, 2,
                         0, 0, 0, 0);
-       gtk_signal_connect(GTK_OBJECT(dest_button), "clicked",
-                          GTK_SIGNAL_FUNC(import_destsel_cb), NULL);
+       g_signal_connect(G_OBJECT(dest_button), "clicked",
+                        G_CALLBACK(import_destsel_cb), NULL);
 
        gtkut_button_set_create(&confirm_area,
                                &ok_button,     _("OK"),
 
        gtkut_button_set_create(&confirm_area,
                                &ok_button,     _("OK"),
@@ -193,10 +209,10 @@ static void import_create(void)
        gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_button);
 
        gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_button);
 
-       gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
-                          GTK_SIGNAL_FUNC(import_ok_cb), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
-                          GTK_SIGNAL_FUNC(import_cancel_cb), NULL);
+       g_signal_connect(G_OBJECT(ok_button), "clicked",
+                        G_CALLBACK(import_ok_cb), NULL);
+       g_signal_connect(G_OBJECT(cancel_button), "clicked",
+                        G_CALLBACK(import_cancel_cb), NULL);
 
        gtk_widget_show_all(window);
 }
 
        gtk_widget_show_all(window);
 }
@@ -220,7 +236,20 @@ static void import_filesel_cb(GtkWidget *widget, gpointer data)
        gchar *filename;
 
        filename = filesel_select_file(_("Select importing file"), NULL);
        gchar *filename;
 
        filename = filesel_select_file(_("Select importing file"), NULL);
-       if (filename)
+       if (!filename) return;
+
+       if (g_getenv ("G_BROKEN_FILENAMES")) {
+               const gchar *oldstr = filename;
+               filename = conv_codeset_strdup (filename,
+                                               conv_get_current_charset_str(),
+                                               CS_UTF_8);
+               if (!filename) {
+                       g_warning("import_filesel_cb(): faild to convert character set.");
+                       filename = g_strdup(oldstr);
+               }
+               gtk_entry_set_text(GTK_ENTRY(file_entry), filename);
+               g_free(filename);
+       } else
                gtk_entry_set_text(GTK_ENTRY(file_entry), filename);
 }
 
                gtk_entry_set_text(GTK_ENTRY(file_entry), filename);
 }
 
@@ -243,8 +272,9 @@ static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data)
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                import_cancel_cb(NULL, NULL);
 {
        if (event && event->keyval == GDK_Escape)
                import_cancel_cb(NULL, NULL);
+       return FALSE;
 }
 }
index 03c491e652c3ce02382a0665cd643f964cde85ec..ef30fb142bb119062612353ba0e0dca11cc72f30 100644 (file)
@@ -184,7 +184,7 @@ static void imp_ldif_message( void ) {
        gchar *sMsg = NULL;
        gint pageNum;
 
        gchar *sMsg = NULL;
        gint pageNum;
 
-       pageNum = gtk_notebook_current_page( GTK_NOTEBOOK(impldif_dlg.notebook) );
+       pageNum = gtk_notebook_get_current_page( GTK_NOTEBOOK(impldif_dlg.notebook) );
        if( pageNum == PAGE_FILE_INFO ) {
                sMsg = _( "Please specify address book name and file to import." );
        }
        if( pageNum == PAGE_FILE_INFO ) {
                sMsg = _( "Please specify address book name and file to import." );
        }
@@ -321,14 +321,14 @@ static void imp_ldif_field_list_selected(
  * \param event Event object.
  * \param data  Data.
  */
  * \param event Event object.
  * \param data  Data.
  */
-static void imp_ldif_field_list_toggle(
+static gboolean imp_ldif_field_list_toggle(
                GtkCList *clist, GdkEventButton *event, gpointer data )
 {
        Ldif_FieldRec *rec;
        gboolean toggle = FALSE;
 
                GtkCList *clist, GdkEventButton *event, gpointer data )
 {
        Ldif_FieldRec *rec;
        gboolean toggle = FALSE;
 
-       if( ! event ) return;
-       if( impldif_dlg.rowIndSelect < 0 ) return;
+       if( ! event ) return FALSE;
+       if( impldif_dlg.rowIndSelect < 0 ) return FALSE;
        if( event->button == 1 ) {
                /* If single click in select column */
                if( event->type == GDK_BUTTON_PRESS ) {
        if( event->button == 1 ) {
                /* If single click in select column */
                if( event->type == GDK_BUTTON_PRESS ) {
@@ -337,8 +337,8 @@ static void imp_ldif_field_list_toggle(
                        gint row, col;
 
                        gtk_clist_get_selection_info( clist, x, y, &row, &col );
                        gint row, col;
 
                        gtk_clist_get_selection_info( clist, x, y, &row, &col );
-                       if( col != FIELD_COL_SELECT ) return;
-                       if( row > impldif_dlg.rowCount ) return;
+                       if( col != FIELD_COL_SELECT ) return FALSE;
+                       if( row > impldif_dlg.rowCount ) return FALSE;
 
                        /* Set row */
                        impldif_dlg.rowIndSelect = row;
 
                        /* Set row */
                        impldif_dlg.rowIndSelect = row;
@@ -359,6 +359,7 @@ static void imp_ldif_field_list_toggle(
                        imp_ldif_update_row( clist );
                }
        }
                        imp_ldif_update_row( clist );
                }
        }
+       return FALSE;
 }
 
 /**
 }
 
 /**
@@ -506,10 +507,10 @@ static void imp_ldif_finish_show() {
 static void imp_ldif_prev( GtkWidget *widget ) {
        gint pageNum;
 
 static void imp_ldif_prev( GtkWidget *widget ) {
        gint pageNum;
 
-       pageNum = gtk_notebook_current_page( GTK_NOTEBOOK(impldif_dlg.notebook) );
+       pageNum = gtk_notebook_get_current_page( GTK_NOTEBOOK(impldif_dlg.notebook) );
        if( pageNum == PAGE_ATTRIBUTES ) {
                /* Goto file page stuff */
        if( pageNum == PAGE_ATTRIBUTES ) {
                /* Goto file page stuff */
-               gtk_notebook_set_page(
+               gtk_notebook_set_current_page(
                        GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FILE_INFO );
                gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
        }
                        GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FILE_INFO );
                gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
        }
@@ -523,11 +524,11 @@ static void imp_ldif_prev( GtkWidget *widget ) {
 static void imp_ldif_next( GtkWidget *widget ) {
        gint pageNum;
 
 static void imp_ldif_next( GtkWidget *widget ) {
        gint pageNum;
 
-       pageNum = gtk_notebook_current_page( GTK_NOTEBOOK(impldif_dlg.notebook) );
+       pageNum = gtk_notebook_get_current_page( GTK_NOTEBOOK(impldif_dlg.notebook) );
        if( pageNum == PAGE_FILE_INFO ) {
                /* Goto attributes stuff */
                if( imp_ldif_file_move() ) {
        if( pageNum == PAGE_FILE_INFO ) {
                /* Goto attributes stuff */
                if( imp_ldif_file_move() ) {
-                       gtk_notebook_set_page(
+                       gtk_notebook_set_current_page(
                                GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_ATTRIBUTES );
                        imp_ldif_message();
                        gtk_widget_set_sensitive( impldif_dlg.btnPrev, TRUE );
                                GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_ATTRIBUTES );
                        imp_ldif_message();
                        gtk_widget_set_sensitive( impldif_dlg.btnPrev, TRUE );
@@ -539,7 +540,7 @@ static void imp_ldif_next( GtkWidget *widget ) {
        else if( pageNum == PAGE_ATTRIBUTES ) {
                /* Goto finish stuff */
                if( imp_ldif_field_move() ) {
        else if( pageNum == PAGE_ATTRIBUTES ) {
                /* Goto finish stuff */
                if( imp_ldif_field_move() ) {
-                       gtk_notebook_set_page(
+                       gtk_notebook_set_current_page(
                                GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FINISH );
                        imp_ldif_finish_show();
                }
                                GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FINISH );
                        imp_ldif_finish_show();
                }
@@ -554,7 +555,7 @@ static void imp_ldif_next( GtkWidget *widget ) {
 static void imp_ldif_cancel( GtkWidget *widget, gpointer data ) {
        gint pageNum;
 
 static void imp_ldif_cancel( GtkWidget *widget, gpointer data ) {
        gint pageNum;
 
-       pageNum = gtk_notebook_current_page( GTK_NOTEBOOK(impldif_dlg.notebook) );
+       pageNum = gtk_notebook_get_current_page( GTK_NOTEBOOK(impldif_dlg.notebook) );
        if( pageNum != PAGE_FINISH ) {
                impldif_dlg.cancelled = TRUE;
        }
        if( pageNum != PAGE_FINISH ) {
                impldif_dlg.cancelled = TRUE;
        }
@@ -567,7 +568,7 @@ static void imp_ldif_cancel( GtkWidget *widget, gpointer data ) {
  * \param data   User data.
  */
 static void imp_ldif_file_ok( GtkWidget *widget, gpointer data ) {
  * \param data   User data.
  */
 static void imp_ldif_file_ok( GtkWidget *widget, gpointer data ) {
-       gchar *sFile;
+       const gchar *sFile;
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
@@ -604,10 +605,10 @@ static void imp_ldif_file_select_create( AddressFileSelection *afs ) {
 
        fileSelector = gtk_file_selection_new( _("Select LDIF File") );
        gtk_file_selection_hide_fileop_buttons( GTK_FILE_SELECTION(fileSelector) );
 
        fileSelector = gtk_file_selection_new( _("Select LDIF File") );
        gtk_file_selection_hide_fileop_buttons( GTK_FILE_SELECTION(fileSelector) );
-       gtk_signal_connect( GTK_OBJECT (GTK_FILE_SELECTION(fileSelector)->ok_button),
-               "clicked", GTK_SIGNAL_FUNC (imp_ldif_file_ok), ( gpointer ) afs );
-       gtk_signal_connect( GTK_OBJECT (GTK_FILE_SELECTION(fileSelector)->cancel_button),
-               "clicked", GTK_SIGNAL_FUNC (imp_ldif_file_cancel), ( gpointer ) afs );
+       g_signal_connect( G_OBJECT (GTK_FILE_SELECTION(fileSelector)->ok_button),
+                         "clicked", G_CALLBACK (imp_ldif_file_ok), ( gpointer ) afs );
+       g_signal_connect( G_OBJECT (GTK_FILE_SELECTION(fileSelector)->cancel_button),
+                         "clicked", G_CALLBACK (imp_ldif_file_cancel), ( gpointer ) afs );
        afs->fileSelector = fileSelector;
        afs->cancelled = TRUE;
 }
        afs->fileSelector = fileSelector;
        afs->cancelled = TRUE;
 }
@@ -646,10 +647,11 @@ static gint imp_ldif_delete_event( GtkWidget *widget, GdkEventAny *event, gpoint
  * \param event  Event object.
  * \param data   User data.
  */
  * \param event  Event object.
  * \param data   User data.
  */
-static void imp_ldif_key_pressed( GtkWidget *widget, GdkEventKey *event, gpointer data ) {
+static gboolean imp_ldif_key_pressed( GtkWidget *widget, GdkEventKey *event, gpointer data ) {
        if (event && event->keyval == GDK_Escape) {
                imp_ldif_cancel( widget, data );
        }
        if (event && event->keyval == GDK_Escape) {
                imp_ldif_cancel( widget, data );
        }
+       return FALSE;
 }
 
 /**
 }
 
 /**
@@ -730,8 +732,8 @@ static void imp_ldif_page_file( gint pageNum, gchar *pageLbl ) {
        gtk_widget_show_all(vbox);
 
        /* Button handler */
        gtk_widget_show_all(vbox);
 
        /* Button handler */
-       gtk_signal_connect(GTK_OBJECT(btnFile), "clicked",
-                          GTK_SIGNAL_FUNC(imp_ldif_file_select), NULL);
+       g_signal_connect(G_OBJECT(btnFile), "clicked",
+                        G_CALLBACK(imp_ldif_file_select), NULL);
 
        impldif_dlg.entryFile = entryFile;
        impldif_dlg.entryName = entryName;
 
        impldif_dlg.entryFile = entryFile;
        impldif_dlg.entryName = entryName;
@@ -898,12 +900,12 @@ static void imp_ldif_page_fields( gint pageNum, gchar *pageLbl ) {
        gtk_widget_show_all(vbox);
 
        /* Event handlers */
        gtk_widget_show_all(vbox);
 
        /* Event handlers */
-       gtk_signal_connect( GTK_OBJECT(clist_field), "select_row",
-                       GTK_SIGNAL_FUNC(imp_ldif_field_list_selected), NULL );
-       gtk_signal_connect( GTK_OBJECT(clist_field), "button_press_event",
-                       GTK_SIGNAL_FUNC(imp_ldif_field_list_toggle), NULL );
-       gtk_signal_connect( GTK_OBJECT(btnModify), "clicked",
-                       GTK_SIGNAL_FUNC(imp_ldif_modify_pressed), NULL );
+       g_signal_connect( G_OBJECT(clist_field), "select_row",
+                         G_CALLBACK(imp_ldif_field_list_selected), NULL );
+       g_signal_connect( G_OBJECT(clist_field), "button_press_event",
+                         G_CALLBACK(imp_ldif_field_list_toggle), NULL );
+       g_signal_connect( G_OBJECT(btnModify), "clicked",
+                         G_CALLBACK(imp_ldif_modify_pressed), NULL );
 
        impldif_dlg.clist_field = clist_field;
        impldif_dlg.entryField  = entryField;
 
        impldif_dlg.clist_field = clist_field;
        impldif_dlg.entryField  = entryField;
@@ -993,18 +995,18 @@ static void imp_ldif_dialog_create() {
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
        GtkWidget *hsbox;
        GtkWidget *statusbar;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, IMPORTLDIF_WIDTH, IMPORTLDIF_HEIGHT );
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, IMPORTLDIF_WIDTH, IMPORTLDIF_HEIGHT );
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Import LDIF file into Address Book") );
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Import LDIF file into Address Book") );
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(imp_ldif_delete_event),
-                          NULL );
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(imp_ldif_key_pressed),
-                          NULL );
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(imp_ldif_delete_event),
+                        NULL );
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(imp_ldif_key_pressed),
+                        NULL );
 
        vbox = gtk_vbox_new(FALSE, 4);
        gtk_widget_show(vbox);
 
        vbox = gtk_vbox_new(FALSE, 4);
        gtk_widget_show(vbox);
@@ -1037,12 +1039,12 @@ static void imp_ldif_dialog_create() {
        gtk_widget_grab_default(btnNext);
 
        /* Button handlers */
        gtk_widget_grab_default(btnNext);
 
        /* Button handlers */
-       gtk_signal_connect(GTK_OBJECT(btnPrev), "clicked",
-                          GTK_SIGNAL_FUNC(imp_ldif_prev), NULL);
-       gtk_signal_connect(GTK_OBJECT(btnNext), "clicked",
-                          GTK_SIGNAL_FUNC(imp_ldif_next), NULL);
-       gtk_signal_connect(GTK_OBJECT(btnCancel), "clicked",
-                          GTK_SIGNAL_FUNC(imp_ldif_cancel), NULL);
+       g_signal_connect(G_OBJECT(btnPrev), "clicked",
+                        G_CALLBACK(imp_ldif_prev), NULL);
+       g_signal_connect(G_OBJECT(btnNext), "clicked",
+                        G_CALLBACK(imp_ldif_next), NULL);
+       g_signal_connect(G_OBJECT(btnCancel), "clicked",
+                        G_CALLBACK(imp_ldif_cancel), NULL);
 
        gtk_widget_show_all(vbox);
 
 
        gtk_widget_show_all(vbox);
 
@@ -1090,7 +1092,7 @@ AddressBookFile *addressbook_imp_ldif( AddressIndex *addrIndex ) {
        gtk_label_set_text( GTK_LABEL(impldif_dlg.entryField), "" );
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryAttrib), "" );
        gtk_clist_clear( GTK_CLIST(impldif_dlg.clist_field) );
        gtk_label_set_text( GTK_LABEL(impldif_dlg.entryField), "" );
        gtk_entry_set_text( GTK_ENTRY(impldif_dlg.entryAttrib), "" );
        gtk_clist_clear( GTK_CLIST(impldif_dlg.clist_field) );
-       gtk_notebook_set_page( GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FILE_INFO );
+       gtk_notebook_set_current_page( GTK_NOTEBOOK(impldif_dlg.notebook), PAGE_FILE_INFO );
        gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
        gtk_widget_set_sensitive( impldif_dlg.btnNext, TRUE );
        stock_pixmap_gdk( impldif_dlg.window, STOCK_PIXMAP_MARK,
        gtk_widget_set_sensitive( impldif_dlg.btnPrev, FALSE );
        gtk_widget_set_sensitive( impldif_dlg.btnNext, TRUE );
        stock_pixmap_gdk( impldif_dlg.window, STOCK_PIXMAP_MARK,
index cb010749555add1e41b50836d3a4c1a57a0dbd0e..766893a39a3059c462434a4fde4dcd5e2438b2db 100644 (file)
@@ -155,7 +155,7 @@ static void imp_mutt_cancel( GtkWidget *widget, gboolean *cancelled ) {
 }
 
 static void imp_mutt_file_ok( GtkWidget *widget, gpointer data ) {
 }
 
 static void imp_mutt_file_ok( GtkWidget *widget, gpointer data ) {
-       gchar *sFile;
+       const gchar *sFile;
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
@@ -233,7 +233,7 @@ static void imp_mutt_create( gboolean *cancelled ) {
        GtkWidget *hsbox;
        gint top;
 
        GtkWidget *hsbox;
        gint top;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_widget_set_usize(window, 450, -1);
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Import MUTT file into Address Book") );
        gtk_widget_set_usize(window, 450, -1);
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Import MUTT file into Address Book") );
index c3520364a50e684d4e62dba6aa7554bb47d8351e..e75e6219c03ad7ddc6090dbd89e441bbb9a5f960 100644 (file)
@@ -155,7 +155,7 @@ static void imp_pine_cancel( GtkWidget *widget, gboolean *cancelled ) {
 }
 
 static void imp_pine_file_ok( GtkWidget *widget, gpointer data ) {
 }
 
 static void imp_pine_file_ok( GtkWidget *widget, gpointer data ) {
-       gchar *sFile;
+       const gchar *sFile;
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
@@ -233,7 +233,7 @@ static void imp_pine_create( gboolean *cancelled ) {
        GtkWidget *hsbox;
        gint top;
 
        GtkWidget *hsbox;
        gint top;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_widget_set_usize(window, 450, -1);
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Import Pine file into Address Book") );
        gtk_widget_set_usize(window, 450, -1);
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
        gtk_window_set_title( GTK_WINDOW(window), _("Import Pine file into Address Book") );
index bfdda00b4bc4e35dca3a57d8a96bdd610515d354..5d44315c0f6d2d2d43b6b567e15bfa56b9944911 100644 (file)
--- a/src/inc.c
+++ b/src/inc.c
@@ -349,10 +349,10 @@ static IncProgressDialog *inc_progress_dialog_create(gboolean autocheck)
        progress = progress_dialog_create();
        gtk_window_set_title(GTK_WINDOW(progress->window),
                             _("Retrieving new messages"));
        progress = progress_dialog_create();
        gtk_window_set_title(GTK_WINDOW(progress->window),
                             _("Retrieving new messages"));
-       gtk_signal_connect(GTK_OBJECT(progress->cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(inc_cancel_cb), dialog);
-       gtk_signal_connect(GTK_OBJECT(progress->window), "delete_event",
-                          GTK_SIGNAL_FUNC(inc_dialog_delete_cb), dialog);
+       g_signal_connect(G_OBJECT(progress->cancel_btn), "clicked",
+                        G_CALLBACK(inc_cancel_cb), dialog);
+       g_signal_connect(G_OBJECT(progress->window), "delete_event",
+                        G_CALLBACK(inc_dialog_delete_cb), dialog);
        /* manage_window_set_transient(GTK_WINDOW(progress->window)); */
 
        progress_dialog_set_value(progress, 0.0);
        /* manage_window_set_transient(GTK_WINDOW(progress->window)); */
 
        progress_dialog_set_value(progress, 0.0);
@@ -1100,7 +1100,8 @@ static gint inc_dialog_delete_cb(GtkWidget *widget, GdkEventAny *event,
 
 static gint inc_spool(void)
 {
 
 static gint inc_spool(void)
 {
-       gchar *mbox, *logname;
+       gchar *mbox;
+       const gchar *logname;
        gint msgs;
 
        logname = g_get_user_name();
        gint msgs;
 
        logname = g_get_user_name();
index ed7e4b03d1bfdb50127af0bc55acdedafe2ba0b1..03a42b662ac8d4c65b8038b78a9f70f5ceb9cd69 100644 (file)
@@ -77,7 +77,7 @@ static void cancel_clicked    (GtkWidget      *widget,
 static gint delete_event       (GtkWidget      *widget,
                                 GdkEventAny    *event,
                                 gpointer        data);
 static gint delete_event       (GtkWidget      *widget,
                                 GdkEventAny    *event,
                                 gpointer        data);
-static void key_pressed                (GtkWidget      *widget,
+static gboolean key_pressed    (GtkWidget      *widget,
                                 GdkEventKey    *event,
                                 gpointer        data);
 static void entry_activated    (GtkEditable    *editable);
                                 GdkEventKey    *event,
                                 gpointer        data);
 static void entry_activated    (GtkEditable    *editable);
@@ -166,14 +166,14 @@ static void input_dialog_create(void)
 
        dialog = gtk_dialog_new();
        gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, FALSE);
 
        dialog = gtk_dialog_new();
        gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, FALSE);
-       gtk_widget_set_usize(dialog, INPUT_DIALOG_WIDTH, -1);
+       gtk_widget_set_size_request(dialog, INPUT_DIALOG_WIDTH, -1);
        gtk_container_set_border_width
                (GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 5);
        gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
        gtk_container_set_border_width
                (GTK_CONTAINER(GTK_DIALOG(dialog)->action_area), 5);
        gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
-       gtk_signal_connect(GTK_OBJECT(dialog), "delete_event",
-                          GTK_SIGNAL_FUNC(delete_event), NULL);
-       gtk_signal_connect(GTK_OBJECT(dialog), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(dialog), "delete_event",
+                        G_CALLBACK(delete_event), NULL);
+       g_signal_connect(G_OBJECT(dialog), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog);
 
        gtk_widget_realize(dialog);
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog);
 
        gtk_widget_realize(dialog);
@@ -191,13 +191,13 @@ static void input_dialog_create(void)
 
        entry = gtk_entry_new();
        gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
 
        entry = gtk_entry_new();
        gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(entry), "activate",
-                          GTK_SIGNAL_FUNC(entry_activated), NULL);
+       g_signal_connect(G_OBJECT(entry), "activate",
+                        G_CALLBACK(entry_activated), NULL);
 
        combo = gtk_combo_new();
        gtk_box_pack_start(GTK_BOX(vbox), combo, FALSE, FALSE, 0);
 
        combo = gtk_combo_new();
        gtk_box_pack_start(GTK_BOX(vbox), combo, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(GTK_COMBO(combo)->entry), "activate",
-                          GTK_SIGNAL_FUNC(combo_activated), NULL);
+       g_signal_connect(G_OBJECT(GTK_COMBO(combo)->entry), "activate",
+                        G_CALLBACK(combo_activated), NULL);
 
        gtkut_button_set_create(&confirm_area,
                                &ok_button,     _("OK"),
 
        gtkut_button_set_create(&confirm_area,
                                &ok_button,     _("OK"),
@@ -207,10 +207,10 @@ static void input_dialog_create(void)
                          confirm_area);
        gtk_widget_grab_default(ok_button);
 
                          confirm_area);
        gtk_widget_grab_default(ok_button);
 
-       gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
-                          GTK_SIGNAL_FUNC(ok_clicked), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
-                          GTK_SIGNAL_FUNC(cancel_clicked), NULL);
+       g_signal_connect(G_OBJECT(ok_button), "clicked",
+                        G_CALLBACK(ok_clicked), NULL);
+       g_signal_connect(G_OBJECT(cancel_button), "clicked",
+                        G_CALLBACK(cancel_clicked), NULL);
 
 
        gtk_widget_show_all(GTK_DIALOG(dialog)->vbox);
 
 
        gtk_widget_show_all(GTK_DIALOG(dialog)->vbox);
@@ -275,8 +275,8 @@ static void input_dialog_set(const gchar *title, const gchar *message,
        gtk_label_set_text(GTK_LABEL(msg_label), message);
        if (default_string && *default_string) {
                gtk_entry_set_text(GTK_ENTRY(entry_), default_string);
        gtk_label_set_text(GTK_LABEL(msg_label), message);
        if (default_string && *default_string) {
                gtk_entry_set_text(GTK_ENTRY(entry_), default_string);
-               gtk_entry_set_position(GTK_ENTRY(entry_), 0);
-               gtk_entry_select_region(GTK_ENTRY(entry_), 0, -1);
+               gtk_editable_set_position(GTK_EDITABLE(entry_), 0);
+               gtk_editable_select_region(GTK_EDITABLE(entry_), 0, -1);
        } else
                gtk_entry_set_text(GTK_ENTRY(entry_), "");
 
        } else
                gtk_entry_set_text(GTK_ENTRY(entry_), "");
 
@@ -304,12 +304,14 @@ static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data)
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape) {
                ack = FALSE;
                fin = TRUE;
        }
 {
        if (event && event->keyval == GDK_Escape) {
                ack = FALSE;
                fin = TRUE;
        }
+
+       return FALSE;
 }
 
 static void entry_activated(GtkEditable *editable)
 }
 
 static void entry_activated(GtkEditable *editable)
index 5d86f878b18ccf7683bb77ce8c0e1cc59b4ca9c9..c022e5a80a17125ca0a7c4e3bcfd9d27e5a817d8 100644 (file)
@@ -1719,7 +1719,7 @@ gboolean jpilot_validate( JPilotFile *pilotFile ) {
  *         no home. Filename should be <code>g_free()</code> when done.
  */
 gchar *jpilot_find_pilotdb( void ) {
  *         no home. Filename should be <code>g_free()</code> when done.
  */
 gchar *jpilot_find_pilotdb( void ) {
-       gchar *homedir;
+       const gchar *homedir;
        gchar str[ WORK_BUFLEN ];
        gint len;
        FILE *fp;
        gchar str[ WORK_BUFLEN ];
        gint len;
        FILE *fp;
index 1d84560a0a580972b2a949932ec9ed9eb8517016..3b9e753efc4d6ffa74a267cf1df0e4df08e95f01 100644 (file)
@@ -27,7 +27,7 @@
 #include <gtk/gtkwindow.h>
 #include <gtk/gtksignal.h>
 #include <gtk/gtkscrolledwindow.h>
 #include <gtk/gtkwindow.h>
 #include <gtk/gtksignal.h>
 #include <gtk/gtkscrolledwindow.h>
-#include <gtk/gtktext.h>
+#include <gtk/gtktextview.h>
 #include <gtk/gtkstyle.h>
 
 #include "intl.h"
 #include <gtk/gtkstyle.h>
 
 #include "intl.h"
@@ -40,7 +40,7 @@
 
 static void hide_cb                    (GtkWidget      *widget,
                                         LogWindow      *logwin);
 
 static void hide_cb                    (GtkWidget      *widget,
                                         LogWindow      *logwin);
-static void key_pressed                        (GtkWidget      *widget,
+static gboolean key_pressed            (GtkWidget      *widget,
                                         GdkEventKey    *event,
                                         LogWindow      *logwin);
 static gboolean log_window_append      (gpointer        source,
                                         GdkEventKey    *event,
                                         LogWindow      *logwin);
 static gboolean log_window_append      (gpointer        source,
@@ -53,6 +53,8 @@ LogWindow *log_window_create(void)
        GtkWidget *window;
        GtkWidget *scrolledwin;
        GtkWidget *text;
        GtkWidget *window;
        GtkWidget *scrolledwin;
        GtkWidget *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
 
        debug_print("Creating log window...\n");
        logwin = g_new0(LogWindow, 1);
 
        debug_print("Creating log window...\n");
        logwin = g_new0(LogWindow, 1);
@@ -61,13 +63,13 @@ LogWindow *log_window_create(void)
        gtk_window_set_title(GTK_WINDOW(window), _("Protocol log"));
        gtk_window_set_wmclass(GTK_WINDOW(window), "log_window", "Sylpheed");
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
        gtk_window_set_title(GTK_WINDOW(window), _("Protocol log"));
        gtk_window_set_wmclass(GTK_WINDOW(window), "log_window", "Sylpheed");
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
-       gtk_widget_set_usize(window, 520, 400);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), logwin);
-       gtk_signal_connect(GTK_OBJECT(window), "hide",
-                          GTK_SIGNAL_FUNC(hide_cb), logwin);
+       gtk_widget_set_size_request(window, 520, 400);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(gtk_widget_hide_on_delete), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), logwin);
+       g_signal_connect(G_OBJECT(window), "hide",
+                        G_CALLBACK(hide_cb), logwin);
        gtk_widget_realize(window);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_widget_realize(window);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
@@ -76,13 +78,14 @@ LogWindow *log_window_create(void)
        gtk_container_add(GTK_CONTAINER(window), scrolledwin);
        gtk_widget_show(scrolledwin);
 
        gtk_container_add(GTK_CONTAINER(window), scrolledwin);
        gtk_widget_show(scrolledwin);
 
-       text = gtk_text_new(gtk_scrolled_window_get_hadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)),
-                           gtk_scrolled_window_get_vadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)));
+       text = gtk_text_view_new();
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
+       gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       gtk_text_buffer_get_start_iter(buffer, &iter);
+       gtk_text_buffer_create_mark(buffer, "end", &iter, FALSE);
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
        gtk_widget_show(text);
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
        gtk_widget_show(text);
-       gtk_text_freeze(GTK_TEXT(text));
 
        logwin->window = window;
        logwin->scrolledwin = scrolledwin;
 
        logwin->window = window;
        logwin->scrolledwin = scrolledwin;
@@ -94,6 +97,7 @@ LogWindow *log_window_create(void)
 
 void log_window_init(LogWindow *logwin)
 {
 
 void log_window_init(LogWindow *logwin)
 {
+       GtkTextBuffer *buffer;
        GdkColormap *colormap;
        GdkColor color[3] =
                {{0, 0, 0xafff, 0}, {0, 0xefff, 0, 0}, {0, 0xefff, 0, 0}};
        GdkColormap *colormap;
        GdkColor color[3] =
                {{0, 0, 0xafff, 0}, {0, 0xefff, 0, 0}, {0, 0xefff, 0, 0}};
@@ -120,17 +124,27 @@ void log_window_init(LogWindow *logwin)
                        break;
                }
        }
                        break;
                }
        }
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(logwin->text));
+       gtk_text_buffer_create_tag(buffer, "message",
+                                  "foreground-gdk", &logwin->msg_color,
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "warn",
+                                  "foreground-gdk", &logwin->warn_color,
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "error",
+                                  "foreground-gdk", &logwin->error_color,
+                                  NULL);
 }
 
 void log_window_show(LogWindow *logwin)
 {
 }
 
 void log_window_show(LogWindow *logwin)
 {
-       GtkText *text = GTK_TEXT(logwin->text);
-
-       gtk_widget_hide(logwin->window);
+       GtkTextView *text = GTK_TEXT_VIEW(logwin->text);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextMark *mark;
 
 
-       gtk_text_thaw(text);
-       text->vadj->value = text->vadj->upper - text->vadj->page_size;
-       gtk_signal_emit_by_name(GTK_OBJECT(text->vadj), "value_changed");
+       mark = gtk_text_buffer_get_mark(buffer, "end");
+       gtk_text_view_scroll_mark_onscreen(text, mark);
 
        gtk_widget_show(logwin->window);
 }
 
        gtk_widget_show(logwin->window);
 }
@@ -139,9 +153,12 @@ static gboolean log_window_append(gpointer source, gpointer data)
 {
        LogText *logtext = (LogText *) source;
        LogWindow *logwindow = (LogWindow *) data;
 {
        LogText *logtext = (LogText *) source;
        LogWindow *logwindow = (LogWindow *) data;
-       GtkText *text;
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
        GdkColor *color = NULL;
        gchar *head = NULL;
        GdkColor *color = NULL;
        gchar *head = NULL;
+       const gchar *tag;
 
        g_return_val_if_fail(logtext != NULL, TRUE);
        g_return_val_if_fail(logtext->text != NULL, TRUE);
 
        g_return_val_if_fail(logtext != NULL, TRUE);
        g_return_val_if_fail(logtext->text != NULL, TRUE);
@@ -150,27 +167,40 @@ static gboolean log_window_append(gpointer source, gpointer data)
        if (prefs_common.cliplog && !prefs_common.loglength)
                return FALSE;
 
        if (prefs_common.cliplog && !prefs_common.loglength)
                return FALSE;
 
-       text = GTK_TEXT(logwindow->text);
+       text = GTK_TEXT_VIEW(logwindow->text);
+       buffer = gtk_text_view_get_buffer(text);
+       gtk_text_buffer_get_iter_at_offset(buffer, &iter, -1);
 
        switch (logtext->type) {
        case LOG_MSG:
                color = &logwindow->msg_color;
 
        switch (logtext->type) {
        case LOG_MSG:
                color = &logwindow->msg_color;
+               tag = "message";
                head = "* ";
                break;
        case LOG_WARN:
                color = &logwindow->warn_color;
                head = "* ";
                break;
        case LOG_WARN:
                color = &logwindow->warn_color;
+               tag = "warn";
                head = "** ";
                break;
        case LOG_ERROR:
                color = &logwindow->error_color;
                head = "** ";
                break;
        case LOG_ERROR:
                color = &logwindow->error_color;
+               tag = "error";
                head = "*** ";
                break;
        default:
                head = "*** ";
                break;
        default:
+               tag = NULL;
                break;
        }
                break;
        }
+  
+       if (head)
+               gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, head, -1,
+                                                        tag, NULL);
+       gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, logtext->text, -1,
+                                                tag, NULL);
+
+       gtk_text_buffer_get_start_iter(buffer, &iter);
+       gtk_text_buffer_place_cursor(buffer, &iter);
 
 
-       if (head) gtk_text_insert(text, NULL, color, NULL, head, -1);
-       gtk_text_insert(text, NULL, color, NULL, logtext->text, -1);
        if (prefs_common.cliplog)
               log_window_clear (GTK_WIDGET (text));
 
        if (prefs_common.cliplog)
               log_window_clear (GTK_WIDGET (text));
 
@@ -179,47 +209,36 @@ static gboolean log_window_append(gpointer source, gpointer data)
 
 static void hide_cb(GtkWidget *widget, LogWindow *logwin)
 {
 
 static void hide_cb(GtkWidget *widget, LogWindow *logwin)
 {
-       if (GTK_TEXT(logwin->text)->freeze_count == 0)
-               gtk_text_freeze(GTK_TEXT(logwin->text));
 }
 
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event,
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event,
                        LogWindow *logwin)
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(logwin->window);
                        LogWindow *logwin)
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(logwin->window);
+       return FALSE;
 }
 
 void log_window_clear(GtkWidget *textw)
 {
         guint length;
        guint point;
 }
 
 void log_window_clear(GtkWidget *textw)
 {
         guint length;
        guint point;
-       gboolean was_frozen = FALSE;
-       GtkText *text = GTK_TEXT(textw);
+       GtkTextView *textview = GTK_TEXT_VIEW(textw);
+       GtkTextBuffer *textbuf = gtk_text_view_get_buffer(textview);
+       GtkTextIter start_iter, end_iter;
        
        
-       length = gtk_text_get_length (text);
+       length = gtk_text_buffer_get_char_count (textbuf);
        debug_print("Log window length: %u\n", length);
        
        if (length > prefs_common.loglength) {
                /* find the end of the first line after the cut off
                 * point */
                        point = length - prefs_common.loglength;
        debug_print("Log window length: %u\n", length);
        
        if (length > prefs_common.loglength) {
                /* find the end of the first line after the cut off
                 * point */
                        point = length - prefs_common.loglength;
-               while (point < length && GTK_TEXT_INDEX(text, point) != '\n')
-                       point++;
-               /* erase the text */
-               if (text->freeze_count) {
-                       was_frozen = TRUE;
-                       gtk_text_thaw(text);
-               }
-               gtk_text_set_point (text, 0);
-               gtk_text_freeze(text);
-               if (!gtk_text_forward_delete (text, point + 1))
-                       debug_print("Error clearing log\n");
-               gtk_text_thaw(text);
-               gtk_text_set_point(text,
-                                  gtk_text_get_length (GTK_TEXT (text)));
-               if (was_frozen)
-                       gtk_text_freeze(text);
+               gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter, point);
+               if (!gtk_text_iter_forward_to_line_end(&end_iter))
+                       return;
+               gtk_text_buffer_get_start_iter(textbuf, &start_iter);
+               gtk_text_buffer_delete(textbuf, &start_iter, &end_iter);
        }
 }
 
        }
 }
 
index de91e656ad1c4fa0bd9913fee3ba9f6b269993f8..c7bf048baa7abde18de0afb4316947d615698858 100644 (file)
@@ -230,7 +230,7 @@ int main(int argc, char *argv[])
        gtk_rc_parse("./gtkrc");
 
        userrc = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, MENU_RC, NULL);
        gtk_rc_parse("./gtkrc");
 
        userrc = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, MENU_RC, NULL);
-       gtk_item_factory_parse_rc(userrc);
+       gtk_accel_map_load (userrc);
        g_free(userrc);
 
        CHDIR_RETURN_VAL_IF_FAIL(get_home_dir(), 1);
        g_free(userrc);
 
        CHDIR_RETURN_VAL_IF_FAIL(get_home_dir(), 1);
@@ -649,7 +649,7 @@ void app_will_exit(GtkWidget *widget, gpointer data)
        addressbook_export_to_file();
 
        filename = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, MENU_RC, NULL);
        addressbook_export_to_file();
 
        filename = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, MENU_RC, NULL);
-       gtk_item_factory_dump_rc(filename, NULL, TRUE);
+       gtk_accel_map_save (filename);
        g_free(filename);
 
        /* delete temporary files */
        g_free(filename);
 
        /* delete temporary files */
index 15dc99d72ee94b1099abd1d60b16aea53d06c4b3..a9c4bf783859ee2545a040e5ac65e1238dbec6c0 100644 (file)
@@ -103,11 +103,11 @@ static void main_window_set_widgets               (MainWindow     *mainwin,
                                                 SeparateType    type);
 
 #if 0
                                                 SeparateType    type);
 
 #if 0
-static void toolbar_account_button_pressed     (GtkWidget      *widget,
+static gboolean toolbar_account_button_pressed (GtkWidget      *widget,
                                                 GdkEventButton *event,
                                                 gpointer        data);
 #endif
                                                 GdkEventButton *event,
                                                 gpointer        data);
 #endif
-static void ac_label_button_pressed            (GtkWidget      *widget,
+static gboolean ac_label_button_pressed                (GtkWidget      *widget,
                                                 GdkEventButton *event,
                                                 gpointer        data);
 static void ac_menu_popup_closed               (GtkMenuShell   *menu_shell,
                                                 GdkEventButton *event,
                                                 gpointer        data);
 static void ac_menu_popup_closed               (GtkMenuShell   *menu_shell,
@@ -766,14 +766,14 @@ MainWindow *main_window_create(SeparateType type)
        gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL, &geometry,
                                      GDK_HINT_MIN_SIZE);
 
        gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL, &geometry,
                                      GDK_HINT_MIN_SIZE);
 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(main_window_close_cb), mainwin);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(main_window_close_cb), mainwin);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
-       gtk_signal_connect(GTK_OBJECT(window), "focus_in_event",
-                          GTK_SIGNAL_FUNC(mainwindow_focus_in_event),
-                          mainwin);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                               GTK_SIGNAL_FUNC(mainwindow_key_pressed), mainwin);
+       g_signal_connect(G_OBJECT(window), "focus_in_event",
+                        G_CALLBACK(mainwindow_focus_in_event),
+                        mainwin);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(mainwindow_key_pressed), mainwin);
 
        gtk_widget_realize(window);
        gtk_widget_add_events(window, GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
 
        gtk_widget_realize(window);
        gtk_widget_add_events(window, GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
@@ -821,7 +821,7 @@ MainWindow *main_window_create(SeparateType type)
        gtk_box_pack_start(GTK_BOX(hbox_stat), statusbar, TRUE, TRUE, 0);
 
        progressbar = gtk_progress_bar_new();
        gtk_box_pack_start(GTK_BOX(hbox_stat), statusbar, TRUE, TRUE, 0);
 
        progressbar = gtk_progress_bar_new();
-       gtk_widget_set_usize(progressbar, 120, 1);
+       gtk_widget_set_size_request(progressbar, 120, 1);
        gtk_box_pack_start(GTK_BOX(hbox_stat), progressbar, FALSE, FALSE, 0);
 
        online_pixmap = stock_pixmap_widget(hbox_stat, STOCK_PIXMAP_WORK_ONLINE);
        gtk_box_pack_start(GTK_BOX(hbox_stat), progressbar, FALSE, FALSE, 0);
 
        online_pixmap = stock_pixmap_widget(hbox_stat, STOCK_PIXMAP_WORK_ONLINE);
@@ -836,11 +836,11 @@ MainWindow *main_window_create(SeparateType type)
                             offline_switch, _("Go online"), NULL);
        gtk_container_add (GTK_CONTAINER(online_switch), online_pixmap);
        gtk_button_set_relief (GTK_BUTTON(online_switch), GTK_RELIEF_NONE);
                             offline_switch, _("Go online"), NULL);
        gtk_container_add (GTK_CONTAINER(online_switch), online_pixmap);
        gtk_button_set_relief (GTK_BUTTON(online_switch), GTK_RELIEF_NONE);
-       gtk_signal_connect (GTK_OBJECT(online_switch), "clicked", (GtkSignalFunc)online_switch_clicked, mainwin);
+       g_signal_connect (G_OBJECT(online_switch), "clicked", G_CALLBACK(online_switch_clicked), mainwin);
        gtk_box_pack_start (GTK_BOX(hbox_stat), online_switch, FALSE, FALSE, 0);
        gtk_container_add (GTK_CONTAINER(offline_switch), offline_pixmap);
        gtk_button_set_relief (GTK_BUTTON(offline_switch), GTK_RELIEF_NONE);
        gtk_box_pack_start (GTK_BOX(hbox_stat), online_switch, FALSE, FALSE, 0);
        gtk_container_add (GTK_CONTAINER(offline_switch), offline_pixmap);
        gtk_button_set_relief (GTK_BUTTON(offline_switch), GTK_RELIEF_NONE);
-       gtk_signal_connect (GTK_OBJECT(offline_switch), "clicked", (GtkSignalFunc)online_switch_clicked, mainwin);
+       g_signal_connect (G_OBJECT(offline_switch), "clicked", G_CALLBACK(online_switch_clicked), mainwin);
        gtk_box_pack_start (GTK_BOX(hbox_stat), offline_switch, FALSE, FALSE, 0);
        
        statuslabel = gtk_label_new("");
        gtk_box_pack_start (GTK_BOX(hbox_stat), offline_switch, FALSE, FALSE, 0);
        
        statuslabel = gtk_label_new("");
@@ -852,10 +852,10 @@ MainWindow *main_window_create(SeparateType type)
                             ac_button, _("Select account"), NULL);
        gtk_button_set_relief(GTK_BUTTON(ac_button), GTK_RELIEF_NONE);
        GTK_WIDGET_UNSET_FLAGS(ac_button, GTK_CAN_FOCUS);
                             ac_button, _("Select account"), NULL);
        gtk_button_set_relief(GTK_BUTTON(ac_button), GTK_RELIEF_NONE);
        GTK_WIDGET_UNSET_FLAGS(ac_button, GTK_CAN_FOCUS);
-       gtk_widget_set_usize(ac_button, -1, 1);
+       gtk_widget_set_size_request(ac_button, -1, 1);
        gtk_box_pack_end(GTK_BOX(hbox_stat), ac_button, FALSE, FALSE, 0);
        gtk_box_pack_end(GTK_BOX(hbox_stat), ac_button, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(ac_button), "button_press_event",
-                          GTK_SIGNAL_FUNC(ac_label_button_pressed), mainwin);
+       g_signal_connect(G_OBJECT(ac_button), "button_press_event",
+                        G_CALLBACK(ac_label_button_pressed), mainwin);
 
        ac_label = gtk_label_new("");
        gtk_container_add(GTK_CONTAINER(ac_button), ac_label);
 
        ac_label = gtk_label_new("");
        gtk_container_add(GTK_CONTAINER(ac_button), ac_label);
@@ -937,9 +937,9 @@ MainWindow *main_window_create(SeparateType type)
 
        main_window_set_widgets(mainwin, type);
 
 
        main_window_set_widgets(mainwin, type);
 
-       gtk_signal_connect(GTK_OBJECT(window), "size_allocate",
-                          GTK_SIGNAL_FUNC(main_window_size_allocate_cb),
-                          mainwin);
+       g_signal_connect(G_OBJECT(window), "size_allocate",
+                        G_CALLBACK(main_window_size_allocate_cb),
+                        mainwin);
 
        /* set menu items */
        menuitem = gtk_item_factory_get_item
 
        /* set menu items */
        menuitem = gtk_item_factory_get_item
@@ -982,8 +982,8 @@ MainWindow *main_window_create(SeparateType type)
        /* set account selection menu */
        ac_menu = gtk_item_factory_get_widget
                (ifactory, "/Configuration/Change current account");
        /* set account selection menu */
        ac_menu = gtk_item_factory_get_widget
                (ifactory, "/Configuration/Change current account");
-       gtk_signal_connect(GTK_OBJECT(ac_menu), "selection_done",
-                          GTK_SIGNAL_FUNC(ac_menu_popup_closed), mainwin);
+       g_signal_connect(G_OBJECT(ac_menu), "selection_done",
+                        G_CALLBACK(ac_menu_popup_closed), mainwin);
        mainwin->ac_menu = ac_menu;
 
        toolbar_main_set_sensitive(mainwin);
        mainwin->ac_menu = ac_menu;
 
        toolbar_main_set_sensitive(mainwin);
@@ -1175,10 +1175,11 @@ void main_window_set_account_menu(GList *account_list)
                                (ac_prefs->account_name
                                 ? ac_prefs->account_name : _("Untitled"));
                        gtk_widget_show(menuitem);
                                (ac_prefs->account_name
                                 ? ac_prefs->account_name : _("Untitled"));
                        gtk_widget_show(menuitem);
-                       gtk_menu_append(GTK_MENU(mainwin->ac_menu), menuitem);
-                       gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
-                                          GTK_SIGNAL_FUNC(account_menu_cb),
-                                          ac_prefs);
+                       gtk_menu_shell_append(GTK_MENU_SHELL(mainwin->ac_menu),
+                                             menuitem);
+                       g_signal_connect(G_OBJECT(menuitem), "activate",
+                                        G_CALLBACK(account_menu_cb),
+                                        ac_prefs);
                }
        }
 }
                }
        }
 }
@@ -1825,12 +1826,12 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
                                       "folder_view", "Sylpheed");
                gtk_window_set_policy(GTK_WINDOW(folderwin),
                                      TRUE, TRUE, FALSE);
                                       "folder_view", "Sylpheed");
                gtk_window_set_policy(GTK_WINDOW(folderwin),
                                      TRUE, TRUE, FALSE);
-               gtk_widget_set_uposition(folderwin, prefs_common.folderwin_x,
-                                        prefs_common.folderwin_y);
+               gtk_window_move(GTK_WINDOW(folderwin), prefs_common.folderwin_x,
+                               prefs_common.folderwin_y);
                gtk_container_set_border_width(GTK_CONTAINER(folderwin),
                                               BORDER_WIDTH);
                gtk_container_set_border_width(GTK_CONTAINER(folderwin),
                                               BORDER_WIDTH);
-               gtk_signal_connect(GTK_OBJECT(folderwin), "delete_event",
-                                  GTK_SIGNAL_FUNC(folder_window_close_cb),
+               g_signal_connect(G_OBJECT(folderwin), "delete_event",
+                                G_CALLBACK(folder_window_close_cb),
                                   mainwin);
                gtk_container_add(GTK_CONTAINER(folderwin),
                                  GTK_WIDGET_PTR(mainwin->folderview));
                                   mainwin);
                gtk_container_add(GTK_CONTAINER(folderwin),
                                  GTK_WIDGET_PTR(mainwin->folderview));
@@ -1846,13 +1847,13 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
                                       "message_view", "Sylpheed");
                gtk_window_set_policy(GTK_WINDOW(messagewin),
                                      TRUE, TRUE, FALSE);
                                       "message_view", "Sylpheed");
                gtk_window_set_policy(GTK_WINDOW(messagewin),
                                      TRUE, TRUE, FALSE);
-               gtk_widget_set_uposition(messagewin, prefs_common.main_msgwin_x,
-                                        prefs_common.main_msgwin_y);
+               gtk_window_move(GTK_WINDOW(messagewin), prefs_common.main_msgwin_x,
+                               prefs_common.main_msgwin_y);
                gtk_container_set_border_width(GTK_CONTAINER(messagewin),
                                               BORDER_WIDTH);
                gtk_container_set_border_width(GTK_CONTAINER(messagewin),
                                               BORDER_WIDTH);
-               gtk_signal_connect(GTK_OBJECT(messagewin), "delete_event",
-                                  GTK_SIGNAL_FUNC(message_window_close_cb),
-                                  mainwin);
+               g_signal_connect(G_OBJECT(messagewin), "delete_event",
+                                G_CALLBACK(message_window_close_cb),
+                                mainwin);
                gtk_container_add(GTK_CONTAINER(messagewin),
                                  GTK_WIDGET_PTR(mainwin->messageview));
                gtk_widget_realize(messagewin);
                gtk_container_add(GTK_CONTAINER(messagewin),
                                  GTK_WIDGET_PTR(mainwin->messageview));
                gtk_widget_realize(messagewin);
@@ -1860,15 +1861,15 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
                        gtk_widget_show(messagewin);
        }
 
                        gtk_widget_show(messagewin);
        }
 
-       gtk_widget_set_usize(GTK_WIDGET_PTR(mainwin->folderview),
-                            prefs_common.folderview_width,
-                            prefs_common.folderview_height);
-       gtk_widget_set_usize(GTK_WIDGET_PTR(mainwin->summaryview),
-                            prefs_common.summaryview_width,
-                            prefs_common.summaryview_height);
-       gtk_widget_set_usize(GTK_WIDGET_PTR(mainwin->messageview),
-                            prefs_common.msgview_width,
-                            prefs_common.msgview_height);
+       gtk_widget_set_size_request(GTK_WIDGET_PTR(mainwin->folderview),
+                                   prefs_common.folderview_width,
+                                   prefs_common.folderview_height);
+       gtk_widget_set_size_request(GTK_WIDGET_PTR(mainwin->summaryview),
+                                   prefs_common.summaryview_width,
+                                   prefs_common.summaryview_height);
+       gtk_widget_set_size_request(GTK_WIDGET_PTR(mainwin->messageview),
+                                   prefs_common.msgview_width,
+                                   prefs_common.msgview_height);
 
        switch (type) {
        case SEPARATE_NONE:
 
        switch (type) {
        case SEPARATE_NONE:
@@ -1955,9 +1956,9 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
                break;
        }
 
                break;
        }
 
-       gtk_widget_set_uposition(mainwin->window,
-                                prefs_common.mainwin_x,
-                                prefs_common.mainwin_y);
+       gtk_window_move(GTK_WINDOW(mainwin->window),
+                       prefs_common.mainwin_x,
+                       prefs_common.mainwin_y);
 
        gtk_widget_queue_resize(vbox_body);
        gtk_widget_queue_resize(mainwin->vbox);
 
        gtk_widget_queue_resize(vbox_body);
        gtk_widget_queue_resize(mainwin->vbox);
@@ -2001,15 +2002,15 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
                                       ((type & SEPARATE_MESSAGE) != 0));
 
        if (folderwin) {
                                       ((type & SEPARATE_MESSAGE) != 0));
 
        if (folderwin) {
-               gtk_signal_connect
-                       (GTK_OBJECT(folderwin), "size_allocate",
-                        GTK_SIGNAL_FUNC(folder_window_size_allocate_cb),
+               g_signal_connect
+                       (G_OBJECT(folderwin), "size_allocate",
+                        G_CALLBACK(folder_window_size_allocate_cb),
                         mainwin);
        }
        if (messagewin) {
                         mainwin);
        }
        if (messagewin) {
-               gtk_signal_connect
-                       (GTK_OBJECT(messagewin), "size_allocate",
-                        GTK_SIGNAL_FUNC(message_window_size_allocate_cb),
+               g_signal_connect
+                       (G_OBJECT(messagewin), "size_allocate",
+                        G_CALLBACK(message_window_size_allocate_cb),
                         mainwin);
        }
 
                         mainwin);
        }
 
@@ -2035,39 +2036,43 @@ void main_window_destroy_all(void)
 }
 
 #if 0
 }
 
 #if 0
-static void toolbar_account_button_pressed(GtkWidget *widget,
-                                          GdkEventButton *event,
-                                          gpointer data)
+static gboolean toolbar_account_button_pressed(GtkWidget *widget,
+                                              GdkEventButton *event,
+                                              gpointer data)
 {
        MainWindow *mainwin = (MainWindow *)data;
 
 {
        MainWindow *mainwin = (MainWindow *)data;
 
-       if (!event) return;
-       if (event->button != 3) return;
+       if (!event) return FALSE;
+       if (event->button != 3) return FALSE;
 
        gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NORMAL);
 
        gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NORMAL);
-       gtk_object_set_data(GTK_OBJECT(mainwin->ac_menu), "menu_button",
-                           widget);
+       g_object_set_data(G_OBJECT(mainwin->ac_menu), "menu_button",
+                         widget);
 
        gtk_menu_popup(GTK_MENU(mainwin->ac_menu), NULL, NULL,
                       menu_button_position, widget,
                       event->button, event->time);
 
        gtk_menu_popup(GTK_MENU(mainwin->ac_menu), NULL, NULL,
                       menu_button_position, widget,
                       event->button, event->time);
+
+       return FALSE;
 }
 #endif
 
 }
 #endif
 
-static void ac_label_button_pressed(GtkWidget *widget, GdkEventButton *event,
-                                   gpointer data)
+static gboolean ac_label_button_pressed(GtkWidget *widget, GdkEventButton *event,
+                                       gpointer data)
 {
        MainWindow *mainwin = (MainWindow *)data;
 
 {
        MainWindow *mainwin = (MainWindow *)data;
 
-       if (!event) return;
+       if (!event) return FALSE;
 
        gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NORMAL);
 
        gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NORMAL);
-       gtk_object_set_data(GTK_OBJECT(mainwin->ac_menu), "menu_button",
-                           widget);
+       g_object_set_data(G_OBJECT(mainwin->ac_menu), "menu_button",
+                         widget);
 
        gtk_menu_popup(GTK_MENU(mainwin->ac_menu), NULL, NULL,
                       menu_button_position, widget,
                       event->button, event->time);
 
        gtk_menu_popup(GTK_MENU(mainwin->ac_menu), NULL, NULL,
                       menu_button_position, widget,
                       event->button, event->time);
+
+       return TRUE;
 }
 
 static void ac_menu_popup_closed(GtkMenuShell *menu_shell, gpointer data)
 }
 
 static void ac_menu_popup_closed(GtkMenuShell *menu_shell, gpointer data)
@@ -2075,10 +2080,10 @@ static void ac_menu_popup_closed(GtkMenuShell *menu_shell, gpointer data)
        MainWindow *mainwin = (MainWindow *)data;
        GtkWidget *button;
 
        MainWindow *mainwin = (MainWindow *)data;
        GtkWidget *button;
 
-       button = gtk_object_get_data(GTK_OBJECT(menu_shell), "menu_button");
+       button = g_object_get_data(G_OBJECT(menu_shell), "menu_button");
        if (!button) return;
        gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
        if (!button) return;
        gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
-       gtk_object_remove_data(GTK_OBJECT(mainwin->ac_menu), "menu_button");
+       g_object_set_data(G_OBJECT(mainwin->ac_menu), "menu_button", NULL);
        manage_window_focus_in(mainwin->window, NULL, NULL);
 }
 
        manage_window_focus_in(mainwin->window, NULL, NULL);
 }
 
index 414df2e470b76effd3dfd52463efd061af3db8ab..06119aec7e8af472443efbc967abff6aa32180fa 100644 (file)
@@ -170,6 +170,6 @@ gchar *matching_build_command               (const gchar    *cmd,
 
 void prefs_matcher_read_config         (void);
 void prefs_matcher_write_config                (void);
 
 void prefs_matcher_read_config         (void);
 void prefs_matcher_write_config                (void);
-void *matcher_parser_scan_string        (gchar          *str);
+void *matcher_parser_scan_string        (const gchar    *str);
 
 #endif
 
 #endif
index f9bd43a432d04d3afdb7b725b6cb3bf48d0193e1..f39dcf831b587e4e7debb2b728c95d069aaaec88 100644 (file)
@@ -31,10 +31,10 @@ extern int matcher_parserlineno;
 void matcher_parser_start_parsing      (FILE *f);
 int matcher_parserparse                        (void);
 
 void matcher_parser_start_parsing      (FILE *f);
 int matcher_parserparse                        (void);
 
-MatcherList *matcher_parser_get_cond   (gchar *str);
-MatcherProp *matcher_parser_get_prop   (gchar *str);
-FilteringProp *matcher_parser_get_filtering    (gchar *str);
-ScoringProp *matcher_parser_get_scoring                (gchar *str);
-GSList *matcher_parser_get_action_list(gchar *str);
+MatcherList *matcher_parser_get_cond   (const gchar *str);
+MatcherProp *matcher_parser_get_prop   (const gchar *str);
+FilteringProp *matcher_parser_get_filtering    (const gchar *str);
+ScoringProp *matcher_parser_get_scoring                (const gchar *str);
+GSList *matcher_parser_get_action_list(const gchar *str);
 
 #endif
 
 #endif
index bbe8a6d8c72dd0430add1cf779554ade4751317e..29d70d5fe2bc38c4bed091e35884da18c5be8014 100644 (file)
@@ -77,7 +77,7 @@ void matcher_parser_start_parsing(FILE *f)
        matcher_parserparse();
 }
  
        matcher_parserparse();
 }
  
-FilteringProp *matcher_parser_get_filtering(gchar *str)
+FilteringProp *matcher_parser_get_filtering(const gchar *str)
 {
        void *bufstate;
 
 {
        void *bufstate;
 
@@ -96,7 +96,7 @@ FilteringProp *matcher_parser_get_filtering(gchar *str)
        return filtering;
 }
 
        return filtering;
 }
 
-ScoringProp *matcher_parser_get_scoring(gchar *str)
+ScoringProp *matcher_parser_get_scoring(const gchar *str)
 {
        void *bufstate;
 
 {
        void *bufstate;
 
@@ -117,7 +117,7 @@ ScoringProp *matcher_parser_get_scoring(gchar *str)
 
 static gboolean check_quote_symetry(gchar *str)
 {
 
 static gboolean check_quote_symetry(gchar *str)
 {
-       gchar *walk;
+       const gchar *walk;
        int ret = 0;
        
        if (str == NULL)
        int ret = 0;
        
        if (str == NULL)
@@ -134,7 +134,7 @@ static gboolean check_quote_symetry(gchar *str)
        return !(ret % 2);
 }
 
        return !(ret % 2);
 }
 
-MatcherList *matcher_parser_get_cond(gchar *str)
+MatcherList *matcher_parser_get_cond(const gchar *str)
 {
        void *bufstate;
 
 {
        void *bufstate;
 
@@ -156,7 +156,7 @@ MatcherList *matcher_parser_get_cond(gchar *str)
        return cond;
 }
 
        return cond;
 }
 
-GSList *matcher_parser_get_action_list(gchar *str)
+GSList *matcher_parser_get_action_list(const gchar *str)
 {
        void *bufstate;
 
 {
        void *bufstate;
 
@@ -178,7 +178,7 @@ GSList *matcher_parser_get_action_list(gchar *str)
        return action_list;
 }
 
        return action_list;
 }
 
-MatcherProp *matcher_parser_get_prop(gchar *str)
+MatcherProp *matcher_parser_get_prop(const gchar *str)
 {
        MatcherList *list;
        MatcherProp *prop;
 {
        MatcherList *list;
        MatcherProp *prop;
index 3f4c6437890dd69d429a09b464645e9d0c60d62a..240d56db12ce67b56f289b41f68d9b870856acd3 100644 (file)
@@ -29,6 +29,10 @@ typedef enum {
        LOCK_FLOCK
 } LockType;
 
        LOCK_FLOCK
 } LockType;
 
+
+#warning FIXME_GTK2
+/*  file name should be locale encode. */
+
 gint proc_mbox         (FolderItem     *dest,
                         const gchar    *mbox);
 gint lock_mbox         (const gchar    *base,
 gint proc_mbox         (FolderItem     *dest,
                         const gchar    *mbox);
 gint lock_mbox         (const gchar    *base,
index 9503d13da7c0ca8f5e16259291a09d3779288bba..e41488c886f9fe7dd781180b027a3a2f3ff5944e 100644 (file)
@@ -61,7 +61,7 @@ static void message_search_create(MessageView *summaryview);
 static void message_search_execute(GtkButton *button, gpointer data);
 static void message_search_clear(GtkButton *button, gpointer data);
 static void body_activated(void);
 static void message_search_execute(GtkButton *button, gpointer data);
 static void message_search_clear(GtkButton *button, gpointer data);
 static void body_activated(void);
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
 
 void message_search(MessageView *messageview)
 {
 
 void message_search(MessageView *messageview)
 {
@@ -83,16 +83,16 @@ static void message_search_create(MessageView *messageview)
        GtkWidget *checkbtn_hbox;
        GtkWidget *confirm_area;
 
        GtkWidget *checkbtn_hbox;
        GtkWidget *confirm_area;
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title (GTK_WINDOW (window),
                              _("Find in current message"));
        gtk_window_set_title (GTK_WINDOW (window),
                              _("Find in current message"));
-       gtk_widget_set_usize (window, 450, -1);
+       gtk_widget_set_size_request (window, 450, -1);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(gtk_widget_hide_on_delete), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox1 = gtk_vbox_new (FALSE, 0);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox1 = gtk_vbox_new (FALSE, 0);
@@ -110,18 +110,20 @@ static void message_search_create(MessageView *messageview)
        body_entry = gtk_entry_new ();
        gtk_widget_show (body_entry);
        gtk_box_pack_start (GTK_BOX (hbox1), body_entry, TRUE, TRUE, 0);
        body_entry = gtk_entry_new ();
        gtk_widget_show (body_entry);
        gtk_box_pack_start (GTK_BOX (hbox1), body_entry, TRUE, TRUE, 0);
-       gtk_signal_connect(GTK_OBJECT(body_entry), "activate",
-                          GTK_SIGNAL_FUNC(body_activated), messageview);
+       g_signal_connect(G_OBJECT(body_entry), "activate",
+                        G_CALLBACK(body_activated), messageview);
 
        checkbtn_hbox = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (checkbtn_hbox);
        gtk_box_pack_start (GTK_BOX (vbox1), checkbtn_hbox, TRUE, TRUE, 0);
        gtk_container_set_border_width (GTK_CONTAINER (checkbtn_hbox), 8);
 
 
        checkbtn_hbox = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (checkbtn_hbox);
        gtk_box_pack_start (GTK_BOX (vbox1), checkbtn_hbox, TRUE, TRUE, 0);
        gtk_container_set_border_width (GTK_CONTAINER (checkbtn_hbox), 8);
 
-       case_checkbtn = gtk_check_button_new_with_label (_("Case sensitive"));
+#warning FIXME_GTK2
+       case_checkbtn = gtk_check_button_new_with_label (_("Case sensitive (Broken)"));
        gtk_widget_show (case_checkbtn);
        gtk_box_pack_start (GTK_BOX (checkbtn_hbox), case_checkbtn,
                            FALSE, FALSE, 0);
        gtk_widget_show (case_checkbtn);
        gtk_box_pack_start (GTK_BOX (checkbtn_hbox), case_checkbtn,
                            FALSE, FALSE, 0);
+       gtk_widget_set_sensitive(case_checkbtn, FALSE);
 
        backward_checkbtn =
                gtk_check_button_new_with_label (_("Backward search"));
 
        backward_checkbtn =
                gtk_check_button_new_with_label (_("Backward search"));
@@ -137,15 +139,17 @@ static void message_search_create(MessageView *messageview)
        gtk_box_pack_start (GTK_BOX (vbox1), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(search_btn);
 
        gtk_box_pack_start (GTK_BOX (vbox1), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(search_btn);
 
-       gtk_signal_connect(GTK_OBJECT(search_btn), "clicked",
-                          GTK_SIGNAL_FUNC(message_search_execute),
-                          messageview);
-       gtk_signal_connect(GTK_OBJECT(clear_btn), "clicked",
-                          GTK_SIGNAL_FUNC(message_search_clear),
-                          messageview);
-       gtk_signal_connect_object(GTK_OBJECT(close_btn), "clicked",
-                                 GTK_SIGNAL_FUNC(gtk_widget_hide),
-                                 GTK_OBJECT(window));
+       g_signal_connect(G_OBJECT(search_btn), "clicked",
+                        G_CALLBACK(message_search_execute),
+                        messageview);
+       g_signal_connect(G_OBJECT(clear_btn), "clicked",
+                        G_CALLBACK(message_search_clear),
+                        messageview);
+       g_signal_connect_closure
+               (G_OBJECT(close_btn), "clicked",
+                g_cclosure_new_swap(G_CALLBACK(gtk_widget_hide),
+                                    window, NULL),
+                FALSE);
 }
 
 static void message_search_execute(GtkButton *button, gpointer data)
 }
 
 static void message_search_execute(GtkButton *button, gpointer data)
@@ -154,7 +158,7 @@ static void message_search_execute(GtkButton *button, gpointer data)
        gboolean case_sens;
        gboolean backward;
        gboolean all_searched = FALSE;
        gboolean case_sens;
        gboolean backward;
        gboolean all_searched = FALSE;
-       gchar *body_str;
+       const gchar *body_str;
 
        body_str = gtk_entry_get_text(GTK_ENTRY(body_entry));
        if (*body_str == '\0') return;
 
        body_str = gtk_entry_get_text(GTK_ENTRY(body_entry));
        if (*body_str == '\0') return;
@@ -215,8 +219,9 @@ static void body_activated(void)
        gtk_button_clicked(GTK_BUTTON(search_btn));
 }
 
        gtk_button_clicked(GTK_BUTTON(search_btn));
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(window);
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(window);
+       return FALSE;
 }
 }
index 32af2cfe73c9f839a3d923834dd1d252cf30e83c..266b6aa5906aeb8a72f0864801e6e542aa3e50a6 100644 (file)
@@ -380,18 +380,18 @@ MessageView *messageview_create_with_new_window(MainWindow *mainwin)
        gtk_window_set_title(GTK_WINDOW(window), _("Sylpheed - Message View"));
        gtk_window_set_wmclass(GTK_WINDOW(window), "message_view", "Sylpheed");
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
        gtk_window_set_title(GTK_WINDOW(window), _("Sylpheed - Message View"));
        gtk_window_set_wmclass(GTK_WINDOW(window), "message_view", "Sylpheed");
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
-       gtk_widget_set_usize(window, prefs_common.msgwin_width,
-                            prefs_common.msgwin_height);
+       gtk_widget_set_size_request(window, prefs_common.msgwin_width,
+                                   prefs_common.msgwin_height);
 
        msgview = messageview_create(mainwin);
 
 
        msgview = messageview_create(mainwin);
 
-       gtk_signal_connect(GTK_OBJECT(window), "size_allocate",
-                          GTK_SIGNAL_FUNC(messageview_size_allocate_cb),
-                          msgview);
-       gtk_signal_connect(GTK_OBJECT(window), "destroy",
-                          GTK_SIGNAL_FUNC(messageview_destroy_cb), msgview);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), msgview);
+       g_signal_connect(G_OBJECT(window), "size_allocate",
+                        G_CALLBACK(messageview_size_allocate_cb),
+                        msgview);
+       g_signal_connect(G_OBJECT(window), "destroy",
+                        G_CALLBACK(messageview_destroy_cb), msgview);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), msgview);
 
        messageview_add_toolbar(msgview, window);
 
 
        messageview_add_toolbar(msgview, window);
 
@@ -838,8 +838,14 @@ void messageview_copy_clipboard(MessageView *messageview)
        TextView *text;
 
        text = messageview_get_current_textview(messageview);
        TextView *text;
 
        text = messageview_get_current_textview(messageview);
-       if (text)
-               gtk_editable_copy_clipboard(GTK_EDITABLE(text->text));
+       if (text) {
+               GtkTextView *textview = GTK_TEXT_VIEW(text->text);
+               GtkTextBuffer *buffer = gtk_text_view_get_buffer(textview);
+               GtkClipboard *clipboard
+                       = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
+
+               gtk_text_buffer_copy_clipboard(buffer, clipboard);
+       }
 }
 
 void messageview_select_all(MessageView *messageview)
 }
 
 void messageview_select_all(MessageView *messageview)
@@ -1046,29 +1052,35 @@ gchar *messageview_get_selection(MessageView *msgview)
 {
        TextView *textview;
        gchar *text = NULL;
 {
        TextView *textview;
        gchar *text = NULL;
-       GtkEditable *edit = NULL;
+       GtkTextView *edit = NULL;
+       GtkTextBuffer *textbuf;
        gint body_pos = 0;
        
        g_return_val_if_fail(msgview != NULL, NULL);
 
        textview = messageview_get_current_textview(msgview);
        if (textview) {
        gint body_pos = 0;
        
        g_return_val_if_fail(msgview != NULL, NULL);
 
        textview = messageview_get_current_textview(msgview);
        if (textview) {
-               edit = GTK_EDITABLE(textview->text);
+               edit = GTK_TEXT_VIEW(textview->text);
                body_pos = textview->body_pos;
        } else {
                body_pos = textview->body_pos;
        } else {
-               edit = GTK_EDITABLE(msgview->mimeview->textview->text);
+               edit = GTK_TEXT_VIEW(msgview->mimeview->textview->text);
                body_pos = msgview->mimeview->textview->body_pos;
        }
 
        g_return_val_if_fail(edit != NULL, NULL);
 
                body_pos = msgview->mimeview->textview->body_pos;
        }
 
        g_return_val_if_fail(edit != NULL, NULL);
 
-       if (edit->has_selection)
-               text = gtkut_editable_get_selection(edit);
-       else if (msgview->filtered) 
-               text = gtk_editable_get_chars (edit, body_pos, -1);
-       else
+       textbuf = gtk_text_view_get_buffer(edit);
+
+       if (gtk_text_buffer_get_selection_bounds(textbuf, NULL, NULL))
+               return gtkut_text_view_get_selection(edit);
+       else if (msgview->filtered) {
+               GtkTextIter start_iter, end_iter;
+               gtk_text_buffer_get_iter_at_offset(textbuf, &start_iter, body_pos);
+               gtk_text_buffer_get_end_iter(textbuf, &end_iter);
+               gtk_text_buffer_get_text(textbuf, &start_iter, &end_iter, FALSE);
+       } else
                text = NULL;
                text = NULL;
-       
+
        return text;
 }
 
        return text;
 }
 
index e0bc447fc09dd2463a46dcab399d3524bbc078d4..20b3cad2b5432f52736bf3f1f1f518e325bd2979 100644 (file)
--- a/src/mh.c
+++ b/src/mh.c
@@ -42,6 +42,7 @@
 #include "procmsg.h"
 #include "procheader.h"
 #include "utils.h"
 #include "procmsg.h"
 #include "procheader.h"
 #include "utils.h"
+#include "codeconv.h"
 
 static void mh_folder_init(Folder * folder,
                           const gchar * name, const gchar * path);
 
 static void mh_folder_init(Folder * folder,
                           const gchar * name, const gchar * path);
@@ -81,6 +82,8 @@ static gchar *mh_get_new_msg_filename(FolderItem * dest);
 static MsgInfo *mh_parse_msg(const gchar * file, FolderItem * item);
 static void    mh_remove_missing_folder_items  (Folder         *folder);
 static void mh_scan_tree_recursive(FolderItem * item);
 static MsgInfo *mh_parse_msg(const gchar * file, FolderItem * item);
 static void    mh_remove_missing_folder_items  (Folder         *folder);
 static void mh_scan_tree_recursive(FolderItem * item);
+static gchar   *mh_filename_from_utf8          (const gchar    *path);
+static gchar   *mh_filename_to_utf8            (const gchar    *path);
 
 static gboolean mh_rename_folder_func(GNode * node, gpointer data);
 static gchar *mh_item_get_path(Folder *folder, FolderItem *item);
 
 static gboolean mh_rename_folder_func(GNode * node, gpointer data);
 static gchar *mh_item_get_path(Folder *folder, FolderItem *item);
@@ -243,7 +246,7 @@ gchar *mh_fetch_msg(Folder *folder, FolderItem *item, gint num)
 
        path = folder_item_get_path(item);
        file = g_strconcat(path, G_DIR_SEPARATOR_S, itos(num), NULL);
 
        path = folder_item_get_path(item);
        file = g_strconcat(path, G_DIR_SEPARATOR_S, itos(num), NULL);
-       g_free(path);
+
        if (!is_file_exist(file)) {
                g_free(file);
                return NULL;
        if (!is_file_exist(file)) {
                g_free(file);
                return NULL;
@@ -559,7 +562,7 @@ gchar *mh_item_get_path(Folder *folder, FolderItem *item)
 FolderItem *mh_create_folder(Folder *folder, FolderItem *parent,
                             const gchar *name)
 {
 FolderItem *mh_create_folder(Folder *folder, FolderItem *parent,
                             const gchar *name)
 {
-       gchar *path;
+       gchar *path, *real_name;
        gchar *fullpath;
        FolderItem *new_item;
        gchar *mh_sequences_filename;
        gchar *fullpath;
        FolderItem *new_item;
        gchar *mh_sequences_filename;
@@ -574,7 +577,9 @@ FolderItem *mh_create_folder(Folder *folder, FolderItem *parent,
                if (make_dir_hier(path) != 0)
                        return NULL;
                
                if (make_dir_hier(path) != 0)
                        return NULL;
                
-       fullpath = g_strconcat(path, G_DIR_SEPARATOR_S, name, NULL);
+       real_name = mh_filename_from_utf8(name);
+       fullpath = g_strconcat(path, G_DIR_SEPARATOR_S, real_name, NULL);
+       g_free(real_name);
        g_free(path);
 
        if (make_dir(fullpath) < 0) {
        g_free(path);
 
        if (make_dir(fullpath) < 0) {
@@ -608,9 +613,10 @@ FolderItem *mh_create_folder(Folder *folder, FolderItem *parent,
 
 gint mh_rename_folder(Folder *folder, FolderItem *item, const gchar *name)
 {
 
 gint mh_rename_folder(Folder *folder, FolderItem *item, const gchar *name)
 {
+       gchar *real_name;
        gchar *oldpath;
        gchar *dirname;
        gchar *oldpath;
        gchar *dirname;
-       gchar *newpath;
+       gchar *newpath, *utf8newpath;
        gchar *paths[2];
 
        g_return_val_if_fail(folder != NULL, -1);
        gchar *paths[2];
 
        g_return_val_if_fail(folder != NULL, -1);
@@ -623,8 +629,9 @@ gint mh_rename_folder(Folder *folder, FolderItem *item, const gchar *name)
                make_dir_hier(oldpath);
 
        dirname = g_dirname(oldpath);
                make_dir_hier(oldpath);
 
        dirname = g_dirname(oldpath);
-       newpath = g_strconcat(dirname, G_DIR_SEPARATOR_S, name, NULL);
-       g_free(dirname);
+       real_name = mh_filename_from_utf8(name);
+       newpath = g_strconcat(dirname, G_DIR_SEPARATOR_S, real_name, NULL);
+       g_free(real_name);
 
        if (rename(oldpath, newpath) < 0) {
                FILE_OP_ERROR(oldpath, "rename");
 
        if (rename(oldpath, newpath) < 0) {
                FILE_OP_ERROR(oldpath, "rename");
@@ -638,16 +645,17 @@ gint mh_rename_folder(Folder *folder, FolderItem *item, const gchar *name)
 
        if (strchr(item->path, G_DIR_SEPARATOR) != NULL) {
                dirname = g_dirname(item->path);
 
        if (strchr(item->path, G_DIR_SEPARATOR) != NULL) {
                dirname = g_dirname(item->path);
-               newpath = g_strconcat(dirname, G_DIR_SEPARATOR_S, name, NULL);
+               utf8newpath = g_strconcat(dirname, G_DIR_SEPARATOR_S,
+                                         name, NULL);
                g_free(dirname);
        } else
                g_free(dirname);
        } else
-               newpath = g_strdup(name);
+               utf8newpath = g_strdup(name);
 
        g_free(item->name);
        item->name = g_strdup(name);
 
        paths[0] = g_strdup(item->path);
 
        g_free(item->name);
        item->name = g_strdup(name);
 
        paths[0] = g_strdup(item->path);
-       paths[1] = newpath;
+       paths[1] = utf8newpath;
        g_node_traverse(item->node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
                        mh_rename_folder_func, paths);
 
        g_node_traverse(item->node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
                        mh_rename_folder_func, paths);
 
@@ -776,7 +784,7 @@ static void mh_scan_tree_recursive(FolderItem *item)
        DIR *dp;
        struct dirent *d;
        struct stat s;
        DIR *dp;
        struct dirent *d;
        struct stat s;
-       gchar *entry;
+       gchar *real_path, *entry, *utf8entry, *utf8name;
        gint n_msg = 0;
 
        g_return_if_fail(item != NULL);
        gint n_msg = 0;
 
        g_return_if_fail(item != NULL);
@@ -784,11 +792,13 @@ static void mh_scan_tree_recursive(FolderItem *item)
 
        folder = item->folder;
 
 
        folder = item->folder;
 
-       dp = opendir(item->path ? item->path : ".");
+       real_path = item->path ? mh_filename_from_utf8(item->path) : g_strdup(".");
+       dp = opendir(real_path);
        if (!dp) {
        if (!dp) {
-               FILE_OP_ERROR(item->path ? item->path : ".", "opendir");
+               FILE_OP_ERROR(real_path, "opendir");
                return;
        }
                return;
        }
+       g_free(real_path);
 
        debug_print("scanning %s ...\n",
                    item->path ? item->path
 
        debug_print("scanning %s ...\n",
                    item->path ? item->path
@@ -799,15 +809,19 @@ static void mh_scan_tree_recursive(FolderItem *item)
        while ((d = readdir(dp)) != NULL) {
                if (d->d_name[0] == '.') continue;
 
        while ((d = readdir(dp)) != NULL) {
                if (d->d_name[0] == '.') continue;
 
+               utf8name = mh_filename_to_utf8(d->d_name);
                if (item->path)
                if (item->path)
-                       entry = g_strconcat(item->path, G_DIR_SEPARATOR_S,
-                                           d->d_name, NULL);
+                       utf8entry = g_strconcat(item->path, G_DIR_SEPARATOR_S,
+                                               utf8name, NULL);
                else
                else
-                       entry = g_strdup(d->d_name);
+                       utf8entry = g_strdup(utf8name);
+               entry = mh_filename_from_utf8(utf8entry);
 
                if (stat(entry, &s) < 0) {
                        FILE_OP_ERROR(entry, "stat");
                        g_free(entry);
 
                if (stat(entry, &s) < 0) {
                        FILE_OP_ERROR(entry, "stat");
                        g_free(entry);
+                       g_free(utf8entry);
+                       g_free(utf8name);
                        continue;
                }
 
                        continue;
                }
 
@@ -818,6 +832,8 @@ static void mh_scan_tree_recursive(FolderItem *item)
 #if 0
                        if (mh_is_maildir(entry)) {
                                g_free(entry);
 #if 0
                        if (mh_is_maildir(entry)) {
                                g_free(entry);
+                               g_free(utf8entry);
+                               g_free(utf8name);
                                continue;
                        }
 #endif
                                continue;
                        }
 #endif
@@ -832,7 +848,7 @@ static void mh_scan_tree_recursive(FolderItem *item)
                        }
                        if (!new_item) {
                                debug_print("new folder '%s' found.\n", entry);
                        }
                        if (!new_item) {
                                debug_print("new folder '%s' found.\n", entry);
-                               new_item = folder_item_new(folder, d->d_name, entry);
+                               new_item = folder_item_new(folder, utf8name, utf8entry);
                                folder_item_append(item, new_item);
                        }
 
                                folder_item_append(item, new_item);
                        }
 
@@ -864,6 +880,8 @@ static void mh_scan_tree_recursive(FolderItem *item)
                } else if (to_number(d->d_name) != -1) n_msg++;
 
                g_free(entry);
                } else if (to_number(d->d_name) != -1) n_msg++;
 
                g_free(entry);
+               g_free(utf8entry);
+               g_free(utf8name);
        }
 
        closedir(dp);
        }
 
        closedir(dp);
@@ -913,3 +931,37 @@ static gboolean mh_rename_folder_func(GNode *node, gpointer data)
 
        return FALSE;
 }
 
        return FALSE;
 }
+
+#warning FIXME_GTK2 /* should we use g_filename_from_utf8()? */
+static gchar *mh_filename_from_utf8(const gchar *path)
+{
+       const gchar *src_codeset = CS_UTF_8;
+       const gchar *dest_codeset = conv_get_current_charset_str();
+       gchar *real_path;
+
+       real_path = conv_codeset_strdup(path, src_codeset, dest_codeset);
+       if (!real_path) {
+               g_warning("mh_filename_from_utf8: faild to convert character set\n");
+               /* FIXME: show dialog? */
+               real_path = g_strdup(path);
+       }
+
+       return real_path;
+}
+
+#warning FIXME_GTK2 /* should we use g_filename_to_utf8()? */
+static gchar *mh_filename_to_utf8(const gchar *path)
+{
+       const gchar *src_codeset = conv_get_current_charset_str();
+       const gchar *dest_codeset = CS_UTF_8;
+       gchar *utf8path;
+
+       utf8path = conv_codeset_strdup(path, src_codeset, dest_codeset);
+       if (!utf8path) {
+               g_warning("mh_filename_to_utf8: faild to convert character set\n");
+               /* FIXME: show dialog? */
+               utf8path = g_strdup(path);
+       }
+
+       return utf8path;
+}
index fb13820aa609b85618c74c7e80847e01e6a55e0e..dc3b013c72fa9caf53297618ef96270128148edf 100644 (file)
@@ -223,16 +223,16 @@ MimeView *mimeview_create(MainWindow *mainwin)
                                       GTK_CAN_FOCUS);
        gtk_container_add(GTK_CONTAINER(scrolledwin), ctree);
 
                                       GTK_CAN_FOCUS);
        gtk_container_add(GTK_CONTAINER(scrolledwin), ctree);
 
-       gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row",
-                          GTK_SIGNAL_FUNC(mimeview_selected), mimeview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "button_press_event",
-                          GTK_SIGNAL_FUNC(mimeview_button_pressed), mimeview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "key_press_event",
-                          GTK_SIGNAL_FUNC(mimeview_key_pressed), mimeview);
-       gtk_signal_connect(GTK_OBJECT (ctree),"start_drag",
-                          GTK_SIGNAL_FUNC (mimeview_start_drag), mimeview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "drag_data_get",
-                          GTK_SIGNAL_FUNC(mimeview_drag_data_get), mimeview);
+       g_signal_connect(G_OBJECT(ctree), "tree_select_row",
+                        G_CALLBACK(mimeview_selected), mimeview);
+       g_signal_connect(G_OBJECT(ctree), "button_press_event",
+                        G_CALLBACK(mimeview_button_pressed), mimeview);
+       g_signal_connect(G_OBJECT(ctree), "key_press_event",
+                        G_CALLBACK(mimeview_key_pressed), mimeview);
+       g_signal_connect(G_OBJECT (ctree),"start_drag",
+                        G_CALLBACK (mimeview_start_drag), mimeview);
+       g_signal_connect(G_OBJECT(ctree), "drag_data_get",
+                        G_CALLBACK(mimeview_drag_data_get), mimeview);
 
        mime_notebook = gtk_notebook_new();
         gtk_widget_show(mime_notebook);
 
        mime_notebook = gtk_notebook_new();
         gtk_widget_show(mime_notebook);
@@ -240,7 +240,7 @@ MimeView *mimeview_create(MainWindow *mainwin)
         gtk_notebook_set_show_tabs(GTK_NOTEBOOK(mime_notebook), FALSE);
         gtk_notebook_set_show_border(GTK_NOTEBOOK(mime_notebook), FALSE);
        
         gtk_notebook_set_show_tabs(GTK_NOTEBOOK(mime_notebook), FALSE);
         gtk_notebook_set_show_border(GTK_NOTEBOOK(mime_notebook), FALSE);
        
-       gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0);
+       gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), 0);
                                
        icon_vbox = gtk_vbox_new(FALSE, 2);
        icon_scroll = gtk_layout_new(NULL, NULL);
                                
        icon_vbox = gtk_vbox_new(FALSE, 2);
        icon_scroll = gtk_layout_new(NULL, NULL);
@@ -251,15 +251,15 @@ MimeView *mimeview_create(MainWindow *mainwin)
        arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE);
        gtk_widget_show(arrow);
        gtk_container_add(GTK_CONTAINER(mime_toggle), arrow);
        arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE);
        gtk_widget_show(arrow);
        gtk_container_add(GTK_CONTAINER(mime_toggle), arrow);
-       gtk_signal_connect(GTK_OBJECT(mime_toggle), "toggled", 
-                          GTK_SIGNAL_FUNC(mime_toggle_button_cb), mimeview);
+       g_signal_connect(G_OBJECT(mime_toggle), "toggled", 
+                        G_CALLBACK(mime_toggle_button_cb), mimeview);
 
        icon_mainbox = gtk_vbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(icon_mainbox), mime_toggle, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(icon_mainbox), icon_scroll, TRUE, TRUE, 3);
        gtk_box_pack_end(GTK_BOX(icon_mainbox), scrollbutton, FALSE, FALSE, 0);
 
        icon_mainbox = gtk_vbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(icon_mainbox), mime_toggle, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(icon_mainbox), icon_scroll, TRUE, TRUE, 3);
        gtk_box_pack_end(GTK_BOX(icon_mainbox), scrollbutton, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(icon_mainbox), "size_allocate", 
-                       GTK_SIGNAL_FUNC(icon_scroll_size_allocate_cb), mimeview);
+       g_signal_connect(G_OBJECT(icon_mainbox), "size_allocate", 
+                        G_CALLBACK(icon_scroll_size_allocate_cb), mimeview);
        
        ctree_mainbox = gtk_hbox_new(FALSE, 0); 
        gtk_box_pack_start(GTK_BOX(ctree_mainbox), scrolledwin, TRUE, TRUE, 0);
        
        ctree_mainbox = gtk_hbox_new(FALSE, 0); 
        gtk_box_pack_start(GTK_BOX(ctree_mainbox), scrolledwin, TRUE, TRUE, 0);
@@ -398,14 +398,14 @@ void mimeview_show_message(MimeView *mimeview, MimeInfo *mimeinfo,
                set_unchecked_signature(mimeinfo);
 #endif
 
                set_unchecked_signature(mimeinfo);
 #endif
 
-       gtk_signal_handler_block_by_func(GTK_OBJECT(ctree), mimeview_selected,
-                                        mimeview);
+       g_signal_handlers_block_by_func(G_OBJECT(ctree), mimeview_selected,
+                                       mimeview);
 
        mimeview_set_multipart_tree(mimeview, mimeinfo, NULL);
        icon_list_create(mimeview, mimeinfo);
 
 
        mimeview_set_multipart_tree(mimeview, mimeinfo, NULL);
        icon_list_create(mimeview, mimeinfo);
 
-       gtk_signal_handler_unblock_by_func(GTK_OBJECT(ctree),
-                                          mimeview_selected, mimeview);
+       g_signal_handlers_unblock_by_func(G_OBJECT(ctree),
+                                         mimeview_selected, mimeview);
 
        /* search first text part */
        for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
 
        /* search first text part */
        for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
@@ -668,7 +668,8 @@ static gboolean mimeview_show_part(MimeView *mimeview, MimeInfo *partinfo)
        }
        viewer->show_mimepart(viewer, mimeview->file, partinfo);
 
        }
        viewer->show_mimepart(viewer, mimeview->file, partinfo);
 
-       return TRUE;
+#warning FIXME_GTK2 Is it correct?
+       return FALSE;
 }
 
 static void mimeview_change_view_type(MimeView *mimeview, MimeViewType type)
 }
 
 static void mimeview_change_view_type(MimeView *mimeview, MimeViewType type)
@@ -854,12 +855,17 @@ void mimeview_pass_key_press_event(MimeView *mimeview, GdkEventKey *event)
 #define BREAK_ON_MODIFIER_KEY() \
        if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) break
 
 #define BREAK_ON_MODIFIER_KEY() \
        if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) break
 
+#warning FIXME_GTK2
+#if 0
 #define KEY_PRESS_EVENT_STOP() \
        if (gtk_signal_n_emissions_by_name \
                (GTK_OBJECT(ctree), "key_press_event") > 0) { \
                gtk_signal_emit_stop_by_name(GTK_OBJECT(ctree), \
                                             "key_press_event"); \
        }
 #define KEY_PRESS_EVENT_STOP() \
        if (gtk_signal_n_emissions_by_name \
                (GTK_OBJECT(ctree), "key_press_event") > 0) { \
                gtk_signal_emit_stop_by_name(GTK_OBJECT(ctree), \
                                             "key_press_event"); \
        }
+#else
+#define KEY_PRESS_EVENT_STOP()
+#endif
 
 static gint mimeview_key_pressed(GtkWidget *widget, GdkEventKey *event,
                                 MimeView *mimeview)
 
 static gint mimeview_key_pressed(GtkWidget *widget, GdkEventKey *event,
                                 MimeView *mimeview)
@@ -895,8 +901,7 @@ static gint mimeview_key_pressed(GtkWidget *widget, GdkEventKey *event,
                BREAK_ON_MODIFIER_KEY();
                if (!GTK_CTREE_NODE_NEXT(mimeview->opened)) break;
                KEY_PRESS_EVENT_STOP();
                BREAK_ON_MODIFIER_KEY();
                if (!GTK_CTREE_NODE_NEXT(mimeview->opened)) break;
                KEY_PRESS_EVENT_STOP();
-
-               gtk_signal_emit_by_name(GTK_OBJECT(ctree), "scroll_vertical",
+               g_signal_emit_by_name(G_OBJECT(ctree), "scroll_vertical",
                                        GTK_SCROLL_STEP_FORWARD, 0.0);
                return TRUE;
        case GDK_p:
                                        GTK_SCROLL_STEP_FORWARD, 0.0);
                return TRUE;
        case GDK_p:
@@ -904,8 +909,7 @@ static gint mimeview_key_pressed(GtkWidget *widget, GdkEventKey *event,
                BREAK_ON_MODIFIER_KEY();
                if (!GTK_CTREE_NODE_PREV(mimeview->opened)) break;
                KEY_PRESS_EVENT_STOP();
                BREAK_ON_MODIFIER_KEY();
                if (!GTK_CTREE_NODE_PREV(mimeview->opened)) break;
                KEY_PRESS_EVENT_STOP();
-
-               gtk_signal_emit_by_name(GTK_OBJECT(ctree), "scroll_vertical",
+               g_signal_emit_by_name(G_OBJECT(ctree), "scroll_vertical",
                                        GTK_SCROLL_STEP_BACKWARD, 0.0);
                return TRUE;
        case GDK_y:
                                        GTK_SCROLL_STEP_BACKWARD, 0.0);
                return TRUE;
        case GDK_y:
@@ -941,6 +945,7 @@ static void mimeview_drag_data_get(GtkWidget            *widget,
                                   MimeView         *mimeview)
 {
        gchar *filename, *uriname;
                                   MimeView         *mimeview)
 {
        gchar *filename, *uriname;
+       const gchar *bname;
        MimeInfo *partinfo;
 
        if (!mimeview->opened) return;
        MimeInfo *partinfo;
 
        if (!mimeview->opened) return;
@@ -951,11 +956,11 @@ static void mimeview_drag_data_get(GtkWidget          *widget,
        if (!partinfo->filename && !partinfo->name) return;
 
        filename = partinfo->filename ? partinfo->filename : partinfo->name;
        if (!partinfo->filename && !partinfo->name) return;
 
        filename = partinfo->filename ? partinfo->filename : partinfo->name;
-       filename = g_basename(filename);
-       if (*filename == '\0') return;
+       bname = g_basename(filename);
+       if (*bname == '\0') return;
 
        filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S,
 
        filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S,
-                              filename, NULL);
+                              bname, NULL);
 
        if (procmime_get_part(filename, mimeview->file, partinfo) < 0)
                alertpanel_error
 
        if (procmime_get_part(filename, mimeview->file, partinfo) < 0)
                alertpanel_error
@@ -1360,6 +1365,8 @@ static void icon_selected (MimeView *mimeview, gint num, MimeInfo *partinfo)
        }
 }              
 
        }
 }              
 
+#warning FIXME_GTK2
+#if 0
 #undef  KEY_PRESS_EVENT_STOP
 #define KEY_PRESS_EVENT_STOP() \
        if (gtk_signal_n_emissions_by_name \
 #undef  KEY_PRESS_EVENT_STOP
 #define KEY_PRESS_EVENT_STOP() \
        if (gtk_signal_n_emissions_by_name \
@@ -1367,6 +1374,7 @@ static void icon_selected (MimeView *mimeview, gint num, MimeInfo *partinfo)
                gtk_signal_emit_stop_by_name(GTK_OBJECT(button), \
                                             "key_press_event"); \
        }
                gtk_signal_emit_stop_by_name(GTK_OBJECT(button), \
                                             "key_press_event"); \
        }
+#endif
 static gint icon_key_pressed(GtkWidget *button, GdkEventKey *event,
                             MimeView *mimeview)
 {
 static gint icon_key_pressed(GtkWidget *button, GdkEventKey *event,
                             MimeView *mimeview)
 {
@@ -1468,7 +1476,7 @@ static void toggle_icon(GtkToggleButton *button, MimeView *mimeview)
 {
        GList *child;
        
 {
        GList *child;
        
-       child = gtk_container_children(GTK_CONTAINER(mimeview->icon_vbox));
+       child = gtk_container_get_children(GTK_CONTAINER(mimeview->icon_vbox));
        for (; child != NULL; child = g_list_next(child)) {
                if (GTK_IS_TOGGLE_BUTTON(child->data) && 
                    GTK_TOGGLE_BUTTON(child->data) != button &&
        for (; child != NULL; child = g_list_next(child)) {
                if (GTK_IS_TOGGLE_BUTTON(child->data) && 
                    GTK_TOGGLE_BUTTON(child->data) != button &&
@@ -1564,10 +1572,10 @@ static void icon_list_append_icon (MimeView *mimeview, MimeInfo *mimeinfo)
        gtk_tooltips_set_tip(mimeview->tooltips, button, tip, NULL);
        g_free(tip);
        gtk_widget_show_all(button);
        gtk_tooltips_set_tip(mimeview->tooltips, button, tip, NULL);
        g_free(tip);
        gtk_widget_show_all(button);
-       gtk_signal_connect(GTK_OBJECT(button), "button_press_event", 
-                          GTK_SIGNAL_FUNC(icon_clicked_cb), mimeview);
-       gtk_signal_connect(GTK_OBJECT(button), "key_press_event", 
-                          GTK_SIGNAL_FUNC(icon_key_pressed), mimeview);
+       g_signal_connect(G_OBJECT(button), "button_press_event", 
+                        G_CALLBACK(icon_clicked_cb), mimeview);
+       g_signal_connect(G_OBJECT(button), "key_press_event", 
+                        G_CALLBACK(icon_key_pressed), mimeview);
        gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
 
 }
        gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
 
 }
@@ -1682,8 +1690,8 @@ static void icon_list_create(MimeView *mimeview, MimeInfo *mimeinfo)
        gtk_widget_size_request(mimeview->icon_vbox, &size);
        width = size.width + 4;
        if (width > mimeview->icon_mainbox->requisition.width) {
        gtk_widget_size_request(mimeview->icon_vbox, &size);
        width = size.width + 4;
        if (width > mimeview->icon_mainbox->requisition.width) {
-               gtk_widget_set_usize(mimeview->icon_mainbox, 
-                                    width, -1);
+               gtk_widget_set_size_request(mimeview->icon_mainbox, 
+                                           width, -1);
        }
 
 }
        }
 
 }
index a49203af4fc46b72600bd3b1b3a5504d55452d63..0c8f19230698703dfba30198723c5cb61ca5f619 100644 (file)
@@ -561,7 +561,7 @@ gint mutt_import_data( MuttFile *muttFile, AddressCache *cache ) {
 * no home. Filename should be g_free() when done.
 */
 gchar *mutt_find_file( void ) {
 * no home. Filename should be g_free() when done.
 */
 gchar *mutt_find_file( void ) {
-       gchar *homedir;
+       const gchar *homedir;
        gchar str[ WORK_BUFLEN ];
        gint len;
        FILE *fp;
        gchar str[ WORK_BUFLEN ];
        gint len;
        FILE *fp;
index 8e44f9ec3a4541fe3c828afcee7e78c437870cfa..a6d6bf3e051238c1cf8e831f3c2dc8fab00892bb 100644 (file)
@@ -27,7 +27,6 @@
 #include <sys/mman.h>
 #include <glib.h>
 #include <gdk/gdkkeysyms.h>
 #include <sys/mman.h>
 #include <glib.h>
 #include <gdk/gdkkeysyms.h>
-#include <gdk/gdkx.h>  /* GDK_DISPLAY() */
 #include <gtk/gtkmain.h>
 #include <gtk/gtkwidget.h>
 #include <gtk/gtkwindow.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtkwidget.h>
 #include <gtk/gtkwindow.h>
@@ -39,6 +38,9 @@
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkfilesel.h>
 #include <gtk/gtksignal.h>
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkfilesel.h>
 #include <gtk/gtksignal.h>
+#ifdef GDK_WINDOWING_X11
+#include <gdk/gdkx.h>  /* GDK_DISPLAY() */
+#endif /* GDK_WINDOWING_X11 */
 
 #include "intl.h"
 #include "passphrase.h"
 
 #include "intl.h"
 #include "passphrase.h"
@@ -55,8 +57,8 @@ static void passphrase_ok_cb(GtkWidget *widget, gpointer data);
 static void passphrase_cancel_cb(GtkWidget *widget, gpointer data);
 static gint passphrase_deleted(GtkWidget *widget, GdkEventAny *event,
                               gpointer data);
 static void passphrase_cancel_cb(GtkWidget *widget, gpointer data);
 static gint passphrase_deleted(GtkWidget *widget, GdkEventAny *event,
                               gpointer data);
-static void passphrase_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                                  gpointer data);
+static gboolean passphrase_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                      gpointer data);
 static gchar* passphrase_mbox (const gchar *desc);
 
 
 static gchar* passphrase_mbox (const gchar *desc);
 
 
@@ -81,17 +83,17 @@ passphrase_mbox (const gchar *desc)
     GtkWidget *ok_button;
     GtkWidget *cancel_button;
 
     GtkWidget *ok_button;
     GtkWidget *cancel_button;
 
-    window = gtk_window_new(GTK_WINDOW_DIALOG);
+    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     gtk_window_set_title(GTK_WINDOW(window), _("Passphrase"));
     gtk_window_set_title(GTK_WINDOW(window), _("Passphrase"));
-    gtk_widget_set_usize(window, 450, -1);
+    gtk_widget_set_size_request(window, 450, -1);
     gtk_container_set_border_width(GTK_CONTAINER(window), 4);
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     gtk_window_set_modal(GTK_WINDOW(window), TRUE);
     gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
     gtk_container_set_border_width(GTK_CONTAINER(window), 4);
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     gtk_window_set_modal(GTK_WINDOW(window), TRUE);
     gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
-    gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                       GTK_SIGNAL_FUNC(passphrase_deleted), NULL);
-    gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                       GTK_SIGNAL_FUNC(passphrase_key_pressed), NULL);
+    g_signal_connect(G_OBJECT(window), "delete_event",
+                    G_CALLBACK(passphrase_deleted), NULL);
+    g_signal_connect(G_OBJECT(window), "key_press_event",
+                    G_CALLBACK(passphrase_key_pressed), NULL);
     MANAGE_WINDOW_SIGNALS_CONNECT(window);
     manage_window_set_transient(GTK_WINDOW(window));
 
     MANAGE_WINDOW_SIGNALS_CONNECT(window);
     manage_window_set_transient(GTK_WINDOW(window));
 
@@ -125,7 +127,7 @@ passphrase_mbox (const gchar *desc)
 
     confirm_box = gtk_hbutton_box_new ();
     gtk_button_box_set_layout (GTK_BUTTON_BOX(confirm_box), GTK_BUTTONBOX_END);
 
     confirm_box = gtk_hbutton_box_new ();
     gtk_button_box_set_layout (GTK_BUTTON_BOX(confirm_box), GTK_BUTTONBOX_END);
-    gtk_button_box_set_spacing (GTK_BUTTON_BOX(confirm_box), 5);
+    gtk_box_set_spacing (GTK_BOX(confirm_box), 5);
 
     ok_button = gtk_button_new_with_label (_("OK"));
     GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT);
 
     ok_button = gtk_button_new_with_label (_("OK"));
     GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT);
@@ -138,15 +140,15 @@ passphrase_mbox (const gchar *desc)
     gtk_box_pack_end(GTK_BOX(vbox), confirm_box, FALSE, FALSE, 0);
     gtk_widget_grab_default (ok_button);
 
     gtk_box_pack_end(GTK_BOX(vbox), confirm_box, FALSE, FALSE, 0);
     gtk_widget_grab_default (ok_button);
 
-    gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
-                       GTK_SIGNAL_FUNC(passphrase_ok_cb), NULL);
-    gtk_signal_connect(GTK_OBJECT(pass_entry), "activate",
-                       GTK_SIGNAL_FUNC(passphrase_ok_cb), NULL);
-    gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
-                       GTK_SIGNAL_FUNC(passphrase_cancel_cb), NULL);
+    g_signal_connect(G_OBJECT(ok_button), "clicked",
+                    G_CALLBACK(passphrase_ok_cb), NULL);
+    g_signal_connect(G_OBJECT(pass_entry), "activate",
+                    G_CALLBACK(passphrase_ok_cb), NULL);
+    g_signal_connect(G_OBJECT(cancel_button), "clicked",
+                    G_CALLBACK(passphrase_cancel_cb), NULL);
 
     if (grab_all)
 
     if (grab_all)
-        gtk_object_set (GTK_OBJECT(window), "type", GTK_WINDOW_POPUP, NULL);
+        g_object_set (G_OBJECT(window), "type", GTK_WINDOW_POPUP, NULL);
     gtk_window_set_position (GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     if (grab_all)   
         gtk_window_set_policy (GTK_WINDOW(window), FALSE, FALSE, TRUE);
     gtk_window_set_position (GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     if (grab_all)   
         gtk_window_set_policy (GTK_WINDOW(window), FALSE, FALSE, TRUE);
@@ -154,17 +156,23 @@ passphrase_mbox (const gchar *desc)
     gtk_widget_show_all(window);
 
     if (grab_all) {
     gtk_widget_show_all(window);
 
     if (grab_all) {
+#ifdef GDK_WINDOWING_X11
         XGrabServer(GDK_DISPLAY());
         XGrabServer(GDK_DISPLAY());
+#endif /* GDK_WINDOWING_X11 */
         if ( gdk_pointer_grab ( window->window, TRUE, 0,
                                 NULL, NULL, GDK_CURRENT_TIME)) {
         if ( gdk_pointer_grab ( window->window, TRUE, 0,
                                 NULL, NULL, GDK_CURRENT_TIME)) {
+#ifdef GDK_WINDOWING_X11
             XUngrabServer ( GDK_DISPLAY() );
             XUngrabServer ( GDK_DISPLAY() );
+#endif /* GDK_WINDOWING_X11 */
             g_warning ("OOPS: Could not grab mouse\n");
             gtk_widget_destroy (window);
             return NULL;
         }
         if ( gdk_keyboard_grab( window->window, FALSE, GDK_CURRENT_TIME )) {
             gdk_pointer_ungrab (GDK_CURRENT_TIME);
             g_warning ("OOPS: Could not grab mouse\n");
             gtk_widget_destroy (window);
             return NULL;
         }
         if ( gdk_keyboard_grab( window->window, FALSE, GDK_CURRENT_TIME )) {
             gdk_pointer_ungrab (GDK_CURRENT_TIME);
+#ifdef GDK_WINDOWING_X11
             XUngrabServer ( GDK_DISPLAY() );
             XUngrabServer ( GDK_DISPLAY() );
+#endif /* GDK_WINDOWING_X11 */
             g_warning ("OOPS: Could not grab keyboard\n");
             gtk_widget_destroy (window);
             return NULL;
             g_warning ("OOPS: Could not grab keyboard\n");
             gtk_widget_destroy (window);
             return NULL;
@@ -174,7 +182,9 @@ passphrase_mbox (const gchar *desc)
     gtk_main();
 
     if (grab_all) {
     gtk_main();
 
     if (grab_all) {
+#ifdef GDK_WINDOWING_X11
         XUngrabServer (GDK_DISPLAY());
         XUngrabServer (GDK_DISPLAY());
+#endif /* GDK_WINDOWING_X11 */
         gdk_pointer_ungrab (GDK_CURRENT_TIME);
         gdk_keyboard_ungrab (GDK_CURRENT_TIME);
         gdk_flush();
         gdk_pointer_ungrab (GDK_CURRENT_TIME);
         gdk_keyboard_ungrab (GDK_CURRENT_TIME);
         gdk_flush();
@@ -183,9 +193,9 @@ passphrase_mbox (const gchar *desc)
     manage_window_focus_out(window, NULL, NULL);
 
     if (pass_ack) {
     manage_window_focus_out(window, NULL, NULL);
 
     if (pass_ack) {
-        the_passphrase = gtk_entry_get_text(GTK_ENTRY(pass_entry));
-        if (the_passphrase) /* Hmmm: Do we really need this? */
-            the_passphrase = g_strdup (the_passphrase);
+        const gchar *entry_text = gtk_entry_get_text(GTK_ENTRY(pass_entry));
+        if (entry_text) /* Hmmm: Do we really need this? */
+            the_passphrase = g_strdup (entry_text);
     }
     gtk_widget_destroy (window);
 
     }
     gtk_widget_destroy (window);
 
@@ -216,11 +226,12 @@ passphrase_deleted(GtkWidget *widget, GdkEventAny *event, gpointer data)
 }
 
 
 }
 
 
-static void 
+static gboolean
 passphrase_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
     if (event && event->keyval == GDK_Escape)
         passphrase_cancel_cb(NULL, NULL);
 passphrase_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
     if (event && event->keyval == GDK_Escape)
         passphrase_cancel_cb(NULL, NULL);
+    return FALSE;
 }
 
 static gint 
 }
 
 static gint 
index 82bc8a0f1c9b61c79dddd4bfddfb03c8321455c2..bfb83976948841ef9eb87c8f74e51aeb157ac0bc 100644 (file)
@@ -660,7 +660,7 @@ gint pine_import_data( PineFile *pineFile, AddressCache *cache ) {
  * no home. Filename should be g_free() when done.
  */
 gchar *pine_find_file( void ) {
  * no home. Filename should be g_free() when done.
  */
 gchar *pine_find_file( void ) {
-       gchar *homedir;
+       const gchar *homedir;
        gchar str[ WORK_BUFLEN ];
        gint len;
        FILE *fp;
        gchar str[ WORK_BUFLEN ];
        gint len;
        FILE *fp;
index 4efabbb032ef28837b435818ccf96c9a2d489afd..464c826740e5c203cd48de30e83d1434149dcbb0 100644 (file)
@@ -10,7 +10,6 @@ image_viewer_la_SOURCES = \
 image_viewer_la_LDFLAGS = \
        -avoid-version -module \
        $(GTK_LIBS) \
 image_viewer_la_LDFLAGS = \
        -avoid-version -module \
        $(GTK_LIBS) \
-       $(GDK_IMLIB_LIBS) \
        $(GDK_PIXBUF_LIBS)
 
 INCLUDES = \
        $(GDK_PIXBUF_LIBS)
 
 INCLUDES = \
@@ -22,6 +21,5 @@ AM_CPPFLAGS = \
        $(ASPELL_CFLAGS) \
        $(GLIB_CFLAGS) \
        $(GTK_CFLAGS) \
        $(ASPELL_CFLAGS) \
        $(GLIB_CFLAGS) \
        $(GTK_CFLAGS) \
-       $(GDK_IMLIB_CFLAGS) \
        $(GDK_PIXBUF_CFLAGS) \
        $(OPENSSL_CFLAGS)
        $(GDK_PIXBUF_CFLAGS) \
        $(OPENSSL_CFLAGS)
index 240be8a43f4690f43b56f1ae93c4632bee0075fc..be1f16e5ca3deda5fe859994d910b9a0d90cdd72 100644 (file)
@@ -82,10 +82,15 @@ static void image_viewer_load_file(ImageViewer *imageviewer, const gchar *imgfil
        gint avail_height;
        gint new_width;
        gint new_height;
        gint avail_height;
        gint new_width;
        gint new_height;
+       GError *error = NULL;
 
        debug_print("image_viewer_show_mimepart\n");
 
 
        debug_print("image_viewer_show_mimepart\n");
 
-       pixbuf = gdk_pixbuf_new_from_file(imgfile);
+       pixbuf = gdk_pixbuf_new_from_file(imgfile, &error);
+       if (error) {
+               g_warning(error->message);
+               g_error_free(error);
+       }
        if (!pixbuf) {
                g_warning("Can't load the image.");     
                return;
        if (!pixbuf) {
                g_warning("Can't load the image.");     
                return;
index acfecba21394cc6dd958d8f1e5cc3a490baa70ff..6dff21694c810a0ec31898f2885f789579337521 100644 (file)
@@ -557,7 +557,7 @@ static void prefs_account_edit_custom_header        (void);
 static gint prefs_account_deleted              (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gpointer        data);
 static gint prefs_account_deleted              (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gpointer        data);
-static void prefs_account_key_pressed          (GtkWidget      *widget,
+static gboolean prefs_account_key_pressed      (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_account_ok                   (void);
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_account_ok                   (void);
@@ -678,7 +678,7 @@ PrefsAccount *prefs_account_open(PrefsAccount *ac_prefs)
        }
 
        manage_window_set_transient(GTK_WINDOW(dialog.window));
        }
 
        manage_window_set_transient(GTK_WINDOW(dialog.window));
-       gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
+       gtk_notebook_set_current_page(GTK_NOTEBOOK(dialog.notebook), 0);
        gtk_widget_grab_focus(dialog.ok_btn);
 
        tmp_ac_prefs = *ac_prefs;
        gtk_widget_grab_focus(dialog.ok_btn);
 
        tmp_ac_prefs = *ac_prefs;
@@ -746,18 +746,18 @@ static void prefs_account_create(void)
 
        /* create dialog */
        prefs_dialog_create(&dialog);
 
        /* create dialog */
        prefs_dialog_create(&dialog);
-       gtk_signal_connect(GTK_OBJECT(dialog.window), "delete_event",
-                          GTK_SIGNAL_FUNC(prefs_account_deleted), NULL);
-       gtk_signal_connect(GTK_OBJECT(dialog.window), "key_press_event",
-                          GTK_SIGNAL_FUNC(prefs_account_key_pressed), NULL);
+       g_signal_connect(G_OBJECT(dialog.window), "delete_event",
+                        G_CALLBACK(prefs_account_deleted), NULL);
+       g_signal_connect(G_OBJECT(dialog.window), "key_press_event",
+                        G_CALLBACK(prefs_account_key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
 
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
 
-       gtk_signal_connect(GTK_OBJECT(dialog.ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_account_ok), NULL);
-       gtk_signal_connect(GTK_OBJECT(dialog.apply_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_account_apply), NULL);
-       gtk_signal_connect(GTK_OBJECT(dialog.cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_account_cancel), NULL);
+       g_signal_connect(G_OBJECT(dialog.ok_btn), "clicked",
+                        G_CALLBACK(prefs_account_ok), NULL);
+       g_signal_connect(G_OBJECT(dialog.apply_btn), "clicked",
+                        G_CALLBACK(prefs_account_apply), NULL);
+       g_signal_connect(G_OBJECT(dialog.cancel_btn), "clicked",
+                        G_CALLBACK(prefs_account_cancel), NULL);
 
        prefs_account_basic_create();
        SET_NOTEBOOK_LABEL(dialog.notebook, _("Basic"), page++);
 
        prefs_account_basic_create();
        SET_NOTEBOOK_LABEL(dialog.notebook, _("Basic"), page++);
@@ -802,9 +802,9 @@ static void prefs_account_fix_size(void)
 
 #define SET_ACTIVATE(menuitem) \
 { \
 
 #define SET_ACTIVATE(menuitem) \
 { \
-       gtk_signal_connect(GTK_OBJECT(menuitem), "activate", \
-                          GTK_SIGNAL_FUNC(prefs_account_protocol_activated), \
-                          NULL); \
+       g_signal_connect(G_OBJECT(menuitem), "activate", \
+                        G_CALLBACK(prefs_account_protocol_activated), \
+                        NULL); \
 }
 
 #define TABLE_YPAD 2
 }
 
 #define TABLE_YPAD 2
@@ -861,7 +861,7 @@ static void prefs_account_basic_create(void)
 
        acname_entry = gtk_entry_new ();
        gtk_widget_show (acname_entry);
 
        acname_entry = gtk_entry_new ();
        gtk_widget_show (acname_entry);
-       gtk_widget_set_usize (acname_entry, DEFAULT_ENTRY_WIDTH, -1);
+       gtk_widget_set_size_request (acname_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_box_pack_start (GTK_BOX (hbox), acname_entry, TRUE, TRUE, 0);
 
        default_chkbtn = gtk_check_button_new_with_label (_("Set as default"));
        gtk_box_pack_start (GTK_BOX (hbox), acname_entry, TRUE, TRUE, 0);
 
        default_chkbtn = gtk_check_button_new_with_label (_("Set as default"));
@@ -1001,14 +1001,14 @@ static void prefs_account_basic_create(void)
 
        uid_entry = gtk_entry_new ();
        gtk_widget_show (uid_entry);
 
        uid_entry = gtk_entry_new ();
        gtk_widget_show (uid_entry);
-       gtk_widget_set_usize (uid_entry, DEFAULT_ENTRY_WIDTH, -1);
+       gtk_widget_set_size_request (uid_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_table_attach (GTK_TABLE (serv_table), uid_entry, 1, 2, 7, 8,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
 
        pass_entry = gtk_entry_new ();
        gtk_widget_show (pass_entry);
        gtk_table_attach (GTK_TABLE (serv_table), uid_entry, 1, 2, 7, 8,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
 
        pass_entry = gtk_entry_new ();
        gtk_widget_show (pass_entry);
-       gtk_widget_set_usize (pass_entry, DEFAULT_ENTRY_WIDTH, -1);
+       gtk_widget_set_size_request (pass_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_table_attach (GTK_TABLE (serv_table), pass_entry, 3, 4, 7, 8,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
        gtk_table_attach (GTK_TABLE (serv_table), pass_entry, 3, 4, 7, 8,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
@@ -1046,9 +1046,9 @@ static void prefs_account_basic_create(void)
        gtk_table_attach (GTK_TABLE (serv_table), mailcmd_chkbtn, 0, 4, 5, 6,
                          GTK_EXPAND | GTK_FILL,
                          0, 0, TABLE_YPAD);
        gtk_table_attach (GTK_TABLE (serv_table), mailcmd_chkbtn, 0, 4, 5, 6,
                          GTK_EXPAND | GTK_FILL,
                          0, 0, TABLE_YPAD);
-       gtk_signal_connect(GTK_OBJECT(mailcmd_chkbtn), "toggled",
-                          GTK_SIGNAL_FUNC(prefs_account_mailcmd_toggled),
-                          NULL);
+       g_signal_connect(G_OBJECT(mailcmd_chkbtn), "toggled",
+                        G_CALLBACK(prefs_account_mailcmd_toggled),
+                        NULL);
 
        mailcmd_label = gtk_label_new (_("command to send mails"));
        gtk_widget_show (mailcmd_label);
 
        mailcmd_label = gtk_label_new (_("command to send mails"));
        gtk_widget_show (mailcmd_label);
@@ -1156,7 +1156,7 @@ static void prefs_account_receive_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 12, -1);
+       gtk_widget_set_size_request (hbox_spc, 12, -1);
 
        leave_time_label = gtk_label_new (_("Remove after"));
        gtk_widget_show (leave_time_label);
 
        leave_time_label = gtk_label_new (_("Remove after"));
        gtk_widget_show (leave_time_label);
@@ -1164,7 +1164,7 @@ static void prefs_account_receive_create(void)
 
        leave_time_entry = gtk_entry_new ();
        gtk_widget_show (leave_time_entry);
 
        leave_time_entry = gtk_entry_new ();
        gtk_widget_show (leave_time_entry);
-       gtk_widget_set_usize (leave_time_entry, 64, -1);
+       gtk_widget_set_size_request (leave_time_entry, 64, -1);
        gtk_box_pack_start (GTK_BOX (hbox1), leave_time_entry, FALSE, FALSE, 0);
 
        leave_time_label = gtk_label_new (_("days"));
        gtk_box_pack_start (GTK_BOX (hbox1), leave_time_entry, FALSE, FALSE, 0);
 
        leave_time_label = gtk_label_new (_("days"));
@@ -1182,7 +1182,7 @@ static void prefs_account_receive_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 12, -1);
+       gtk_widget_set_size_request (hbox_spc, 12, -1);
 
        leave_time_label = gtk_label_new (_("(0 days: remove immediately)"));
        gtk_widget_show (leave_time_label);
 
        leave_time_label = gtk_label_new (_("(0 days: remove immediately)"));
        gtk_widget_show (leave_time_label);
@@ -1201,7 +1201,7 @@ static void prefs_account_receive_create(void)
 
        size_limit_entry = gtk_entry_new ();
        gtk_widget_show (size_limit_entry);
 
        size_limit_entry = gtk_entry_new ();
        gtk_widget_show (size_limit_entry);
-       gtk_widget_set_usize (size_limit_entry, 64, -1);
+       gtk_widget_set_size_request (size_limit_entry, 64, -1);
        gtk_box_pack_start (GTK_BOX (hbox1), size_limit_entry, FALSE, FALSE, 0);
 
        label = gtk_label_new (_("KB"));
        gtk_box_pack_start (GTK_BOX (hbox1), size_limit_entry, FALSE, FALSE, 0);
 
        label = gtk_label_new (_("KB"));
@@ -1222,15 +1222,15 @@ static void prefs_account_receive_create(void)
 
        inbox_entry = gtk_entry_new ();
        gtk_widget_show (inbox_entry);
 
        inbox_entry = gtk_entry_new ();
        gtk_widget_show (inbox_entry);
-       gtk_widget_set_usize (inbox_entry, DEFAULT_ENTRY_WIDTH, -1);
+       gtk_widget_set_size_request (inbox_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_box_pack_start (GTK_BOX (hbox1), inbox_entry, TRUE, TRUE, 0);
 
        inbox_btn = gtk_button_new_with_label (_(" Select... "));
        gtk_widget_show (inbox_btn);
        gtk_box_pack_start (GTK_BOX (hbox1), inbox_btn, FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (hbox1), inbox_entry, TRUE, TRUE, 0);
 
        inbox_btn = gtk_button_new_with_label (_(" Select... "));
        gtk_widget_show (inbox_btn);
        gtk_box_pack_start (GTK_BOX (hbox1), inbox_btn, FALSE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT (inbox_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_account_select_folder_cb),
-                           inbox_entry);
+       g_signal_connect (G_OBJECT (inbox_btn), "clicked",
+                         G_CALLBACK (prefs_account_select_folder_cb),
+                         inbox_entry);
 
        PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
 
 
        PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
 
@@ -1258,7 +1258,7 @@ static void prefs_account_receive_create(void)
        gtk_widget_show (spinbtn_maxarticle);
        gtk_box_pack_start (GTK_BOX (hbox2), spinbtn_maxarticle,
                            FALSE, FALSE, 0);
        gtk_widget_show (spinbtn_maxarticle);
        gtk_box_pack_start (GTK_BOX (hbox2), spinbtn_maxarticle,
                            FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_maxarticle, 64, -1);
+       gtk_widget_set_size_request (spinbtn_maxarticle, 64, -1);
        gtk_spin_button_set_numeric
                (GTK_SPIN_BUTTON (spinbtn_maxarticle), TRUE);
 
        gtk_spin_button_set_numeric
                (GTK_SPIN_BUTTON (spinbtn_maxarticle), TRUE);
 
@@ -1373,9 +1373,9 @@ static void prefs_account_send_create(void)
        gtk_widget_show (customhdr_edit_btn);
        gtk_box_pack_start (GTK_BOX (hbox), customhdr_edit_btn,
                            FALSE, FALSE, 0);
        gtk_widget_show (customhdr_edit_btn);
        gtk_box_pack_start (GTK_BOX (hbox), customhdr_edit_btn,
                            FALSE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT (customhdr_edit_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_account_edit_custom_header),
-                           NULL);
+       g_signal_connect (G_OBJECT (customhdr_edit_btn), "clicked",
+                         G_CALLBACK (prefs_account_edit_custom_header),
+                         NULL);
 
        SET_TOGGLE_SENSITIVITY (customhdr_chkbtn, customhdr_edit_btn);
 
 
        SET_TOGGLE_SENSITIVITY (customhdr_chkbtn, customhdr_edit_btn);
 
@@ -1400,7 +1400,7 @@ static void prefs_account_send_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 12, -1);
+       gtk_widget_set_size_request (hbox_spc, 12, -1);
 
        label = gtk_label_new (_("Authentication method"));
        gtk_widget_show (label);
 
        label = gtk_label_new (_("Authentication method"));
        gtk_widget_show (label);
@@ -1429,7 +1429,7 @@ static void prefs_account_send_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 12, -1);
+       gtk_widget_set_size_request (hbox_spc, 12, -1);
 
        label = gtk_label_new (_("User ID"));
        gtk_widget_show (label);
 
        label = gtk_label_new (_("User ID"));
        gtk_widget_show (label);
@@ -1437,7 +1437,7 @@ static void prefs_account_send_create(void)
 
        smtp_uid_entry = gtk_entry_new ();
        gtk_widget_show (smtp_uid_entry);
 
        smtp_uid_entry = gtk_entry_new ();
        gtk_widget_show (smtp_uid_entry);
-       gtk_widget_set_usize (smtp_uid_entry, DEFAULT_ENTRY_WIDTH, -1);
+       gtk_widget_set_size_request (smtp_uid_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_box_pack_start (GTK_BOX (hbox), smtp_uid_entry, TRUE, TRUE, 0);
 
        label = gtk_label_new (_("Password"));
        gtk_box_pack_start (GTK_BOX (hbox), smtp_uid_entry, TRUE, TRUE, 0);
 
        label = gtk_label_new (_("Password"));
@@ -1446,7 +1446,7 @@ static void prefs_account_send_create(void)
 
        smtp_pass_entry = gtk_entry_new ();
        gtk_widget_show (smtp_pass_entry);
 
        smtp_pass_entry = gtk_entry_new ();
        gtk_widget_show (smtp_pass_entry);
-       gtk_widget_set_usize (smtp_pass_entry, DEFAULT_ENTRY_WIDTH, -1);
+       gtk_widget_set_size_request (smtp_pass_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_box_pack_start (GTK_BOX (hbox), smtp_pass_entry, TRUE, TRUE, 0);
        gtk_entry_set_visibility (GTK_ENTRY (smtp_pass_entry), FALSE);
 
        gtk_box_pack_start (GTK_BOX (hbox), smtp_pass_entry, TRUE, TRUE, 0);
        gtk_entry_set_visibility (GTK_ENTRY (smtp_pass_entry), FALSE);
 
@@ -1459,7 +1459,7 @@ static void prefs_account_send_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 12, -1);
+       gtk_widget_set_size_request (hbox_spc, 12, -1);
 
        label = gtk_label_new
                (_("If you leave these entries empty, the same\n"
 
        label = gtk_label_new
                (_("If you leave these entries empty, the same\n"
@@ -1473,9 +1473,9 @@ static void prefs_account_send_create(void)
        PACK_CHECK_BUTTON (vbox3, pop_bfr_smtp_chkbtn,
                _("Authenticate with POP3 before sending"));
        
        PACK_CHECK_BUTTON (vbox3, pop_bfr_smtp_chkbtn,
                _("Authenticate with POP3 before sending"));
        
-       gtk_signal_connect (GTK_OBJECT (pop_bfr_smtp_chkbtn), "clicked",
-                           GTK_SIGNAL_FUNC (pop_bfr_smtp_tm_set_sens),
-                           NULL);
+       g_signal_connect (G_OBJECT (pop_bfr_smtp_chkbtn), "clicked",
+                         G_CALLBACK (pop_bfr_smtp_tm_set_sens),
+                         NULL);
 
        hbox = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox);
 
        hbox = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox);
@@ -1484,7 +1484,7 @@ static void prefs_account_send_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 12, -1);
+       gtk_widget_set_size_request (hbox_spc, 12, -1);
 
        label = gtk_label_new(_("POP authentication timeout: "));
        gtk_widget_show (label);
 
        label = gtk_label_new(_("POP authentication timeout: "));
        gtk_widget_show (label);
@@ -1492,7 +1492,7 @@ static void prefs_account_send_create(void)
 
        pop_bfr_smtp_tm_entry = gtk_entry_new ();
        gtk_widget_show (pop_bfr_smtp_tm_entry);
 
        pop_bfr_smtp_tm_entry = gtk_entry_new ();
        gtk_widget_show (pop_bfr_smtp_tm_entry);
-       gtk_widget_set_usize (pop_bfr_smtp_tm_entry, 30, -1);
+       gtk_widget_set_size_request (pop_bfr_smtp_tm_entry, 30, -1);
        gtk_box_pack_start (GTK_BOX (hbox), pop_bfr_smtp_tm_entry, FALSE, FALSE, 0);
 
        label = gtk_label_new(_("minutes"));
        gtk_box_pack_start (GTK_BOX (hbox), pop_bfr_smtp_tm_entry, FALSE, FALSE, 0);
 
        label = gtk_label_new(_("minutes"));
@@ -1563,7 +1563,7 @@ static void prefs_account_compose_create(void)
        gtk_widget_show (entry_sigsep);
        gtk_box_pack_start (GTK_BOX (hbox1), entry_sigsep, FALSE, FALSE, 0);
 
        gtk_widget_show (entry_sigsep);
        gtk_box_pack_start (GTK_BOX (hbox1), entry_sigsep, FALSE, FALSE, 0);
 
-       gtk_widget_set_usize (entry_sigsep, 64, -1);
+       gtk_widget_set_size_request (entry_sigsep, 64, -1);
 
        sig_hbox = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (sig_hbox);
 
        sig_hbox = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (sig_hbox);
@@ -1573,16 +1573,18 @@ static void prefs_account_compose_create(void)
        gtk_widget_show (sigfile_radiobtn);
        gtk_box_pack_start (GTK_BOX (sig_hbox), sigfile_radiobtn,
                            FALSE, FALSE, 0);
        gtk_widget_show (sigfile_radiobtn);
        gtk_box_pack_start (GTK_BOX (sig_hbox), sigfile_radiobtn,
                            FALSE, FALSE, 0);
-       gtk_object_set_user_data (GTK_OBJECT (sigfile_radiobtn),
-                                 GINT_TO_POINTER (SIG_FILE));
+       g_object_set_data (G_OBJECT (sigfile_radiobtn),
+                          MENU_VAL_ID,
+                          GINT_TO_POINTER (SIG_FILE));
 
        sigcmd_radiobtn = gtk_radio_button_new_with_label_from_widget
                (GTK_RADIO_BUTTON(sigfile_radiobtn), _("Command output"));
        gtk_widget_show (sigcmd_radiobtn);
        gtk_box_pack_start (GTK_BOX (sig_hbox), sigcmd_radiobtn,
                            FALSE, FALSE, 0);
 
        sigcmd_radiobtn = gtk_radio_button_new_with_label_from_widget
                (GTK_RADIO_BUTTON(sigfile_radiobtn), _("Command output"));
        gtk_widget_show (sigcmd_radiobtn);
        gtk_box_pack_start (GTK_BOX (sig_hbox), sigcmd_radiobtn,
                            FALSE, FALSE, 0);
-       gtk_object_set_user_data (GTK_OBJECT (sigcmd_radiobtn),
-                                 GINT_TO_POINTER (SIG_COMMAND));
+       g_object_set_data (G_OBJECT (sigcmd_radiobtn),
+                          MENU_VAL_ID,
+                          GINT_TO_POINTER (SIG_COMMAND));
 
        hbox2 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox2);
 
        hbox2 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox2);
@@ -1712,8 +1714,8 @@ static void prefs_account_privacy_create(void)
                            FALSE, FALSE, 0);
        gtk_object_set_user_data (GTK_OBJECT (gnupg_inline_radiobtn),
                                  GINT_TO_POINTER (GNUPG_MODE_INLINE));
                            FALSE, FALSE, 0);
        gtk_object_set_user_data (GTK_OBJECT (gnupg_inline_radiobtn),
                                  GINT_TO_POINTER (GNUPG_MODE_INLINE));
-       gtk_signal_connect (GTK_OBJECT (gnupg_inline_radiobtn), "clicked",
-                           prefs_account_gnupg_inline_warning, NULL);
+       g_signal_connect (G_OBJECT (gnupg_inline_radiobtn), "clicked",
+                         prefs_account_gnupg_inline_warning, NULL);
 
 
        PACK_FRAME (vbox1, frame1, _("Sign key"));
 
 
        PACK_FRAME (vbox1, frame1, _("Sign key"));
@@ -1728,8 +1730,9 @@ static void prefs_account_privacy_create(void)
        gtk_widget_show (defaultkey_radiobtn);
        gtk_box_pack_start (GTK_BOX (vbox2), defaultkey_radiobtn,
                            FALSE, FALSE, 0);
        gtk_widget_show (defaultkey_radiobtn);
        gtk_box_pack_start (GTK_BOX (vbox2), defaultkey_radiobtn,
                            FALSE, FALSE, 0);
-       gtk_object_set_user_data (GTK_OBJECT (defaultkey_radiobtn),
-                                 GINT_TO_POINTER (SIGN_KEY_DEFAULT));
+       g_object_set_data (G_OBJECT (defaultkey_radiobtn),
+                          MENU_VAL_ID,
+                          GINT_TO_POINTER (SIGN_KEY_DEFAULT));
 
        emailkey_radiobtn = gtk_radio_button_new_with_label_from_widget
                (GTK_RADIO_BUTTON (defaultkey_radiobtn),
 
        emailkey_radiobtn = gtk_radio_button_new_with_label_from_widget
                (GTK_RADIO_BUTTON (defaultkey_radiobtn),
@@ -1737,8 +1740,9 @@ static void prefs_account_privacy_create(void)
        gtk_widget_show (emailkey_radiobtn);
        gtk_box_pack_start (GTK_BOX (vbox2), emailkey_radiobtn,
                            FALSE, FALSE, 0);
        gtk_widget_show (emailkey_radiobtn);
        gtk_box_pack_start (GTK_BOX (vbox2), emailkey_radiobtn,
                            FALSE, FALSE, 0);
-       gtk_object_set_user_data (GTK_OBJECT (emailkey_radiobtn),
-                                 GINT_TO_POINTER (SIGN_KEY_BY_FROM));
+       g_object_set_data (G_OBJECT (emailkey_radiobtn),
+                          MENU_VAL_ID,
+                          GINT_TO_POINTER (SIGN_KEY_BY_FROM));
 
        customkey_radiobtn = gtk_radio_button_new_with_label_from_widget
                (GTK_RADIO_BUTTON (defaultkey_radiobtn),
 
        customkey_radiobtn = gtk_radio_button_new_with_label_from_widget
                (GTK_RADIO_BUTTON (defaultkey_radiobtn),
@@ -1746,8 +1750,9 @@ static void prefs_account_privacy_create(void)
        gtk_widget_show (customkey_radiobtn);
        gtk_box_pack_start (GTK_BOX (vbox2), customkey_radiobtn,
                            FALSE, FALSE, 0);
        gtk_widget_show (customkey_radiobtn);
        gtk_box_pack_start (GTK_BOX (vbox2), customkey_radiobtn,
                            FALSE, FALSE, 0);
-       gtk_object_set_user_data (GTK_OBJECT (customkey_radiobtn),
-                                 GINT_TO_POINTER (SIGN_KEY_CUSTOM));
+       g_object_set_data (G_OBJECT (customkey_radiobtn),
+                          MENU_VAL_ID,
+                          GINT_TO_POINTER (SIGN_KEY_CUSTOM));
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
@@ -1756,7 +1761,7 @@ static void prefs_account_privacy_create(void)
        label = gtk_label_new ("");
        gtk_widget_show (label);
        gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
        label = gtk_label_new ("");
        gtk_widget_show (label);
        gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
-       gtk_widget_set_usize (label, 16, -1);
+       gtk_widget_set_size_request (label, 16, -1);
 
        label = gtk_label_new (_("User or key ID:"));
        gtk_widget_show (label);
 
        label = gtk_label_new (_("User or key ID:"));
        gtk_widget_show (label);
@@ -1788,8 +1793,9 @@ static void prefs_account_privacy_create(void)
                (GTK_RADIO_BUTTON (btn_p), label);                      \
        gtk_widget_show (btn);                                          \
        gtk_box_pack_start (GTK_BOX (box), btn, FALSE, FALSE, 0);       \
                (GTK_RADIO_BUTTON (btn_p), label);                      \
        gtk_widget_show (btn);                                          \
        gtk_box_pack_start (GTK_BOX (box), btn, FALSE, FALSE, 0);       \
-       gtk_object_set_user_data (GTK_OBJECT (btn),                     \
-                                 GINT_TO_POINTER (data));              \
+       g_object_set_data (G_OBJECT (btn),                              \
+                          MENU_VAL_ID,                                 \
+                          GINT_TO_POINTER (data));                     \
 }
 
 #define CREATE_RADIO_BUTTONS(box,                                      \
 }
 
 #define CREATE_RADIO_BUTTONS(box,                                      \
@@ -1800,8 +1806,9 @@ static void prefs_account_privacy_create(void)
        btn1 = gtk_radio_button_new_with_label(NULL, btn1_label);       \
        gtk_widget_show (btn1);                                         \
        gtk_box_pack_start (GTK_BOX (box), btn1, FALSE, FALSE, 0);      \
        btn1 = gtk_radio_button_new_with_label(NULL, btn1_label);       \
        gtk_widget_show (btn1);                                         \
        gtk_box_pack_start (GTK_BOX (box), btn1, FALSE, FALSE, 0);      \
-       gtk_object_set_user_data (GTK_OBJECT (btn1),                    \
-                                 GINT_TO_POINTER (btn1_data));         \
+       g_object_set_data (G_OBJECT (btn1),                             \
+                          MENU_VAL_ID,                                 \
+                          GINT_TO_POINTER (btn1_data));                \
                                                                        \
        CREATE_RADIO_BUTTON(box, btn2, btn1, btn2_label, btn2_data);    \
        CREATE_RADIO_BUTTON(box, btn3, btn1, btn3_label, btn3_data);    \
                                                                        \
        CREATE_RADIO_BUTTON(box, btn2, btn1, btn2_label, btn2_data);    \
        CREATE_RADIO_BUTTON(box, btn3, btn1, btn3_label, btn3_data);    \
@@ -1890,8 +1897,9 @@ static void prefs_account_ssl_create(void)
        gtk_widget_show (nntp_nossl_radiobtn);
        gtk_box_pack_start (GTK_BOX (vbox4), nntp_nossl_radiobtn,
                            FALSE, FALSE, 0);
        gtk_widget_show (nntp_nossl_radiobtn);
        gtk_box_pack_start (GTK_BOX (vbox4), nntp_nossl_radiobtn,
                            FALSE, FALSE, 0);
-       gtk_object_set_user_data (GTK_OBJECT (nntp_nossl_radiobtn),
-                                 GINT_TO_POINTER (SSL_NONE));
+       g_object_set_data (G_OBJECT (nntp_nossl_radiobtn),
+                          MENU_VAL_ID,
+                          GINT_TO_POINTER (SSL_NONE));
 
        CREATE_RADIO_BUTTON(vbox4, nntp_ssltunnel_radiobtn, nntp_nossl_radiobtn,
                            _("Use SSL for NNTP connection"), SSL_TUNNEL);
 
        CREATE_RADIO_BUTTON(vbox4, nntp_ssltunnel_radiobtn, nntp_nossl_radiobtn,
                            _("Use SSL for NNTP connection"), SSL_TUNNEL);
@@ -1927,7 +1935,7 @@ static void prefs_account_ssl_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 16, -1);
+       gtk_widget_set_size_request (hbox_spc, 16, -1);
 
        label = gtk_label_new
                (_("(Turn this off if you have SSL connection problems)"));
 
        label = gtk_label_new
                (_("(Turn this off if you have SSL connection problems)"));
@@ -2038,10 +2046,11 @@ static void prefs_account_advanced_create(void)
 
 #define PACK_PORT_ENTRY(box, entry) \
        { \
 
 #define PACK_PORT_ENTRY(box, entry) \
        { \
-       entry = gtk_entry_new_with_max_length (5); \
+       entry = gtk_entry_new (); \
+       gtk_entry_set_max_length  (GTK_ENTRY(entry), 5); \
        gtk_widget_show (entry); \
        gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0); \
        gtk_widget_show (entry); \
        gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0); \
-       gtk_widget_set_usize (entry, 64, -1); \
+       gtk_widget_set_size_request (entry, 64, -1); \
        }
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        }
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
@@ -2096,9 +2105,9 @@ static void prefs_account_advanced_create(void)
        PACK_HBOX (hbox1);
        PACK_CHECK_BUTTON (hbox1, checkbtn_crosspost, 
                           _("Mark cross-posted messages as read and color:"));
        PACK_HBOX (hbox1);
        PACK_CHECK_BUTTON (hbox1, checkbtn_crosspost, 
                           _("Mark cross-posted messages as read and color:"));
-       gtk_signal_connect (GTK_OBJECT (checkbtn_crosspost), "toggled",
-                                       GTK_SIGNAL_FUNC (crosspost_color_toggled),
-                                       NULL);
+       g_signal_connect (G_OBJECT (checkbtn_crosspost), "toggled",
+                         G_CALLBACK (crosspost_color_toggled),
+                         NULL);
 
        colormenu_crosspost = gtk_option_menu_new();
        gtk_widget_show (colormenu_crosspost);
 
        colormenu_crosspost = gtk_option_menu_new();
        gtk_widget_show (colormenu_crosspost);
@@ -2154,9 +2163,9 @@ static void prefs_account_advanced_create(void)
        gtk_widget_show (button);                                       \
        gtk_table_attach (GTK_TABLE (table), button,                    \
                          2, 3, n, n + 1, GTK_FILL, 0, 0, 0);           \
        gtk_widget_show (button);                                       \
        gtk_table_attach (GTK_TABLE (table), button,                    \
                          2, 3, n, n + 1, GTK_FILL, 0, 0, 0);           \
-       gtk_signal_connect                                              \
-               (GTK_OBJECT (button), "clicked",                        \
-                GTK_SIGNAL_FUNC (prefs_account_select_folder_cb),      \
+       g_signal_connect                                                \
+               (G_OBJECT (button), "clicked",                  \
+                G_CALLBACK (prefs_account_select_folder_cb),           \
                 entry);                                                \
                                                                        \
        SET_TOGGLE_SENSITIVITY (chkbtn, entry);                         \
                 entry);                                                \
                                                                        \
        SET_TOGGLE_SENSITIVITY (chkbtn, entry);                         \
@@ -2206,11 +2215,12 @@ static gint prefs_account_deleted(GtkWidget *widget, GdkEventAny *event,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void prefs_account_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                                     gpointer data)
+static gboolean prefs_account_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                         gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                prefs_account_cancel();
 {
        if (event && event->keyval == GDK_Escape)
                prefs_account_cancel();
+       return FALSE;
 }
 
 static void prefs_account_ok(void)
 }
 
 static void prefs_account_ok(void)
@@ -2228,7 +2238,7 @@ static gint prefs_account_apply(void)
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(basic.protocol_optmenu));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        protocol = GPOINTER_TO_INT
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(basic.protocol_optmenu));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        protocol = GPOINTER_TO_INT
-               (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+               (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
 
        if (*gtk_entry_get_text(GTK_ENTRY(basic.acname_entry)) == '\0') {
                alertpanel_error(_("Account name is not entered."));
 
        if (*gtk_entry_get_text(GTK_ENTRY(basic.acname_entry)) == '\0') {
                alertpanel_error(_("Account name is not entered."));
@@ -2318,12 +2328,12 @@ static void prefs_account_enum_set_data_from_radiobtn(PrefParam *pparam)
        GSList *group;
 
        radiobtn = GTK_RADIO_BUTTON (*pparam->widget);
        GSList *group;
 
        radiobtn = GTK_RADIO_BUTTON (*pparam->widget);
-       group = gtk_radio_button_group (radiobtn);
+       group = gtk_radio_button_get_group (radiobtn);
        while (group != NULL) {
                GtkToggleButton *btn = GTK_TOGGLE_BUTTON (group->data);
                if (gtk_toggle_button_get_active (btn)) {
                        *((gint *)pparam->data) = GPOINTER_TO_INT
        while (group != NULL) {
                GtkToggleButton *btn = GTK_TOGGLE_BUTTON (group->data);
                if (gtk_toggle_button_get_active (btn)) {
                        *((gint *)pparam->data) = GPOINTER_TO_INT
-                               (gtk_object_get_user_data (GTK_OBJECT (btn)));
+                               (g_object_get_data (G_OBJECT (btn), MENU_VAL_ID));
                        break;
                }
                group = group->next;
                        break;
                }
                group = group->next;
@@ -2338,10 +2348,10 @@ static void prefs_account_enum_set_radiobtn(PrefParam *pparam)
 
        data = GINT_TO_POINTER (*((gint *)pparam->data));
        radiobtn = GTK_RADIO_BUTTON (*pparam->widget);
 
        data = GINT_TO_POINTER (*((gint *)pparam->data));
        radiobtn = GTK_RADIO_BUTTON (*pparam->widget);
-       group = gtk_radio_button_group (radiobtn);
+       group = gtk_radio_button_get_group (radiobtn);
        while (group != NULL) {
                GtkToggleButton *btn = GTK_TOGGLE_BUTTON (group->data);
        while (group != NULL) {
                GtkToggleButton *btn = GTK_TOGGLE_BUTTON (group->data);
-               gpointer data1 = gtk_object_get_user_data (GTK_OBJECT (btn));
+               gpointer data1 = g_object_get_data (G_OBJECT (btn), MENU_VAL_ID);
                if (data1 == data) {
                        gtk_toggle_button_set_active (btn, TRUE);
                        break;
                if (data1 == data) {
                        gtk_toggle_button_set_active (btn, TRUE);
                        break;
@@ -2370,7 +2380,7 @@ static void prefs_account_protocol_set_data_from_optmenu(PrefParam *pparam)
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        *((RecvProtocol *)pparam->data) = GPOINTER_TO_INT
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        *((RecvProtocol *)pparam->data) = GPOINTER_TO_INT
-               (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+               (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
 }
 
 static void prefs_account_protocol_set_optmenu(PrefParam *pparam)
 }
 
 static void prefs_account_protocol_set_optmenu(PrefParam *pparam)
@@ -2461,7 +2471,7 @@ static void prefs_account_smtp_auth_type_set_data_from_optmenu(PrefParam *pparam
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        *((RecvProtocol *)pparam->data) = GPOINTER_TO_INT
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        *((RecvProtocol *)pparam->data) = GPOINTER_TO_INT
-               (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+               (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
 }
 
 static void prefs_account_smtp_auth_type_set_optmenu(PrefParam *pparam)
 }
 
 static void prefs_account_smtp_auth_type_set_optmenu(PrefParam *pparam)
@@ -2496,7 +2506,7 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
        RecvProtocol protocol;
 
        protocol = GPOINTER_TO_INT
        RecvProtocol protocol;
 
        protocol = GPOINTER_TO_INT
-               (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+               (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
 
        switch(protocol) {
        case A_NNTP:
 
        switch(protocol) {
        case A_NNTP:
index e9768148ab142c818f2fe7b6f4fcdc034d540241..ea45c6c35c21cf3bef327f7d92e0243e7ff89023 100644 (file)
@@ -84,9 +84,9 @@ static void prefs_actions_row_move    (GtkCList       *clist,
 static gint prefs_actions_deleted      (GtkWidget      *widget,
                                         GdkEventAny    *event,
                                         gpointer       *data);
 static gint prefs_actions_deleted      (GtkWidget      *widget,
                                         GdkEventAny    *event,
                                         gpointer       *data);
-static void prefs_actions_key_pressed  (GtkWidget      *widget,
-                                        GdkEventKey    *event,
-                                        gpointer        data);
+static gboolean prefs_actions_key_pressed(GtkWidget    *widget,
+                                         GdkEventKey   *event,
+                                         gpointer       data);
 static void prefs_actions_cancel       (GtkWidget      *w,
                                         gpointer        data);
 static void prefs_actions_ok           (GtkWidget      *w,
 static void prefs_actions_cancel       (GtkWidget      *w,
                                         gpointer        data);
 static void prefs_actions_ok           (GtkWidget      *w,
@@ -146,10 +146,10 @@ static void prefs_actions_create(MainWindow *mainwin)
 
        debug_print("Creating actions configuration window...\n");
 
 
        debug_print("Creating actions configuration window...\n");
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 
        gtk_container_set_border_width(GTK_CONTAINER (window), 8);
 
        gtk_container_set_border_width(GTK_CONTAINER (window), 8);
-       gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+       gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
        gtk_window_set_default_size(GTK_WINDOW(window), 400, -1);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
        gtk_window_set_default_size(GTK_WINDOW(window), 400, -1);
@@ -165,15 +165,15 @@ static void prefs_actions_create(MainWindow *mainwin)
        gtk_widget_grab_default(ok_btn);
 
        gtk_window_set_title(GTK_WINDOW(window), _("Actions configuration"));
        gtk_widget_grab_default(ok_btn);
 
        gtk_window_set_title(GTK_WINDOW(window), _("Actions configuration"));
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(prefs_actions_deleted), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(prefs_actions_key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(prefs_actions_deleted), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(prefs_actions_key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_actions_ok), mainwin);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_actions_cancel), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(prefs_actions_ok), mainwin);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(prefs_actions_cancel), NULL);
 
        vbox1 = gtk_vbox_new(FALSE, 8);
        gtk_widget_show(vbox1);
 
        vbox1 = gtk_vbox_new(FALSE, 8);
        gtk_widget_show(vbox1);
@@ -212,7 +212,7 @@ static void prefs_actions_create(MainWindow *mainwin)
        arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_widget_show(arrow);
        gtk_box_pack_start(GTK_BOX(reg_hbox), arrow, FALSE, FALSE, 0);
        arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_widget_show(arrow);
        gtk_box_pack_start(GTK_BOX(reg_hbox), arrow, FALSE, FALSE, 0);
-       gtk_widget_set_usize(arrow, -1, 16);
+       gtk_widget_set_size_request(arrow, -1, 16);
 
        btn_hbox = gtk_hbox_new(TRUE, 4);
        gtk_widget_show(btn_hbox);
 
        btn_hbox = gtk_hbox_new(TRUE, 4);
        gtk_widget_show(btn_hbox);
@@ -221,27 +221,27 @@ static void prefs_actions_create(MainWindow *mainwin)
        reg_btn = gtk_button_new_with_label(_("Add"));
        gtk_widget_show(reg_btn);
        gtk_box_pack_start(GTK_BOX(btn_hbox), reg_btn, FALSE, TRUE, 0);
        reg_btn = gtk_button_new_with_label(_("Add"));
        gtk_widget_show(reg_btn);
        gtk_box_pack_start(GTK_BOX(btn_hbox), reg_btn, FALSE, TRUE, 0);
-       gtk_signal_connect(GTK_OBJECT(reg_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_actions_register_cb), NULL);
+       g_signal_connect(G_OBJECT(reg_btn), "clicked",
+                        G_CALLBACK(prefs_actions_register_cb), NULL);
 
        subst_btn = gtk_button_new_with_label(_(" Replace "));
        gtk_widget_show(subst_btn);
        gtk_box_pack_start(GTK_BOX(btn_hbox), subst_btn, FALSE, TRUE, 0);
 
        subst_btn = gtk_button_new_with_label(_(" Replace "));
        gtk_widget_show(subst_btn);
        gtk_box_pack_start(GTK_BOX(btn_hbox), subst_btn, FALSE, TRUE, 0);
-       gtk_signal_connect(GTK_OBJECT(subst_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_actions_substitute_cb),
-                          NULL);
+       g_signal_connect(G_OBJECT(subst_btn), "clicked",
+                        G_CALLBACK(prefs_actions_substitute_cb),
+                        NULL);
 
        del_btn = gtk_button_new_with_label(_("Delete"));
        gtk_widget_show(del_btn);
        gtk_box_pack_start(GTK_BOX(btn_hbox), del_btn, FALSE, TRUE, 0);
 
        del_btn = gtk_button_new_with_label(_("Delete"));
        gtk_widget_show(del_btn);
        gtk_box_pack_start(GTK_BOX(btn_hbox), del_btn, FALSE, TRUE, 0);
-       gtk_signal_connect(GTK_OBJECT(del_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_actions_delete_cb), NULL);
+       g_signal_connect(G_OBJECT(del_btn), "clicked",
+                        G_CALLBACK(prefs_actions_delete_cb), NULL);
 
        help_button = gtk_button_new_with_label(_(" Syntax help "));
        gtk_widget_show(help_button);
        gtk_box_pack_end(GTK_BOX(reg_hbox), help_button, FALSE, FALSE, 0);
 
        help_button = gtk_button_new_with_label(_(" Syntax help "));
        gtk_widget_show(help_button);
        gtk_box_pack_end(GTK_BOX(reg_hbox), help_button, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_actions_help_cb), NULL);
+       g_signal_connect(G_OBJECT(help_button), "clicked",
+                        G_CALLBACK(prefs_actions_help_cb), NULL);
 
        cond_hbox = gtk_hbox_new(FALSE, 8);
        gtk_widget_show(cond_hbox);
 
        cond_hbox = gtk_hbox_new(FALSE, 8);
        gtk_widget_show(cond_hbox);
@@ -249,7 +249,7 @@ static void prefs_actions_create(MainWindow *mainwin)
 
        cond_scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_widget_show(cond_scrolledwin);
 
        cond_scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_widget_show(cond_scrolledwin);
-       gtk_widget_set_usize(cond_scrolledwin, -1, 150);
+       gtk_widget_set_size_request(cond_scrolledwin, -1, 150);
        gtk_box_pack_start(GTK_BOX(cond_hbox), cond_scrolledwin,
                           TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (cond_scrolledwin),
        gtk_box_pack_start(GTK_BOX(cond_hbox), cond_scrolledwin,
                           TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (cond_scrolledwin),
@@ -265,11 +265,11 @@ static void prefs_actions_create(MainWindow *mainwin)
                                     GTK_SELECTION_BROWSE);
        GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(cond_clist)->column[0].button,
                               GTK_CAN_FOCUS);
                                     GTK_SELECTION_BROWSE);
        GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(cond_clist)->column[0].button,
                               GTK_CAN_FOCUS);
-       gtk_signal_connect(GTK_OBJECT(cond_clist), "select_row",
-                          GTK_SIGNAL_FUNC(prefs_actions_select), NULL);
-       gtk_signal_connect_after(GTK_OBJECT(cond_clist), "row_move",
-                                GTK_SIGNAL_FUNC(prefs_actions_row_move),
-                                NULL);
+       g_signal_connect(G_OBJECT(cond_clist), "select_row",
+                        G_CALLBACK(prefs_actions_select), NULL);
+       g_signal_connect_after(G_OBJECT(cond_clist), "row_move",
+                              G_CALLBACK(prefs_actions_row_move),
+                              NULL);
 
        btn_vbox = gtk_vbox_new(FALSE, 8);
        gtk_widget_show(btn_vbox);
 
        btn_vbox = gtk_vbox_new(FALSE, 8);
        gtk_widget_show(btn_vbox);
@@ -278,14 +278,14 @@ static void prefs_actions_create(MainWindow *mainwin)
        up_btn = gtk_button_new_with_label(_("Up"));
        gtk_widget_show(up_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox), up_btn, FALSE, FALSE, 0);
        up_btn = gtk_button_new_with_label(_("Up"));
        gtk_widget_show(up_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox), up_btn, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(up_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_actions_up), NULL);
+       g_signal_connect(G_OBJECT(up_btn), "clicked",
+                        G_CALLBACK(prefs_actions_up), NULL);
 
        down_btn = gtk_button_new_with_label(_("Down"));
        gtk_widget_show(down_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox), down_btn, FALSE, FALSE, 0);
 
        down_btn = gtk_button_new_with_label(_("Down"));
        gtk_widget_show(down_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox), down_btn, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(down_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_actions_down), NULL);
+       g_signal_connect(G_OBJECT(down_btn), "clicked",
+                        G_CALLBACK(prefs_actions_down), NULL);
 
        gtk_widget_show(window);
 
 
        gtk_widget_show(window);
 
@@ -324,13 +324,25 @@ void prefs_actions_read_config(void)
        }
 
        while (fgets(buf, sizeof(buf), fp) != NULL) {
        }
 
        while (fgets(buf, sizeof(buf), fp) != NULL) {
-               g_strchomp(buf);
-               act = strstr(buf, ": ");
+               const gchar *src_codeset = conv_get_current_charset_str();
+               const gchar *dest_codeset = CS_UTF_8;
+               gchar *tmp;
+
+               tmp = conv_codeset_strdup(buf, src_codeset, dest_codeset);
+               if (!tmp) {
+                       g_warning("Faild to convert character set of action configuration\n");
+                       tmp = g_strdup(buf);
+               }
+
+               g_strchomp(tmp);
+               act = strstr(tmp, ": ");
                if (act && act[2] && 
                    action_get_type(&act[2]) != ACTION_ERROR)
                        prefs_common.actions_list =
                                g_slist_append(prefs_common.actions_list,
                if (act && act[2] && 
                    action_get_type(&act[2]) != ACTION_ERROR)
                        prefs_common.actions_list =
                                g_slist_append(prefs_common.actions_list,
-                                              g_strdup(buf));
+                                              tmp);
+               else
+                       g_free(tmp);
        }
        fclose(fp);
 }
        }
        fclose(fp);
 }
@@ -351,7 +363,17 @@ void prefs_actions_write_config(void)
        }
 
        for (cur = prefs_common.actions_list; cur != NULL; cur = cur->next) {
        }
 
        for (cur = prefs_common.actions_list; cur != NULL; cur = cur->next) {
-               gchar *act = (gchar *)cur->data;
+               gchar *tmp = (gchar *)cur->data;
+               const gchar *src_codeset = CS_UTF_8;
+               const gchar *dest_codeset = conv_get_current_charset_str();
+               gchar *act;
+
+               act = conv_codeset_strdup(tmp, src_codeset, dest_codeset);
+               if (!act) {
+                       g_warning("Faild to convert character set of action configuration\n");
+                       act = g_strdup(act);
+               }
+
                if (fputs(act, pfile->fp) == EOF ||
                    fputc('\n', pfile->fp) == EOF) {
                        FILE_OP_ERROR(rcpath, "fputs || fputc");
                if (fputs(act, pfile->fp) == EOF ||
                    fputc('\n', pfile->fp) == EOF) {
                        FILE_OP_ERROR(rcpath, "fputs || fputc");
@@ -359,6 +381,7 @@ void prefs_actions_write_config(void)
                        g_free(rcpath);
                        return;
                }
                        g_free(rcpath);
                        return;
                }
+               g_free(act);
        }
        
        g_free(rcpath);
        }
        
        g_free(rcpath);
@@ -416,7 +439,7 @@ static void prefs_actions_set_list(void)
 static gint prefs_actions_clist_set_row(gint row)
 {
        GtkCList *clist = GTK_CLIST(actions.actions_clist);
 static gint prefs_actions_clist_set_row(gint row)
 {
        GtkCList *clist = GTK_CLIST(actions.actions_clist);
-       gchar *entry_text;
+       const gchar *entry_text;
        gint len;
        gchar action[PREFSBUFSIZE];
        gchar *buf[1];
        gint len;
        gchar action[PREFSBUFSIZE];
        gchar *buf[1];
@@ -603,11 +626,12 @@ static gint prefs_actions_deleted(GtkWidget *widget, GdkEventAny *event,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void prefs_actions_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                                     gpointer data)
+static gboolean prefs_actions_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                         gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                prefs_actions_cancel(widget, data);
 {
        if (event && event->keyval == GDK_Escape)
                prefs_actions_cancel(widget, data);
+       return FALSE;
 }
 
 static void prefs_actions_cancel(GtkWidget *w, gpointer data)
 }
 
 static void prefs_actions_cancel(GtkWidget *w, gpointer data)
index 8a88a796d753243866d90037c99e0dfeec730325..c5534c9e6f7fc7a533ee11c1a783d005f816652c 100644 (file)
@@ -446,23 +446,54 @@ static PrefParam param[] = {
        /* Display */
        {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
         NULL, NULL, NULL},
        /* Display */
        {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
         NULL, NULL, NULL},
-       {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
+       {"message_font", "Helvetica 14",
         &prefs_common.textfont, P_STRING,
         &display.entry_textfont,
         prefs_set_data_from_entry, prefs_set_entry},
         &prefs_common.textfont, P_STRING,
         &display.entry_textfont,
         prefs_set_data_from_entry, prefs_set_entry},
-       {"small_font",   "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
+       {"small_font",   "Helvetica 10",
         &prefs_common.smallfont,   P_STRING,
         &display.entry_smallfont,
         prefs_set_data_from_entry, prefs_set_entry},
         &prefs_common.smallfont,   P_STRING,
         &display.entry_smallfont,
         prefs_set_data_from_entry, prefs_set_entry},
-       {"bold_font",    "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
+       {"bold_font",    "Helvetica Bold 14",
         &prefs_common.boldfont,    P_STRING,
         &display.entry_boldfont,
         prefs_set_data_from_entry, prefs_set_entry},
         &prefs_common.boldfont,    P_STRING,
         &display.entry_boldfont,
         prefs_set_data_from_entry, prefs_set_entry},
-       {"normal_font",  "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
+       {"normal_font",  "Helvetica 14",
         &prefs_common.normalfont,  P_STRING,
         &display.entry_normalfont, 
         prefs_set_data_from_entry, prefs_set_entry},
 
         &prefs_common.normalfont,  P_STRING,
         &display.entry_normalfont, 
         prefs_set_data_from_entry, prefs_set_entry},
 
+#if 0 /* sylpheed-gtk2(original) separate font setting with gtk+-1.2 version */
+       /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
+       {"widget_font", NULL, &prefs_common.widgetfont_gtk1, P_STRING,
+        NULL, NULL, NULL},
+       {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
+        &prefs_common.textfont_gtk1, P_STRING,
+        NULL, NULL, NULL},
+       {"normal_font", DEFAULT_NORMAL_FONT_GTK1, &prefs_common.normalfont_gtk1, P_STRING,
+        NULL, NULL, NULL},
+       {"bold_font", DEFAULT_BOLD_FONT_GTK1, &prefs_common.boldfont_gtk1, P_STRING,
+        NULL, NULL, NULL},
+       {"small_font", DEFAULT_SMALL_FONT_GTK1, &prefs_common.smallfont_gtk1, P_STRING,
+        NULL, NULL, NULL},
+
+       /* new fonts */
+       {"widget_font_gtk2", NULL, &prefs_common.widgetfont, P_STRING,
+        NULL, NULL, NULL},
+       {"message_font_gtk2", DEFAULT_MESSAGE_FONT,
+        &prefs_common.textfont, P_STRING,
+        &display.entry_textfont,
+        prefs_set_data_from_entry, prefs_set_entry},
+       {"normal_font_gtk2", DEFAULT_NORMAL_FONT, &prefs_common.normalfont, P_STRING,
+        NULL, NULL, NULL},
+       {"bold_font_gtk2", DEFAULT_BOLD_FONT, &prefs_common.boldfont, P_STRING,
+        NULL, NULL, NULL},
+       {"small_font_gtk2", DEFAULT_SMALL_FONT, &prefs_common.smallfont, P_STRING,
+        NULL, NULL, NULL},
+       {"title_font_gtk2", DEFAULT_TITLE_FONT, &prefs_common.titlefont, P_STRING,
+        NULL, NULL, NULL},
+#endif
+
 
        {"display_folder_unread_num", "TRUE",
         &prefs_common.display_folder_unread, P_BOOL,
 
        {"display_folder_unread_num", "TRUE",
         &prefs_common.display_folder_unread, P_BOOL,
@@ -847,7 +878,7 @@ static void date_format_ok_btn_clicked              (GtkButton      *button,
                                                 GtkWidget     **widget);
 static void date_format_cancel_btn_clicked     (GtkButton      *button,
                                                 GtkWidget     **widget);
                                                 GtkWidget     **widget);
 static void date_format_cancel_btn_clicked     (GtkButton      *button,
                                                 GtkWidget     **widget);
-static void date_format_key_pressed            (GtkWidget      *keywidget,
+static gboolean date_format_key_pressed                (GtkWidget      *keywidget,
                                                 GdkEventKey    *event,
                                                 GtkWidget     **widget);
 static gboolean date_format_on_delete          (GtkWidget      *dialogwidget,
                                                 GdkEventKey    *event,
                                                 GtkWidget     **widget);
 static gboolean date_format_on_delete          (GtkWidget      *dialogwidget,
@@ -865,7 +896,7 @@ static GtkWidget *date_format_create            (GtkButton      *button,
 
 static void prefs_quote_colors_dialog          (void);
 static void prefs_quote_colors_dialog_create   (void);
 
 static void prefs_quote_colors_dialog          (void);
 static void prefs_quote_colors_dialog_create   (void);
-static void prefs_quote_colors_key_pressed     (GtkWidget      *widget,
+static gboolean prefs_quote_colors_key_pressed (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void quote_color_set_dialog             (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void quote_color_set_dialog             (GtkWidget      *widget,
@@ -874,9 +905,9 @@ static void quote_colors_set_dialog_ok              (GtkWidget      *widget,
                                                 gpointer        data);
 static void quote_colors_set_dialog_cancel     (GtkWidget      *widget,
                                                 gpointer        data);
                                                 gpointer        data);
 static void quote_colors_set_dialog_cancel     (GtkWidget      *widget,
                                                 gpointer        data);
-static void quote_colors_set_dialog_key_pressed        (GtkWidget      *widget,
-                                                GdkEventKey    *event,
-                                                gpointer        data);
+static gboolean quote_colors_set_dialog_key_pressed    (GtkWidget      *widget,
+                                                        GdkEventKey    *event,
+                                                        gpointer        data);
 static void set_button_bg_color                        (GtkWidget      *widget,
                                                 gint            color);
 static void prefs_enable_message_color_toggled (void);
 static void set_button_bg_color                        (GtkWidget      *widget,
                                                 gint            color);
 static void prefs_enable_message_color_toggled (void);
@@ -884,16 +915,16 @@ static void prefs_recycle_colors_toggled  (GtkWidget      *widget);
 
 static void prefs_font_select  (GtkButton *button, GtkEntry *entry);
 
 
 static void prefs_font_select  (GtkButton *button, GtkEntry *entry);
 
-static void prefs_font_selection_key_pressed   (GtkWidget      *widget,
-                                                GdkEventKey    *event,
-                                                gpointer        data);
+static gboolean prefs_font_selection_key_pressed       (GtkWidget      *widget,
+                                                        GdkEventKey    *event,
+                                                        gpointer        data);
 static void prefs_font_selection_ok            (GtkButton      *button, GtkEntry *entry);
 
 static void prefs_keybind_select               (void);
 static gint prefs_keybind_deleted              (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gpointer        data);
 static void prefs_font_selection_ok            (GtkButton      *button, GtkEntry *entry);
 
 static void prefs_keybind_select               (void);
 static gint prefs_keybind_deleted              (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gpointer        data);
-static void prefs_keybind_key_pressed          (GtkWidget      *widget,
+static gboolean prefs_keybind_key_pressed      (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_keybind_cancel               (void);
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_keybind_cancel               (void);
@@ -902,7 +933,7 @@ static void prefs_keybind_apply_clicked             (GtkWidget      *widget);
 static gint prefs_common_deleted       (GtkWidget      *widget,
                                         GdkEventAny    *event,
                                         gpointer        data);
 static gint prefs_common_deleted       (GtkWidget      *widget,
                                         GdkEventAny    *event,
                                         gpointer        data);
-static void prefs_common_key_pressed   (GtkWidget      *widget,
+static gboolean prefs_common_key_pressed(GtkWidget     *widget,
                                         GdkEventKey    *event,
                                         gpointer        data);
 static void prefs_common_ok            (void);
                                         GdkEventKey    *event,
                                         gpointer        data);
 static void prefs_common_ok            (void);
@@ -985,7 +1016,7 @@ void prefs_common_open(void)
        }
 
        manage_window_set_transient(GTK_WINDOW(dialog.window));
        }
 
        manage_window_set_transient(GTK_WINDOW(dialog.window));
-       gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
+       gtk_notebook_set_current_page(GTK_NOTEBOOK(dialog.notebook), 0);
        gtk_widget_grab_focus(dialog.ok_btn);
 
        prefs_set_dialog(param);
        gtk_widget_grab_focus(dialog.ok_btn);
 
        prefs_set_dialog(param);
@@ -1002,16 +1033,16 @@ static void prefs_common_create(void)
        prefs_dialog_create(&dialog);
        gtk_window_set_title (GTK_WINDOW(dialog.window),
                              _("Common Preferences"));
        prefs_dialog_create(&dialog);
        gtk_window_set_title (GTK_WINDOW(dialog.window),
                              _("Common Preferences"));
-       gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
-                           GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
-       gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
-                           GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
+       g_signal_connect (G_OBJECT(dialog.window), "delete_event",
+                         G_CALLBACK(prefs_common_deleted), NULL);
+       g_signal_connect (G_OBJECT(dialog.window), "key_press_event",
+                         G_CALLBACK(prefs_common_key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
 
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
 
-       gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
-                           GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
-       gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
-                           GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
+       g_signal_connect (G_OBJECT(dialog.ok_btn), "clicked",
+                         G_CALLBACK(prefs_common_ok), NULL);
+       g_signal_connect (G_OBJECT(dialog.apply_btn), "clicked",
+                         G_CALLBACK(prefs_common_apply), NULL);
        gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
                                   GTK_SIGNAL_FUNC(prefs_common_cancel),
                                   GTK_OBJECT(dialog.window));
        gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
                                   GTK_SIGNAL_FUNC(prefs_common_cancel),
                                   GTK_OBJECT(dialog.window));
@@ -1168,7 +1199,7 @@ static void prefs_receive_create(void)
                (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
        gtk_widget_show (spinbtn_autochk);
        gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
                (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
        gtk_widget_show (spinbtn_autochk);
        gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_autochk, 64, -1);
+       gtk_widget_set_size_request (spinbtn_autochk, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
 
        label_autochk2 = gtk_label_new (_("minute(s)"));
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
 
        label_autochk2 = gtk_label_new (_("minute(s)"));
@@ -1227,12 +1258,12 @@ static void prefs_receive_create(void)
        PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
                           _("after manual checking"));
        gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
        PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
                           _("after manual checking"));
        gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
-                          GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
-                          NULL);
-       gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
-                          GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
-                          NULL);
+       g_signal_connect(G_OBJECT(checkbtn_newmail_auto), "toggled",
+                        G_CALLBACK(prefs_common_recv_dialog_newmail_notify_toggle_cb),
+                        NULL);
+       g_signal_connect(G_OBJECT(checkbtn_newmail_manu), "toggled",
+                        G_CALLBACK(prefs_common_recv_dialog_newmail_notify_toggle_cb),
+                        NULL);
 
        hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox);
 
        hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox);
@@ -1586,7 +1617,7 @@ static void prefs_compose_create(void)
                           _("Autosave to Drafts folder every "));
 
        entry_autosave_length = gtk_entry_new();
                           _("Autosave to Drafts folder every "));
 
        entry_autosave_length = gtk_entry_new();
-       gtk_widget_set_usize (entry_autosave_length, 64, -1);   
+       gtk_widget_set_size_request (entry_autosave_length, 64, -1);    
        gtk_widget_show (entry_autosave_length);
        gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
        
        gtk_widget_show (entry_autosave_length);
        gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
        
@@ -1607,7 +1638,7 @@ static void prefs_compose_create(void)
                (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
        gtk_widget_show (spinbtn_undolevel);
        gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
                (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
        gtk_widget_show (spinbtn_undolevel);
        gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
+       gtk_widget_set_size_request (spinbtn_undolevel, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
 
         /* line-wrapping */
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
 
         /* line-wrapping */
@@ -1632,7 +1663,7 @@ static void prefs_compose_create(void)
                (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
        gtk_widget_show (spinbtn_linewrap);
        gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
                (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
        gtk_widget_show (spinbtn_linewrap);
        gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
+       gtk_widget_set_size_request (spinbtn_linewrap, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
 
        label_linewrap = gtk_label_new (_("characters"));
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
 
        label_linewrap = gtk_label_new (_("characters"));
@@ -1741,7 +1772,7 @@ static void prefs_quote_create(void)
        entry_quotemark = gtk_entry_new ();
        gtk_widget_show (entry_quotemark);
        gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
        entry_quotemark = gtk_entry_new ();
        gtk_widget_show (entry_quotemark);
        gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
-       gtk_widget_set_usize (entry_quotemark, 64, -1);
+       gtk_widget_set_size_request (entry_quotemark, 64, -1);
 
        scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
        gtk_widget_show (scrolledwin_quotefmt);
 
        scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
        gtk_widget_show (scrolledwin_quotefmt);
@@ -1750,11 +1781,11 @@ static void prefs_quote_create(void)
                (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
                 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
 
                (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
                 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
 
-       text_quotefmt = gtk_text_new (NULL, NULL);
+       text_quotefmt = gtk_text_view_new ();
        gtk_widget_show (text_quotefmt);
        gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
        gtk_widget_show (text_quotefmt);
        gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
-       gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
-       gtk_widget_set_usize(text_quotefmt, -1, 60);
+       gtk_text_view_set_editable (GTK_TEXT_VIEW(text_quotefmt), TRUE);
+       gtk_widget_set_size_request(text_quotefmt, -1, 60);
 
        /* forward */
 
 
        /* forward */
 
@@ -1781,7 +1812,7 @@ static void prefs_quote_create(void)
        gtk_widget_show (entry_fw_quotemark);
        gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
                            FALSE, FALSE, 0);
        gtk_widget_show (entry_fw_quotemark);
        gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
                            FALSE, FALSE, 0);
-       gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
+       gtk_widget_set_size_request (entry_fw_quotemark, 64, -1);
 
        scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
        gtk_widget_show (scrolledwin_quotefmt);
 
        scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
        gtk_widget_show (scrolledwin_quotefmt);
@@ -1790,12 +1821,12 @@ static void prefs_quote_create(void)
                (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
                 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
 
                (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
                 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
 
-       text_fw_quotefmt = gtk_text_new (NULL, NULL);
+       text_fw_quotefmt = gtk_text_view_new ();
        gtk_widget_show (text_fw_quotefmt);
        gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
                          text_fw_quotefmt);
        gtk_widget_show (text_fw_quotefmt);
        gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
                          text_fw_quotefmt);
-       gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
-       gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
+       gtk_text_view_set_editable (GTK_TEXT_VIEW (text_fw_quotefmt), TRUE);
+       gtk_widget_set_size_request(text_fw_quotefmt, -1, 60);
 
        hbox1 = gtk_hbox_new (FALSE, 32);
        gtk_widget_show (hbox1);
 
        hbox1 = gtk_hbox_new (FALSE, 32);
        gtk_widget_show (hbox1);
@@ -1805,8 +1836,8 @@ static void prefs_quote_create(void)
                gtk_button_new_with_label (_(" Description of symbols "));
        gtk_widget_show (btn_quotedesc);
        gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
                gtk_button_new_with_label (_(" Description of symbols "));
        gtk_widget_show (btn_quotedesc);
        gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
-                          GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
+       g_signal_connect(G_OBJECT(btn_quotedesc), "clicked",
+                        G_CALLBACK(quote_fmt_quote_description), NULL);
 
        /* quote chars */
 
 
        /* quote chars */
 
@@ -1833,7 +1864,7 @@ static void prefs_quote_create(void)
        gtk_widget_show (entry_quote_chars);
        gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
                            FALSE, FALSE, 0);
        gtk_widget_show (entry_quote_chars);
        gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
                            FALSE, FALSE, 0);
-       gtk_widget_set_usize (entry_quote_chars, 64, -1);
+       gtk_widget_set_size_request (entry_quote_chars, 64, -1);
 
 
        compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
 
 
        compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
@@ -1901,8 +1932,8 @@ static void prefs_display_create(void)
        gtk_widget_show (button_textfont);
        gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
                          0, 0, 0, 0);
        gtk_widget_show (button_textfont);
        gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
                          0, 0, 0, 0);
-       gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
+       g_signal_connect (G_OBJECT (button_textfont), "clicked",
+                         G_CALLBACK (prefs_font_select), entry_textfont);
 
        tmplabel = gtk_label_new (_("Small"));
        gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
 
        tmplabel = gtk_label_new (_("Small"));
        gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
@@ -1919,8 +1950,8 @@ static void prefs_display_create(void)
        gtk_widget_show (tmpbutton);
        gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
                          0, 0, 0, 0);
        gtk_widget_show (tmpbutton);
        gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
                          0, 0, 0, 0);
-       gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
-                           GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
+       g_signal_connect (G_OBJECT(tmpbutton), "clicked",
+                         G_CALLBACK(prefs_font_select), tmpentry);
        display.entry_smallfont = tmpentry;                       
 
        tmplabel = gtk_label_new (_("Normal"));
        display.entry_smallfont = tmpentry;                       
 
        tmplabel = gtk_label_new (_("Normal"));
@@ -1938,8 +1969,8 @@ static void prefs_display_create(void)
        gtk_widget_show (tmpbutton);
        gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
                          0, 0, 0, 0);
        gtk_widget_show (tmpbutton);
        gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
                          0, 0, 0, 0);
-       gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
-                               GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
+       g_signal_connect (G_OBJECT(tmpbutton), "clicked",
+                         G_CALLBACK(prefs_font_select), tmpentry);
        display.entry_normalfont = tmpentry;                      
 
        tmplabel = gtk_label_new (_("Bold"));
        display.entry_normalfont = tmpentry;                      
 
        tmplabel = gtk_label_new (_("Bold"));
@@ -1957,8 +1988,8 @@ static void prefs_display_create(void)
        gtk_widget_show (tmpbutton);
        gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
                          0, 0, 0, 0);
        gtk_widget_show (tmpbutton);
        gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
                          0, 0, 0, 0);
-       gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
-                               GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
+       g_signal_connect (G_OBJECT(tmpbutton), "clicked",
+                         G_CALLBACK(prefs_font_select), tmpentry);
        display.entry_boldfont = tmpentry;
 
        vbox2 = gtk_vbox_new (FALSE, 0);
        display.entry_boldfont = tmpentry;
 
        vbox2 = gtk_vbox_new (FALSE, 0);
@@ -1989,7 +2020,7 @@ static void prefs_display_create(void)
        gtk_widget_show (spinbtn_ng_abbrev_len);
        gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
                            FALSE, FALSE, 0);
        gtk_widget_show (spinbtn_ng_abbrev_len);
        gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
                            FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
+       gtk_widget_set_size_request (spinbtn_ng_abbrev_len, 56, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
                                     TRUE);
 
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
                                     TRUE);
 
@@ -2035,8 +2066,8 @@ static void prefs_display_create(void)
 
        gtk_widget_show (button_datefmt);
        gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
 
        gtk_widget_show (button_datefmt);
        gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
-                           GTK_SIGNAL_FUNC (date_format_create), NULL);
+       g_signal_connect (G_OBJECT (button_datefmt), "clicked",
+                         G_CALLBACK (date_format_create), NULL);
 
        PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
 
 
        PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
 
@@ -2048,9 +2079,9 @@ static void prefs_display_create(void)
                (_(" Set displayed items in summary... "));
        gtk_widget_show (button_dispitem);
        gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
                (_(" Set displayed items in summary... "));
        gtk_widget_show (button_dispitem);
        gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_summary_column_open),
-                           NULL);
+       g_signal_connect (G_OBJECT (button_dispitem), "clicked",
+                         G_CALLBACK (prefs_summary_column_open),
+                         NULL);
 
        display.entry_textfont  = entry_textfont;
        display.button_textfont = button_textfont;
 
        display.entry_textfont  = entry_textfont;
        display.button_textfont = button_textfont;
@@ -2110,15 +2141,15 @@ static void prefs_message_create(void)
 
        PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
                           _("Enable coloration of message"));
 
        PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
                           _("Enable coloration of message"));
-       gtk_signal_connect(GTK_OBJECT(chkbtn_enablecol), "toggled",
-                          GTK_SIGNAL_FUNC(prefs_enable_message_color_toggled),
-                          NULL);
+       g_signal_connect(G_OBJECT(chkbtn_enablecol), "toggled",
+                        G_CALLBACK(prefs_enable_message_color_toggled),
+                        NULL);
 
        button_edit_col = gtk_button_new_with_label (_(" Edit... "));
        gtk_widget_show (button_edit_col);
        gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
 
        button_edit_col = gtk_button_new_with_label (_(" Edit... "));
        gtk_widget_show (button_edit_col);
        gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
+       g_signal_connect (G_OBJECT (button_edit_col), "clicked",
+                         G_CALLBACK(prefs_quote_colors_dialog), NULL);
 
        SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
 
 
        SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
 
@@ -2143,9 +2174,9 @@ static void prefs_message_create(void)
        gtk_widget_show (button_edit_disphdr);
        gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
                          FALSE, TRUE, 0);
        gtk_widget_show (button_edit_disphdr);
        gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
                          FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_display_header_open),
-                           NULL);
+       g_signal_connect (G_OBJECT (button_edit_disphdr), "clicked",
+                         G_CALLBACK (prefs_display_header_open),
+                         NULL);
 
        SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
 
 
        SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
 
@@ -2170,7 +2201,7 @@ static void prefs_message_create(void)
        gtk_widget_show (spinbtn_linespc);
        gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
                            FALSE, FALSE, 0);
        gtk_widget_show (spinbtn_linespc);
        gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
                            FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_linespc, 64, -1);
+       gtk_widget_set_size_request (spinbtn_linespc, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
 
        label_linespc = gtk_label_new (_("pixel(s)"));
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
 
        label_linespc = gtk_label_new (_("pixel(s)"));
@@ -2209,7 +2240,7 @@ static void prefs_message_create(void)
        gtk_widget_show (spinbtn_scrollstep);
        gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
                            FALSE, FALSE, 0);
        gtk_widget_show (spinbtn_scrollstep);
        gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
                            FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
+       gtk_widget_set_size_request (spinbtn_scrollstep, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
                                     TRUE);
 
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
                                     TRUE);
 
@@ -2290,7 +2321,7 @@ static void prefs_privacy_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 12, -1);
+       gtk_widget_set_size_request (hbox_spc, 12, -1);
 
        label = gtk_label_new (_("Expire after"));
        gtk_widget_show (label);
 
        label = gtk_label_new (_("Expire after"));
        gtk_widget_show (label);
@@ -2309,7 +2340,7 @@ static void prefs_privacy_create(void)
        gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
                                     TRUE);
        gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
                                     TRUE);
-       gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
+       gtk_widget_set_size_request (spinbtn_store_passphrase, 64, -1);
 
        label = gtk_label_new (_("minute(s) "));
        gtk_widget_show (label);
 
        label = gtk_label_new (_("minute(s) "));
        gtk_widget_show (label);
@@ -2322,7 +2353,7 @@ static void prefs_privacy_create(void)
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
        hbox_spc = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox_spc);
        gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
-       gtk_widget_set_usize (hbox_spc, 12, -1);
+       gtk_widget_set_size_request (hbox_spc, 12, -1);
 
        SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
 
 
        SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
 
@@ -2457,8 +2488,8 @@ static void prefs_interface_create(void)
        button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
        gtk_widget_show (button_keybind);
        gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
        button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
        gtk_widget_show (button_keybind);
        gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
+       g_signal_connect (G_OBJECT (button_keybind), "clicked",
+                         G_CALLBACK (prefs_keybind_select), NULL);
 
        PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
        
 
        PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
        
@@ -2642,7 +2673,7 @@ static void prefs_other_create(void)
        loglength_tooltip = gtk_tooltips_new();
        
        loglength_entry = gtk_entry_new ();
        loglength_tooltip = gtk_tooltips_new();
        
        loglength_entry = gtk_entry_new ();
-       gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
+       gtk_widget_set_size_request (GTK_WIDGET (loglength_entry), 64, -1);
        gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
                            FALSE, TRUE, 0);
        gtk_widget_show (GTK_WIDGET (loglength_entry));
        gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
                            FALSE, TRUE, 0);
        gtk_widget_show (GTK_WIDGET (loglength_entry));
@@ -2708,7 +2739,7 @@ static void prefs_other_create(void)
        gtk_widget_show (spinbtn_iotimeout);
        gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
                            FALSE, FALSE, 0);
        gtk_widget_show (spinbtn_iotimeout);
        gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
                            FALSE, FALSE, 0);
-       gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
+       gtk_widget_set_size_request (spinbtn_iotimeout, 64, -1);
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
 
        label_iotimeout = gtk_label_new (_("seconds"));
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
 
        label_iotimeout = gtk_label_new (_("seconds"));
@@ -2751,8 +2782,8 @@ static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
        g_return_if_fail(*widget != NULL);
        g_return_if_fail(display.entry_datefmt != NULL);
 
        g_return_if_fail(*widget != NULL);
        g_return_if_fail(display.entry_datefmt != NULL);
 
-       datefmt_sample = GTK_WIDGET(gtk_object_get_data
-                                   (GTK_OBJECT(*widget), "datefmt_sample"));
+       datefmt_sample = GTK_WIDGET(g_object_get_data
+                                   (G_OBJECT(*widget), "datefmt_sample"));
        g_return_if_fail(datefmt_sample != NULL);
 
        text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
        g_return_if_fail(datefmt_sample != NULL);
 
        text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
@@ -2774,11 +2805,12 @@ static void date_format_cancel_btn_clicked(GtkButton *button,
        *widget = NULL;
 }
 
        *widget = NULL;
 }
 
-static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
-                                   GtkWidget **widget)
+static gboolean date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
+                                       GtkWidget **widget)
 {
        if (event && event->keyval == GDK_Escape)
                date_format_cancel_btn_clicked(NULL, widget);
 {
        if (event && event->keyval == GDK_Escape)
                date_format_cancel_btn_clicked(NULL, widget);
+       return FALSE;
 }
 
 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
 }
 
 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
@@ -2806,7 +2838,16 @@ static void date_format_entry_on_change(GtkEditable *editable,
        if (text)
                strftime(buffer, sizeof buffer, text, cal_time); 
        g_free(text);
        if (text)
                strftime(buffer, sizeof buffer, text, cal_time); 
        g_free(text);
-       gtk_label_set_text(example, buffer);
+
+       text = conv_codeset_strdup(buffer,
+                                  conv_get_current_charset_str(),
+                                  CS_UTF_8);
+       if (!text)
+               text = g_strdup(buffer);
+
+       gtk_label_set_text(example, text);
+
+       g_free(text);
 }
 
 static void date_format_select_row(GtkWidget *date_format_list, gint row,
 }
 
 static void date_format_select_row(GtkWidget *date_format_list, gint row,
@@ -2815,7 +2856,7 @@ static void date_format_select_row(GtkWidget *date_format_list, gint row,
 {
        gint cur_pos;
        gchar *format;
 {
        gint cur_pos;
        gchar *format;
-       gchar *old_format;
+       const gchar *old_format;
        gchar *new_format;
        GtkWidget *datefmt_sample;
 
        gchar *new_format;
        GtkWidget *datefmt_sample;
 
@@ -2917,11 +2958,11 @@ static GtkWidget *date_format_create(GtkButton *button, void *data)
 
        if (datefmt_win) return datefmt_win;
 
 
        if (datefmt_win) return datefmt_win;
 
-       datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
+       datefmt_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
        gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
        gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
        gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
        gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
        gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
-       gtk_widget_set_usize(datefmt_win, 440, 280);
+       gtk_widget_set_size_request(datefmt_win, 440, 280);
 
        vbox1 = gtk_vbox_new(FALSE, 10);
        gtk_widget_show(vbox1);
 
        vbox1 = gtk_vbox_new(FALSE, 10);
        gtk_widget_show(vbox1);
@@ -2964,15 +3005,16 @@ static GtkWidget *date_format_create(GtkButton *button, void *data)
        gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
        gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
 
        gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
        gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
 
-       datefmt_entry = gtk_entry_new_with_max_length(256);
+       datefmt_entry = gtk_entry_new();
+       gtk_entry_set_max_length(GTK_ENTRY(datefmt_entry), 256);
        gtk_widget_show(datefmt_entry);
        gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
                         (GTK_EXPAND | GTK_FILL), 0, 0, 0);
 
        /* we need the "sample" entry box; add it as data so callbacks can
         * get the entry box */
        gtk_widget_show(datefmt_entry);
        gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
                         (GTK_EXPAND | GTK_FILL), 0, 0, 0);
 
        /* we need the "sample" entry box; add it as data so callbacks can
         * get the entry box */
-       gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
-                           datefmt_entry);
+       g_object_set_data(G_OBJECT(datefmt_win), "datefmt_sample",
+                         datefmt_entry);
 
        label2 = gtk_label_new(_("Example"));
        gtk_widget_show(label2);
 
        label2 = gtk_label_new(_("Example"));
        gtk_widget_show(label2);
@@ -3000,25 +3042,25 @@ static GtkWidget *date_format_create(GtkButton *button, void *data)
        date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
                                    GTK_LABEL(label3));
 
        date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
                                    GTK_LABEL(label3));
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
-                          &datefmt_win);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
-                          &datefmt_win);
-       gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
-                          GTK_SIGNAL_FUNC(date_format_key_pressed),
-                          &datefmt_win);
-       gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
-                          GTK_SIGNAL_FUNC(date_format_on_delete),
-                          &datefmt_win);
-       gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
-                          GTK_SIGNAL_FUNC(date_format_entry_on_change),
-                          label3);
-
-       gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
-                          GTK_SIGNAL_FUNC(date_format_select_row),
-                          datefmt_win);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(date_format_ok_btn_clicked),
+                        &datefmt_win);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(date_format_cancel_btn_clicked),
+                        &datefmt_win);
+       g_signal_connect(G_OBJECT(datefmt_win), "key_press_event",
+                        G_CALLBACK(date_format_key_pressed),
+                        &datefmt_win);
+       g_signal_connect(G_OBJECT(datefmt_win), "delete_event",
+                        G_CALLBACK(date_format_on_delete),
+                        &datefmt_win);
+       g_signal_connect(G_OBJECT(datefmt_entry), "changed",
+                        G_CALLBACK(date_format_entry_on_change),
+                        label3);
+
+       g_signal_connect(G_OBJECT(datefmt_clist), "select_row",
+                        G_CALLBACK(date_format_select_row),
+                        datefmt_win);
 
        gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
 
        gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
@@ -3061,7 +3103,7 @@ static void prefs_quote_colors_dialog_create(void)
        GtkWidget *recycle_colors_btn;
        GtkWidget *frame_colors;
 
        GtkWidget *recycle_colors_btn;
        GtkWidget *frame_colors;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width(GTK_CONTAINER(window), 2);
        gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_container_set_border_width(GTK_CONTAINER(window), 2);
        gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
@@ -3083,39 +3125,39 @@ static void prefs_quote_colors_dialog_create(void)
        color_buttons.quote_level1_btn = gtk_button_new();
        gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
                          0, 1, 0, 1, 0, 0, 0, 0);
        color_buttons.quote_level1_btn = gtk_button_new();
        gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
                          0, 1, 0, 1, 0, 0, 0, 0);
-       gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
+       gtk_widget_set_size_request (color_buttons.quote_level1_btn, 40, 30);
        gtk_container_set_border_width
                (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
 
        color_buttons.quote_level2_btn = gtk_button_new();
        gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
                          0, 1, 1, 2, 0, 0, 0, 0);
        gtk_container_set_border_width
                (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
 
        color_buttons.quote_level2_btn = gtk_button_new();
        gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
                          0, 1, 1, 2, 0, 0, 0, 0);
-       gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
+       gtk_widget_set_size_request (color_buttons.quote_level2_btn, 40, 30);
        gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
 
        color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
                          0, 1, 2, 3, 0, 0, 0, 0);
        gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
 
        color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
                          0, 1, 2, 3, 0, 0, 0, 0);
-       gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
+       gtk_widget_set_size_request (color_buttons.quote_level3_btn, 40, 30);
        gtk_container_set_border_width
                (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
 
        color_buttons.uri_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
                          0, 1, 3, 4, 0, 0, 0, 0);
        gtk_container_set_border_width
                (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
 
        color_buttons.uri_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
                          0, 1, 3, 4, 0, 0, 0, 0);
-       gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
+       gtk_widget_set_size_request (color_buttons.uri_btn, 40, 30);
        gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
 
        color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
                          0, 1, 4, 5, 0, 0, 0, 0);
        gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
 
        color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
                          0, 1, 4, 5, 0, 0, 0, 0);
-       gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
+       gtk_widget_set_size_request (color_buttons.tgt_folder_btn, 40, 30);
        gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
 
        color_buttons.signature_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
                          0, 1, 5, 6, 0, 0, 0, 0);
        gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
 
        color_buttons.signature_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
                          0, 1, 5, 6, 0, 0, 0, 0);
-       gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
+       gtk_widget_set_size_request (color_buttons.signature_btn, 40, 30);
        gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
 
        quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
        gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
 
        quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
@@ -3163,28 +3205,28 @@ static void prefs_quote_colors_dialog_create(void)
 
        gtk_widget_grab_default(ok_btn);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        gtk_widget_grab_default(ok_btn);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
-                          NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(gtk_main_quit), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(prefs_quote_colors_key_pressed),
+                        NULL);
 
 
-       gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
-                          GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
-       gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
-                          GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
-       gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
-                          GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
-       gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
-                          GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
-       gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
-                          GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
-       gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
-                          GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
-       gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
-                          GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
+       g_signal_connect(G_OBJECT(color_buttons.quote_level1_btn), "clicked",
+                        G_CALLBACK(quote_color_set_dialog), "LEVEL1");
+       g_signal_connect(G_OBJECT(color_buttons.quote_level2_btn), "clicked",
+                        G_CALLBACK(quote_color_set_dialog), "LEVEL2");
+       g_signal_connect(G_OBJECT(color_buttons.quote_level3_btn), "clicked",
+                        G_CALLBACK(quote_color_set_dialog), "LEVEL3");
+       g_signal_connect(G_OBJECT(color_buttons.uri_btn), "clicked",
+                        G_CALLBACK(quote_color_set_dialog), "URI");
+       g_signal_connect(G_OBJECT(color_buttons.tgt_folder_btn), "clicked",
+                        G_CALLBACK(quote_color_set_dialog), "TGTFLD");
+       g_signal_connect(G_OBJECT(color_buttons.signature_btn), "clicked",
+                        G_CALLBACK(quote_color_set_dialog), "SIGNATURE");
+       g_signal_connect(G_OBJECT(recycle_colors_btn), "toggled",
+                        G_CALLBACK(prefs_recycle_colors_toggled), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(gtk_main_quit), NULL);
 
        /* show message button colors and recycle options */
        set_button_bg_color(color_buttons.quote_level1_btn,
 
        /* show message button colors and recycle options */
        set_button_bg_color(color_buttons.quote_level1_btn,
@@ -3206,11 +3248,12 @@ static void prefs_quote_colors_dialog_create(void)
        quote_color_win = window;
 }
 
        quote_color_win = window;
 }
 
-static void prefs_quote_colors_key_pressed(GtkWidget *widget,
-                                          GdkEventKey *event, gpointer data)
+static gboolean prefs_quote_colors_key_pressed(GtkWidget *widget,
+                                              GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                gtk_main_quit();
 {
        if (event && event->keyval == GDK_Escape)
                gtk_main_quit();
+       return FALSE;
 }
 
 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
 }
 
 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
@@ -3250,13 +3293,13 @@ static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
        gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
        manage_window_set_transient(GTK_WINDOW(color_dialog));
 
        gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
        manage_window_set_transient(GTK_WINDOW(color_dialog));
 
-       gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
-                          "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
-       gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
-                          "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
-       gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
-                          GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
-                          data);
+       g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
+                        "clicked", G_CALLBACK(quote_colors_set_dialog_ok), data);
+       g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
+                        "clicked", G_CALLBACK(quote_colors_set_dialog_cancel), data);
+       g_signal_connect(G_OBJECT(color_dialog), "key_press_event",
+                        G_CALLBACK(quote_colors_set_dialog_key_pressed),
+                        data);
 
        /* preselect the previous color in the color selection dialog */
        color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
 
        /* preselect the previous color in the color selection dialog */
        color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
@@ -3320,11 +3363,12 @@ static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
        gtk_widget_destroy(color_dialog);
 }
 
        gtk_widget_destroy(color_dialog);
 }
 
-static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
-                                               GdkEventKey *event,
-                                               gpointer data)
+static gboolean quote_colors_set_dialog_key_pressed(GtkWidget *widget,
+                                                   GdkEventKey *event,
+                                                   gpointer data)
 {
        gtk_widget_destroy(color_dialog);
 {
        gtk_widget_destroy(color_dialog);
+       return FALSE;
 }
 
 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
 }
 
 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
@@ -3368,29 +3412,30 @@ static void prefs_font_select(GtkButton *button, GtkEntry *entry)
        if (!font_sel_win) {
                font_sel_win = gtk_font_selection_dialog_new
                        (_("Font selection"));
        if (!font_sel_win) {
                font_sel_win = gtk_font_selection_dialog_new
                        (_("Font selection"));
-               gtk_window_position(GTK_WINDOW(font_sel_win),
-                                   GTK_WIN_POS_CENTER);
-               gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
-                                  GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
-                                  NULL);
-               gtk_signal_connect
-                       (GTK_OBJECT(font_sel_win), "key_press_event",
-                        GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
+               gtk_window_set_position(GTK_WINDOW(font_sel_win),
+                                       GTK_WIN_POS_CENTER);
+               g_signal_connect(G_OBJECT(font_sel_win), "delete_event",
+                                G_CALLBACK(gtk_widget_hide_on_delete),
+                                NULL);
+               g_signal_connect
+                       (G_OBJECT(font_sel_win), "key_press_event",
+                        G_CALLBACK(prefs_font_selection_key_pressed),
                         NULL);
                         NULL);
-               gtk_signal_connect_object
-                       (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
+               g_signal_connect_closure
+                       (G_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
                         "clicked",
                         "clicked",
-                        GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
-                        GTK_OBJECT(font_sel_win));
+                        g_cclosure_new_swap(G_CALLBACK(gtk_widget_hide_on_delete),
+                                            font_sel_win, NULL),
+                        FALSE);
        }
 
        if(font_sel_conn_id) {
                gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
        }
        }
 
        if(font_sel_conn_id) {
                gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
        }
-       font_sel_conn_id = gtk_signal_connect
-               (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
+       font_sel_conn_id = g_signal_connect
+               (G_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
                 "clicked",
                 "clicked",
-                GTK_SIGNAL_FUNC(prefs_font_selection_ok),
+                G_CALLBACK(prefs_font_selection_ok),
                 entry);
        printf("%i\n", font_sel_conn_id);
 
                 entry);
        printf("%i\n", font_sel_conn_id);
 
@@ -3404,12 +3449,13 @@ static void prefs_font_select(GtkButton *button, GtkEntry *entry)
        gtk_widget_show(font_sel_win);
 }
 
        gtk_widget_show(font_sel_win);
 }
 
-static void prefs_font_selection_key_pressed(GtkWidget *widget,
-                                            GdkEventKey *event,
-                                            gpointer data)
+static gboolean prefs_font_selection_key_pressed(GtkWidget *widget,
+                                                GdkEventKey *event,
+                                                gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(font_sel_win);
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(font_sel_win);
+       return FALSE;
 }
 
 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
 }
 
 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
@@ -3439,7 +3485,7 @@ static void prefs_keybind_select(void)
        GtkWidget *ok_btn;
        GtkWidget *cancel_btn;
 
        GtkWidget *ok_btn;
        GtkWidget *cancel_btn;
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
        gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
        gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
@@ -3470,7 +3516,7 @@ static void prefs_keybind_select(void)
                               "Mutt",
                               _("Old Sylpheed"),
                               NULL);
                               "Mutt",
                               _("Old Sylpheed"),
                               NULL);
-       gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
+       gtk_editable_set_editable(GTK_EDITABLE(GTK_COMBO (combo)->entry), FALSE);
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
@@ -3490,16 +3536,16 @@ static void prefs_keybind_select(void)
        gtk_widget_grab_default (ok_btn);
 
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
        gtk_widget_grab_default (ok_btn);
 
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
-       gtk_signal_connect (GTK_OBJECT (window), "delete_event",
-                           GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
-       gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
-                           GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
-       gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
-                           NULL);
-       gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_keybind_cancel),
-                           NULL);
+       g_signal_connect (G_OBJECT (window), "delete_event",
+                         G_CALLBACK (prefs_keybind_deleted), NULL);
+       g_signal_connect (G_OBJECT (window), "key_press_event",
+                         G_CALLBACK (prefs_keybind_key_pressed), NULL);
+       g_signal_connect (G_OBJECT (ok_btn), "clicked",
+                         G_CALLBACK (prefs_keybind_apply_clicked),
+                         NULL);
+       g_signal_connect (G_OBJECT (cancel_btn), "clicked",
+                         G_CALLBACK (prefs_keybind_cancel),
+                         NULL);
 
        gtk_widget_show_all(window);
 
 
        gtk_widget_show_all(window);
 
@@ -3507,11 +3553,12 @@ static void prefs_keybind_select(void)
        keybind.combo = combo;
 }
 
        keybind.combo = combo;
 }
 
-static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                                     gpointer data)
+static gboolean prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                         gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                prefs_keybind_cancel();
 {
        if (event && event->keyval == GDK_Escape)
                prefs_keybind_cancel();
+       return FALSE;
 }
 
 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
 }
 
 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
@@ -3527,239 +3574,269 @@ static void prefs_keybind_cancel(void)
        keybind.window = NULL;
        keybind.combo = NULL;
 }
        keybind.window = NULL;
        keybind.combo = NULL;
 }
+  
+struct KeyBind {
+       const gchar *accel_path;
+       const gchar *accel_key;
+};
+
+static void prefs_keybind_apply(struct KeyBind keybind[], gint num)
+{
+       gint i;
+       guint key;
+       GdkModifierType mods;
+
+       for (i = 0; i < num; i++) {
+               const gchar *accel_key
+                       = keybind[i].accel_key ? keybind[i].accel_key : "";
+               gtk_accelerator_parse(accel_key, &key, &mods);
+               gtk_accel_map_change_entry(keybind[i].accel_path,
+                                          key, mods, TRUE);
+       }
+}
 
 static void prefs_keybind_apply_clicked(GtkWidget *widget)
 {
        GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
 
 static void prefs_keybind_apply_clicked(GtkWidget *widget)
 {
        GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
-       gchar *text;
-       gchar *rc_str;
-
-       static gchar *default_menurc =
-               "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
-               "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
-               "(menu-path \"<Main>/File/Print...\" \"\")\n"
-               "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
-
-               "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
-               "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
-               "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
-               "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
-
-               "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
-               "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
-               "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
-               "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
-               "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
-               "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
-               "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
-               "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
-               "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
-               "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
-               "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
-               "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
-
-               "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
-               "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
-               "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
-               "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
-               "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
-               "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
-               "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
-               "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
-               /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
-               "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
-               "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
-               "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
-               "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
-
-               "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
-               "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
-               "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
-
-               "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
-               "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
-
-       static gchar *mew_wl_menurc =
-               "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
-               "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
-               "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
-               "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
-
-               "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
-               "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
-               "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
-               "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
-
-               "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
-               "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
-               "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
-               "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
-               "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
-               "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
-               "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
-               "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
-               "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
-               "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
-               "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
-               "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
-
-               "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
-               "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
-               "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
-               "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
-               "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
-               "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
-               "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
-               "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
-               /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
-               "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
-               "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
-               "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
-               "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
-
-               "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
-               "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
-               "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
-
-               "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
-               "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
-
-       static gchar *mutt_menurc =
-               "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
-               "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
-               "(menu-path \"<Main>/File/Print...\" \"P\")\n"
-               "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
-
-               "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
-               "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
-               "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
-               "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
-
-               "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
-               "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
-               "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
-               "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
-               "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
-               "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
-               "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
-               "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
-               "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
-               "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
-               "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
-
-               "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
-               "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
-               "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
-               "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
-               "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
-               "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
-               "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
-               "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
-               "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
-               "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
-               "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
-               "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
-               "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
-
-               "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
-               "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
-               "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
-
-               "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
-               "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
-
-       static gchar *old_sylpheed_menurc =
-               "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
-               "(menu-path \"<Main>/File/Save as...\" \"\")\n"
-               "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
-               "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
-
-               "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
-               "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
-               "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
-               "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
-
-               "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
-               "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
-               "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
-               "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
-               "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
-               "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
-               "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
-               "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
-               "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
-               "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
-               "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
-               "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
-
-               "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
-               "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
-               "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
-               "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
-               "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
-               "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
-               "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
-               "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
-               /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
-               "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
-               "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
-               "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
-               "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
-               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
-
-               "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
-               "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
-               "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
-
-               "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
-               "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
-               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
+       const gchar *text;
+       struct KeyBind *menurc;
+       gint n_menurc;
+
+       static struct KeyBind default_menurc[] = {
+               {"<Main>/File/Empty trash",                     ""},
+               {"<Main>/File/Save as...",                      "<control>S"},
+               {"<Main>/File/Print...",                        ""},
+               {"<Main>/File/Exit",                            "<control>Q"},
+
+               {"<Main>/Edit/Copy",                            "<control>C"},
+               {"<Main>/Edit/Select all",                      "<control>A"},
+               {"<Main>/Edit/Find in current message...",      "<control>F"},
+               {"<Main>/Edit/Search folder...",                "<shift><control>F"},
+
+               {"<Main>/View/Expand Summary View",             "V"},
+               {"<Main>/View/Expand Message View",             "<shift>V"},
+               {"<Main>/View/Thread view",                     "<control>T"},
+               {"<Main>/View/Go to/Prev message",              "P"},
+               {"<Main>/View/Go to/Next message",              "N"},
+               {"<Main>/View/Go to/Prev unread message",       "<shift>P"},
+               {"<Main>/View/Go to/Next unread message",       "<shift>N"},
+               {"<Main>/View/Go to/Other folder...",           "G"},
+               {"<Main>/View/Open in new window",              "<control><alt>N"},
+               {"<Main>/View/View source",                     "<control>U"},
+               {"<Main>/View/Show all headers",                "<control>H"},
+               {"<Main>/View/Update",                          "<control><alt>U"},
+
+               {"<Main>/Message/Get new mail",                 "<control>I"},
+               {"<Main>/Message/Get from all accounts",        "<shift><control>I"},
+               {"<Main>/Message/Compose an email message",     "<control>M"},
+               {"<Main>/Message/Reply",                        "<control>R"},
+               {"<Main>/Message/Reply to/all",                 "<shift><control>R"},
+               {"<Main>/Message/Reply to/sender",              ""},
+               {"<Main>/Message/Reply to/mailing list",        "<control>L"},
+               {"<Main>/Message/Forward",                      "<control><alt>F"},
+               /* {"<Main>/Message/Forward as attachment",      ""}, */
+               {"<Main>/Message/Move...",                      "<control>O"},
+               {"<Main>/Message/Copy...",                      "<shift><control>O"},
+               {"<Main>/Message/Delete",                       "<control>D"},
+               {"<Main>/Message/Mark/Mark",                    "<shift>asterisk"},
+               {"<Main>/Message/Mark/Unmark",                  "U"},
+               {"<Main>/Message/Mark/Mark as unread",          "<shift>exclam"},
+               {"<Main>/Message/Mark/Mark as read",            ""},
+
+               {"<Main>/Tools/Address book",                   "<shift><control>A"},
+               {"<Main>/Tools/Execute",                        "X"},
+               {"<Main>/Tools/Log window",                     "<shift><control>L"},
+
+               {"<Compose>/File/Close",                                "<control>W"},
+               {"<Compose>/Edit/Select all",                           "<control>A"},
+               {"<Compose>/Edit/Advanced/Move a word backward",        ""},
+               {"<Compose>/Edit/Advanced/Move a word forward",         ""},
+               {"<Compose>/Edit/Advanced/Move to beginning of line",   ""},
+               {"<Compose>/Edit/Advanced/Delete a word backward",      ""},
+               {"<Compose>/Edit/Advanced/Delete a word forward",       ""},
+       };
 
 
-       text = gtk_entry_get_text(entry);
+       static struct KeyBind mew_wl_menurc[] = {
+               {"<Main>/File/Empty trash",                     "<shift>D"},
+               {"<Main>/File/Save as...",                      "Y"},
+               {"<Main>/File/Print...",                        "<shift>numbersign"},
+               {"<Main>/File/Exit",                            "<shift>Q"},
+
+               {"<Main>/Edit/Copy",                            "<control>C"},
+               {"<Main>/Edit/Select all",                      "<control>A"},
+               {"<Main>/Edit/Find in current message...",      "<control>F"},
+               {"<Main>/Edit/Search folder...",                "<control>S"},
+
+               {"<Main>/View/Expand Summary View",             ""},
+               {"<Main>/View/Expand Message View",             ""},
+               {"<Main>/View/Thread view",                     "<shift>T"},
+               {"<Main>/View/Go to/Prev message",              "P"},
+               {"<Main>/View/Go to/Next message",              "N"},
+               {"<Main>/View/Go to/Prev unread message",       "<shift>P"},
+               {"<Main>/View/Go to/Next unread message",       "<shift>N"},
+               {"<Main>/View/Go to/Other folder...",           "G"},
+               {"<Main>/View/Open in new window",              "<control><alt>N"},
+               {"<Main>/View/View source",                     "<control>U"},
+               {"<Main>/View/Show all headers",                "<shift>H"},
+               {"<Main>/View/Update",                          "<shift>S"},
+
+               {"<Main>/Message/Get new mail",                 "<control>I"},
+               {"<Main>/Message/Get from all accounts",        "<shift><control>I"},
+               {"<Main>/Message/Compose an email message",     "W"},
+               {"<Main>/Message/Reply",                        "<control>R"},
+               {"<Main>/Message/Reply to/all",                 "<shift>A"},
+               {"<Main>/Message/Reply to/sender",              ""},
+               {"<Main>/Message/Reply to/mailing list",        "<control>L"},
+               {"<Main>/Message/Forward",                      "F"},
+               /* {"<Main>/Message/Forward as attachment", "<shift>F"}, */
+               {"<Main>/Message/Move...",                      "O"},
+               {"<Main>/Message/Copy...",                      "<shift>O"},
+               {"<Main>/Message/Delete",                       "D"},
+               {"<Main>/Message/Mark/Mark",                    "<shift>asterisk"},
+               {"<Main>/Message/Mark/Unmark",                  "U"},
+               {"<Main>/Message/Mark/Mark as unread",          "<shift>exclam"},
+               {"<Main>/Message/Mark/Mark as read",            "<shift>R"},
+
+               {"<Main>/Tools/Address book",                   "<shift><control>A"},
+               {"<Main>/Tools/Execute",                        "X"},
+               {"<Main>/Tools/Log window",                     "<shift><control>L"},
+
+               {"<Compose>/File/Close",                                "<alt>W"},
+               {"<Compose>/Edit/Select all",                           ""},
+               {"<Compose>/Edit/Advanced/Move a word backward,"        "<alt>B"},
+               {"<Compose>/Edit/Advanced/Move a word forward",         "<alt>F"},
+               {"<Compose>/Edit/Advanced/Move to beginning of line",   "<control>A"},
+               {"<Compose>/Edit/Advanced/Delete a word backward",      "<control>W"},
+               {"<Compose>/Edit/Advanced/Delete a word forward",       "<alt>D"},
+       };
 
 
-       if (!strcmp(text, _("Default")))
-               rc_str = default_menurc;
-       else if (!strcmp(text, "Mew / Wanderlust"))
-               rc_str = mew_wl_menurc;
-       else if (!strcmp(text, "Mutt"))
-               rc_str = mutt_menurc;
-       else if (!strcmp(text, _("Old Sylpheed")))
-               rc_str = old_sylpheed_menurc;
-       else
+       static struct KeyBind mutt_menurc[] = {
+               {"<Main>/File/Empty trash",                     ""},
+               {"<Main>/File/Save as...",                      "S"},
+               {"<Main>/File/Print...",                        "P"},
+               {"<Main>/File/Exit",                            "Q"},
+
+               {"<Main>/Edit/Copy",                            "<control>C"},
+               {"<Main>/Edit/Select all",                      "<control>A"},
+               {"<Main>/Edit/Find in current message...",      "<control>F"},
+               {"<Main>/Edit/Search messages...",              "slash"},
+
+               {"<Main>/View/Toggle summary view",             "V"},
+               {"<Main>/View/Thread view",                     "<control>T"},
+               {"<Main>/View/Go to/Prev message",              ""},
+               {"<Main>/View/Go to/Next message",              ""},
+               {"<Main>/View/Go to/Prev unread message",       ""},
+               {"<Main>/View/Go to/Next unread message",       ""},
+               {"<Main>/View/Go to/Other folder...",           "C"},
+               {"<Main>/View/Open in new window",              "<control><alt>N"},
+               {"<Main>/View/View source",                     "<control>U"},
+               {"<Main>/View/Show all headers",                "<control>H"},
+               {"<Main>/View/Update",                          "<control><alt>U"},
+
+               {"<Main>/Message/Get new mail",                 "<control>I"},
+               {"<Main>/Message/Get from all accounts",        "<shift><control>I"},
+               {"<Main>/Message/Compose new message",          "M"},
+               {"<Main>/Message/Reply",                        "R"},
+               {"<Main>/Message/Reply to/all",                 "G"},
+               {"<Main>/Message/Reply to/sender",              ""},
+               {"<Main>/Message/Reply to/mailing list",        "<control>L"},
+               {"<Main>/Message/Forward",                      "F"},
+               {"<Main>/Message/Forward as attachment",        ""},
+               {"<Main>/Message/Move...",                      "<control>O"},
+               {"<Main>/Message/Copy...",                      "<shift>C"},
+               {"<Main>/Message/Delete",                       "D"},
+               {"<Main>/Message/Mark/Mark",                    "<shift>F"},
+               {"<Main>/Message/Mark/Unmark",                  "U"},
+               {"<Main>/Message/Mark/Mark as unread",          "<shift>N"},
+               {"<Main>/Message/Mark/Mark as read",            ""},
+
+               {"<Main>/Tools/Address book",                   "<shift><control>A"},
+               {"<Main>/Tools/Execute",                        "X"},
+               {"<Main>/Tools/Log window",                     "<shift><control>L"},
+
+               {"<Compose>/File/Close",                                "<alt>W"},
+               {"<Compose>/Edit/Select all",                           ""},
+               {"<Compose>/Edit/Advanced/Move a word backward",        "<alt>B"},
+               {"<Compose>/Edit/Advanced/Move a word forward",         "<alt>F"},
+               {"<Compose>/Edit/Advanced/Move to beginning of line",   "<control>A"},
+               {"<Compose>/Edit/Advanced/Delete a word backward",      "<control>W"},
+               {"<Compose>/Edit/Advanced/Delete a word forward",       "<alt>D"},
+       };
+
+       static struct KeyBind old_sylpheed_menurc[] = {
+               {"<Main>/File/Empty trash",                     ""},
+               {"<Main>/File/Save as...",                      ""},
+               {"<Main>/File/Print...",                        "<alt>P"},
+               {"<Main>/File/Exit",                            "<alt>Q"},
+
+               {"<Main>/Edit/Copy",                            "<control>C"},
+               {"<Main>/Edit/Select all",                      "<control>A"},
+               {"<Main>/Edit/Find in current message...",      "<control>F"},
+               {"<Main>/Edit/Search folder...",                "<control>S"},
+
+               {"<Main>/View/Expand Summary View",             ""},
+               {"<Main>/View/Expand Message View",             ""},
+               {"<Main>/View/Thread view",                     "<control>T"},
+               {"<Main>/View/Go to/Prev message",              "P"},
+               {"<Main>/View/Go to/Next message",              "N"},
+               {"<Main>/View/Go to/Prev unread message",       "<shift>P"},
+               {"<Main>/View/Go to/Next unread message",       "<shift>N"},
+               {"<Main>/View/Go to/Other folder...",           "<alt>G"},
+               {"<Main>/View/Open in new window",              "<shift><control>N"},
+               {"<Main>/View/View source",                     "<control>U"},
+               {"<Main>/View/Show all headers",                "<control>H"},
+               {"<Main>/View/Update",                          "<alt>U"},
+
+               {"<Main>/Message/Get new mail",                 "<alt>I"},
+               {"<Main>/Message/Get from all accounts",        "<shift><alt>I"},
+               {"<Main>/Message/Compose an email message",     "<alt>N"},
+               {"<Main>/Message/Reply",                        "<alt>R"},
+               {"<Main>/Message/Reply to/all",                 "<shift><alt>R"},
+               {"<Main>/Message/Reply to/sender",              "<control><alt>R"},
+               {"<Main>/Message/Reply to/mailing list",        "<control>L"},
+               {"<Main>/Message/Forward",                       "<shift><alt>F"},
+               /* "(menu-path \"<Main>/Message/Forward as attachment", "<shift><control>F"}, */
+               {"<Main>/Message/Move...",                      "<alt>O"},
+               {"<Main>/Message/Copy...",                      ""},
+               {"<Main>/Message/Delete",                       "<alt>D"},
+               {"<Main>/Message/Mark/Mark",                    "<shift>asterisk"},
+               {"<Main>/Message/Mark/Unmark",                  "U"},
+               {"<Main>/Message/Mark/Mark as unread",          "<shift>exclam"},
+               {"<Main>/Message/Mark/Mark as read",            ""},
+
+               {"<Main>/Tools/Address book",                   "<alt>A"},
+               {"<Main>/Tools/Execute",                        "<alt>X"},
+               {"<Main>/Tools/Log window",                     "<alt>L"},
+
+               {"<Compose>/File/Close",                                "<alt>W"},
+               {"<Compose>/Edit/Select all",                           ""},
+               {"<Compose>/Edit/Advanced/Move a word backward",        "<alt>B"},
+               {"<Compose>/Edit/Advanced/Move a word forward",         "<alt>F"},
+               {"<Compose>/Edit/Advanced/Move to beginning of line",   "<control>A"},
+               {"<Compose>/Edit/Advanced/Delete a word backward",      "<control>W"},
+               {"<Compose>/Edit/Advanced/Delete a word forward",       "<alt>D"},
+       };
+  
+       text = gtk_entry_get_text(entry);
+  
+       if (!strcmp(text, _("Default"))) {
+               menurc = default_menurc;
+               n_menurc = G_N_ELEMENTS(default_menurc);
+       } else if (!strcmp(text, "Mew / Wanderlust")) {
+               menurc = mew_wl_menurc;
+               n_menurc = G_N_ELEMENTS(mew_wl_menurc);
+       } else if (!strcmp(text, "Mutt")) {
+               menurc = mutt_menurc;
+               n_menurc = G_N_ELEMENTS(mutt_menurc);
+       } else if (!strcmp(text, _("Old Sylpheed"))) {
+               menurc = old_sylpheed_menurc;
+               n_menurc = G_N_ELEMENTS(old_sylpheed_menurc);
+       } else {
                return;
                return;
+       }
 
 
-       menu_factory_clear_rc(rc_str);
-       gtk_item_factory_parse_rc_string(rc_str);
+       /* prefs_keybind_apply(empty_menurc, G_N_ELEMENTS(empty_menurc)); */
+       prefs_keybind_apply(menurc, n_menurc);
 
        gtk_widget_destroy(keybind.window);
        keybind.window = NULL;
 
        gtk_widget_destroy(keybind.window);
        keybind.window = NULL;
@@ -3774,7 +3851,7 @@ static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
 
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
 
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
-       charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
+       charset = g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID);
        g_free(*((gchar **)pparam->data));
        *((gchar **)pparam->data) = g_strdup(charset);
 }
        g_free(*((gchar **)pparam->data));
        *((gchar **)pparam->data) = g_strdup(charset);
 }
@@ -3805,7 +3882,7 @@ static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
-               (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+               (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
 }
 
 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
 }
 
 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
@@ -3835,7 +3912,7 @@ static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
-               (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+               (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
 }
 
 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
 }
 
 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
@@ -3901,11 +3978,12 @@ static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                                    gpointer data)
+static gboolean prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                        gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                prefs_common_cancel();
 {
        if (event && event->keyval == GDK_Escape)
                prefs_common_cancel();
+       return FALSE;
 }
 
 static void prefs_common_ok(void)
 }
 
 static void prefs_common_ok(void)
@@ -3918,7 +3996,7 @@ static void prefs_common_ok(void)
 
 static void prefs_common_apply(void)
 {
 
 static void prefs_common_apply(void)
 {
-       gchar *entry_pixmap_theme_str;
+       const gchar *entry_pixmap_theme_str;
        gboolean update_pixmap_theme;
        gchar *backup_theme_path;
        
        gboolean update_pixmap_theme;
        gchar *backup_theme_path;
        
index 4fcf29585f522089effade9b94b2fd0f0454c2dd..c968a48a8278c58f6bd3e2db5137f7333fab91f2 100644 (file)
@@ -125,11 +125,20 @@ struct _PrefsCommon
 #endif
         
        /* Display */
 #endif
         
        /* Display */
+       /* obsolete fonts */
+       gchar *widgetfont_gtk1;
+       gchar *textfont_gtk1;
+       gchar *normalfont_gtk1;
+       gchar *boldfont_gtk1;
+       gchar *smallfont_gtk1;
+
+       /* new fonts */
        gchar *widgetfont;
        gchar *textfont;
        gchar *normalfont;
        gchar *boldfont;
        gchar *smallfont;
        gchar *widgetfont;
        gchar *textfont;
        gchar *normalfont;
        gchar *boldfont;
        gchar *smallfont;
+       gchar *titlefont;
 
        gboolean trans_hdr;
        gboolean display_folder_unread;
 
        gboolean trans_hdr;
        gboolean display_folder_unread;
index 4c92f05898922ba568f71747515b6b54b6ff9ac7..050cd07156931e57300a35f1afb2a194124a404f 100644 (file)
@@ -81,7 +81,7 @@ static void prefs_custom_header_row_moved     (GtkCList       *clist,
                                                 gint            dest_row,
                                                 gpointer        data);
 
                                                 gint            dest_row,
                                                 gpointer        data);
 
-static void prefs_custom_header_key_pressed    (GtkWidget      *widget,
+static gboolean prefs_custom_header_key_pressed        (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_custom_header_ok             (void);
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_custom_header_ok             (void);
@@ -144,9 +144,9 @@ static void prefs_custom_header_create(void)
 
        debug_print("Creating custom header setting window...\n");
 
 
        debug_print("Creating custom header setting window...\n");
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
-       gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
+       gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
        gtk_window_set_policy (GTK_WINDOW (window), FALSE, TRUE, FALSE);
 
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
        gtk_window_set_policy (GTK_WINDOW (window), FALSE, TRUE, FALSE);
 
@@ -162,16 +162,16 @@ static void prefs_custom_header_create(void)
 
        gtk_window_set_title (GTK_WINDOW(window), _("Custom header configuration"));
        MANAGE_WINDOW_SIGNALS_CONNECT (window);
 
        gtk_window_set_title (GTK_WINDOW(window), _("Custom header configuration"));
        MANAGE_WINDOW_SIGNALS_CONNECT (window);
-       gtk_signal_connect (GTK_OBJECT(window), "delete_event",
+       g_signal_connect (G_OBJECT(window), "delete_event",
                            GTK_SIGNAL_FUNC(prefs_custom_header_deleted),
                            NULL);
                            GTK_SIGNAL_FUNC(prefs_custom_header_deleted),
                            NULL);
-       gtk_signal_connect (GTK_OBJECT(window), "key_press_event",
-                           GTK_SIGNAL_FUNC(prefs_custom_header_key_pressed),
-                           NULL);
-       gtk_signal_connect (GTK_OBJECT(ok_btn), "clicked",
-                           GTK_SIGNAL_FUNC(prefs_custom_header_ok), NULL);
-       gtk_signal_connect (GTK_OBJECT(cancel_btn), "clicked",
-                           GTK_SIGNAL_FUNC(prefs_custom_header_cancel), NULL);
+       g_signal_connect (G_OBJECT(window), "key_press_event",
+                         G_CALLBACK(prefs_custom_header_key_pressed),
+                         NULL);
+       g_signal_connect (G_OBJECT(ok_btn), "clicked",
+                         G_CALLBACK(prefs_custom_header_ok), NULL);
+       g_signal_connect (G_OBJECT(cancel_btn), "clicked",
+                         G_CALLBACK(prefs_custom_header_cancel), NULL);
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -197,7 +197,7 @@ static void prefs_custom_header_create(void)
        gtk_table_attach (GTK_TABLE (table1), hdr_combo, 0, 1, 1, 2,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          0, 0, 0);
        gtk_table_attach (GTK_TABLE (table1), hdr_combo, 0, 1, 1, 2,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          0, 0, 0);
-       gtk_widget_set_usize (hdr_combo, 150, -1);
+       gtk_widget_set_size_request (hdr_combo, 150, -1);
        gtkut_combo_set_items (GTK_COMBO (hdr_combo),
                               "User-Agent", "X-Face", "X-Operating-System",
                               NULL);
        gtkut_combo_set_items (GTK_COMBO (hdr_combo),
                               "User-Agent", "X-Face", "X-Operating-System",
                               NULL);
@@ -214,7 +214,7 @@ static void prefs_custom_header_create(void)
        gtk_table_attach (GTK_TABLE (table1), val_entry, 1, 2, 1, 2,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          0, 0, 0);
        gtk_table_attach (GTK_TABLE (table1), val_entry, 1, 2, 1, 2,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          0, 0, 0);
-       gtk_widget_set_usize (val_entry, 200, -1);
+       gtk_widget_set_size_request (val_entry, 200, -1);
 
        /* add / delete */
 
 
        /* add / delete */
 
@@ -225,7 +225,7 @@ static void prefs_custom_header_create(void)
        arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_widget_show (arrow);
        gtk_box_pack_start (GTK_BOX (reg_hbox), arrow, FALSE, FALSE, 0);
        arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_widget_show (arrow);
        gtk_box_pack_start (GTK_BOX (reg_hbox), arrow, FALSE, FALSE, 0);
-       gtk_widget_set_usize (arrow, -1, 16);
+       gtk_widget_set_size_request (arrow, -1, 16);
 
        btn_hbox = gtk_hbox_new (TRUE, 4);
        gtk_widget_show (btn_hbox);
 
        btn_hbox = gtk_hbox_new (TRUE, 4);
        gtk_widget_show (btn_hbox);
@@ -234,16 +234,16 @@ static void prefs_custom_header_create(void)
        add_btn = gtk_button_new_with_label (_("Add"));
        gtk_widget_show (add_btn);
        gtk_box_pack_start (GTK_BOX (btn_hbox), add_btn, FALSE, TRUE, 0);
        add_btn = gtk_button_new_with_label (_("Add"));
        gtk_widget_show (add_btn);
        gtk_box_pack_start (GTK_BOX (btn_hbox), add_btn, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (add_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_custom_header_add_cb),
-                           NULL);
+       g_signal_connect (G_OBJECT (add_btn), "clicked",
+                         G_CALLBACK (prefs_custom_header_add_cb),
+                         NULL);
 
        del_btn = gtk_button_new_with_label (_(" Delete "));
        gtk_widget_show (del_btn);
        gtk_box_pack_start (GTK_BOX (btn_hbox), del_btn, FALSE, TRUE, 0);
 
        del_btn = gtk_button_new_with_label (_(" Delete "));
        gtk_widget_show (del_btn);
        gtk_box_pack_start (GTK_BOX (btn_hbox), del_btn, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (del_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_custom_header_delete_cb),
-                           NULL);
+       g_signal_connect (G_OBJECT (del_btn), "clicked",
+                         G_CALLBACK (prefs_custom_header_delete_cb),
+                         NULL);
 
 
        ch_hbox = gtk_hbox_new (FALSE, 8);
 
 
        ch_hbox = gtk_hbox_new (FALSE, 8);
@@ -251,7 +251,7 @@ static void prefs_custom_header_create(void)
        gtk_box_pack_start (GTK_BOX (vbox1), ch_hbox, TRUE, TRUE, 0);
 
        ch_scrolledwin = gtk_scrolled_window_new (NULL, NULL);
        gtk_box_pack_start (GTK_BOX (vbox1), ch_hbox, TRUE, TRUE, 0);
 
        ch_scrolledwin = gtk_scrolled_window_new (NULL, NULL);
-       gtk_widget_set_usize (ch_scrolledwin, -1, 200);
+       gtk_widget_set_size_request (ch_scrolledwin, -1, 200);
        gtk_widget_show (ch_scrolledwin);
        gtk_box_pack_start (GTK_BOX (ch_hbox), ch_scrolledwin, TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (ch_scrolledwin),
        gtk_widget_show (ch_scrolledwin);
        gtk_box_pack_start (GTK_BOX (ch_hbox), ch_scrolledwin, TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (ch_scrolledwin),
@@ -269,12 +269,12 @@ static void prefs_custom_header_create(void)
        gtk_clist_set_use_drag_icons (GTK_CLIST (customhdr_clist), FALSE);
        GTK_WIDGET_UNSET_FLAGS (GTK_CLIST (customhdr_clist)->column[0].button,
                                GTK_CAN_FOCUS);
        gtk_clist_set_use_drag_icons (GTK_CLIST (customhdr_clist), FALSE);
        GTK_WIDGET_UNSET_FLAGS (GTK_CLIST (customhdr_clist)->column[0].button,
                                GTK_CAN_FOCUS);
-       gtk_signal_connect (GTK_OBJECT (customhdr_clist), "select_row",
-                           GTK_SIGNAL_FUNC (prefs_custom_header_select),
-                           NULL);
-       gtk_signal_connect_after
-               (GTK_OBJECT (customhdr_clist), "row_move",
-                GTK_SIGNAL_FUNC (prefs_custom_header_row_moved), NULL);
+       g_signal_connect (G_OBJECT (customhdr_clist), "select_row",
+                         G_CALLBACK (prefs_custom_header_select),
+                         NULL);
+       g_signal_connect_after
+               (G_OBJECT (customhdr_clist), "row_move",
+                G_CALLBACK (prefs_custom_header_row_moved), NULL);
 
        btn_vbox = gtk_vbox_new (FALSE, 8);
        gtk_widget_show (btn_vbox);
 
        btn_vbox = gtk_vbox_new (FALSE, 8);
        gtk_widget_show (btn_vbox);
@@ -283,14 +283,14 @@ static void prefs_custom_header_create(void)
        up_btn = gtk_button_new_with_label (_("Up"));
        gtk_widget_show (up_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), up_btn, FALSE, FALSE, 0);
        up_btn = gtk_button_new_with_label (_("Up"));
        gtk_widget_show (up_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), up_btn, FALSE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT (up_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_custom_header_up), NULL);
+       g_signal_connect (G_OBJECT (up_btn), "clicked",
+                         G_CALLBACK (prefs_custom_header_up), NULL);
 
        down_btn = gtk_button_new_with_label (_("Down"));
        gtk_widget_show (down_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), down_btn, FALSE, FALSE, 0);
 
        down_btn = gtk_button_new_with_label (_("Down"));
        gtk_widget_show (down_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), down_btn, FALSE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT (down_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_custom_header_down), NULL);
+       g_signal_connect (G_OBJECT (down_btn), "clicked",
+                         G_CALLBACK (prefs_custom_header_down), NULL);
 
        gtk_widget_show_all(window);
 
 
        gtk_widget_show_all(window);
 
@@ -475,7 +475,7 @@ static gint prefs_custom_header_clist_set_row(PrefsAccount *ac, gint row)
 {
        GtkCList *clist = GTK_CLIST(customhdr.customhdr_clist);
        CustomHeader *ch;
 {
        GtkCList *clist = GTK_CLIST(customhdr.customhdr_clist);
        CustomHeader *ch;
-       gchar *entry_text;
+       const gchar *entry_text;
        gchar *ch_str[1];
 
        entry_text = gtk_entry_get_text(GTK_ENTRY(customhdr.hdr_entry));
        gchar *ch_str[1];
 
        entry_text = gtk_entry_get_text(GTK_ENTRY(customhdr.hdr_entry));
@@ -597,12 +597,13 @@ static void prefs_custom_header_row_moved(GtkCList *clist, gint source_row,
        prefs_custom_header_set_list(cur_ac);
 }
 
        prefs_custom_header_set_list(cur_ac);
 }
 
-static void prefs_custom_header_key_pressed(GtkWidget *widget,
-                                           GdkEventKey *event,
-                                           gpointer data)
+static gboolean prefs_custom_header_key_pressed(GtkWidget *widget,
+                                               GdkEventKey *event,
+                                               gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                prefs_custom_header_cancel();
 {
        if (event && event->keyval == GDK_Escape)
                prefs_custom_header_cancel();
+       return FALSE;
 }
 
 static void prefs_custom_header_ok(void)
 }
 
 static void prefs_custom_header_ok(void)
index f9c18493f79dc636fc279ca0a575f0130414fa16..d3b3644918b841849e6dc36e0f133f67b08e076a 100644 (file)
@@ -76,9 +76,9 @@ static void prefs_display_header_row_moved    (GtkCList       *clist,
                                                 gint            dest_row,
                                                 gpointer        data);
 
                                                 gint            dest_row,
                                                 gpointer        data);
 
-static void prefs_display_header_key_pressed   (GtkWidget      *widget,
-                                                GdkEventKey    *event,
-                                                gpointer        data);
+static gboolean prefs_display_header_key_pressed       (GtkWidget      *widget,
+                                                                                                        GdkEventKey    *event,
+                                                                                                        gpointer        data);
 static void prefs_display_header_ok            (void);
 static void prefs_display_header_cancel                (void);
 static gint prefs_display_header_deleted       (GtkWidget      *widget,
 static void prefs_display_header_ok            (void);
 static void prefs_display_header_cancel                (void);
 static gint prefs_display_header_deleted       (GtkWidget      *widget,
@@ -177,9 +177,9 @@ static void prefs_display_header_create(void)
 
        debug_print("Creating display header setting window...\n");
 
 
        debug_print("Creating display header setting window...\n");
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
-       gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
+       gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
        gtk_window_set_policy (GTK_WINDOW (window), FALSE, TRUE, FALSE);
 
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
        gtk_window_set_policy (GTK_WINDOW (window), FALSE, TRUE, FALSE);
 
@@ -200,18 +200,18 @@ static void prefs_display_header_create(void)
        gtk_window_set_title (GTK_WINDOW(window),
                              _("Displayed header configuration"));
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
        gtk_window_set_title (GTK_WINDOW(window),
                              _("Displayed header configuration"));
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
-       gtk_signal_connect (GTK_OBJECT(window), "delete_event",
-                           GTK_SIGNAL_FUNC(prefs_display_header_deleted),
-                           NULL);
-       gtk_signal_connect (GTK_OBJECT(window), "key_press_event",
-                           GTK_SIGNAL_FUNC(prefs_display_header_key_pressed),
-                           NULL);
-       gtk_signal_connect (GTK_OBJECT(ok_btn), "clicked",
-                           GTK_SIGNAL_FUNC(prefs_display_header_ok),
-                           NULL);
-       gtk_signal_connect (GTK_OBJECT(cancel_btn), "clicked",
-                           GTK_SIGNAL_FUNC(prefs_display_header_cancel),
-                           NULL);
+       g_signal_connect (G_OBJECT(window), "delete_event",
+                         G_CALLBACK(prefs_display_header_deleted),
+                         NULL);
+       g_signal_connect (G_OBJECT(window), "key_press_event",
+                         G_CALLBACK(prefs_display_header_key_pressed),
+                         NULL);
+       g_signal_connect (G_OBJECT(ok_btn), "clicked",
+                         G_CALLBACK(prefs_display_header_ok),
+                         NULL);
+       g_signal_connect (G_OBJECT(cancel_btn), "clicked",
+                         G_CALLBACK(prefs_display_header_cancel),
+                         NULL);
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -229,7 +229,7 @@ static void prefs_display_header_create(void)
        hdr_combo = gtk_combo_new ();
        gtk_widget_show (hdr_combo);
        gtk_box_pack_start (GTK_BOX (hbox1), hdr_combo, TRUE, TRUE, 0);
        hdr_combo = gtk_combo_new ();
        gtk_widget_show (hdr_combo);
        gtk_box_pack_start (GTK_BOX (hbox1), hdr_combo, TRUE, TRUE, 0);
-       gtk_widget_set_usize (hdr_combo, 150, -1);
+       gtk_widget_set_size_request (hdr_combo, 150, -1);
        gtkut_combo_set_items (GTK_COMBO (hdr_combo),
                               "From", "To", "Cc", "Subject", "Date",
                               "Reply-To", "Sender", "User-Agent", "X-Mailer",
        gtkut_combo_set_items (GTK_COMBO (hdr_combo),
                               "From", "To", "Cc", "Subject", "Date",
                               "Reply-To", "Sender", "User-Agent", "X-Mailer",
@@ -246,7 +246,7 @@ static void prefs_display_header_create(void)
        gtk_box_pack_start (GTK_BOX (clist_hbox), clist_hbox1, TRUE, TRUE, 0);
 
        clist_scrolledwin = gtk_scrolled_window_new (NULL, NULL);
        gtk_box_pack_start (GTK_BOX (clist_hbox), clist_hbox1, TRUE, TRUE, 0);
 
        clist_scrolledwin = gtk_scrolled_window_new (NULL, NULL);
-       gtk_widget_set_usize (clist_scrolledwin, 200, 210);
+       gtk_widget_set_size_request (clist_scrolledwin, 200, 210);
        gtk_widget_show (clist_scrolledwin);
        gtk_box_pack_start (GTK_BOX (clist_hbox1), clist_scrolledwin,
                            TRUE, TRUE, 0);
        gtk_widget_show (clist_scrolledwin);
        gtk_box_pack_start (GTK_BOX (clist_hbox1), clist_scrolledwin,
                            TRUE, TRUE, 0);
@@ -264,9 +264,9 @@ static void prefs_display_header_create(void)
        gtk_clist_set_use_drag_icons (GTK_CLIST (headers_clist), FALSE);
        GTK_WIDGET_UNSET_FLAGS (GTK_CLIST (headers_clist)->column[0].button,
                                GTK_CAN_FOCUS);
        gtk_clist_set_use_drag_icons (GTK_CLIST (headers_clist), FALSE);
        GTK_WIDGET_UNSET_FLAGS (GTK_CLIST (headers_clist)->column[0].button,
                                GTK_CAN_FOCUS);
-       gtk_signal_connect_after
-               (GTK_OBJECT (headers_clist), "row_move",
-                GTK_SIGNAL_FUNC (prefs_display_header_row_moved), NULL);
+       g_signal_connect_after
+               (G_OBJECT (headers_clist), "row_move",
+                G_CALLBACK (prefs_display_header_row_moved), NULL);
 
        btn_vbox = gtk_vbox_new (FALSE, 8);
        gtk_widget_show (btn_vbox);
 
        btn_vbox = gtk_vbox_new (FALSE, 8);
        gtk_widget_show (btn_vbox);
@@ -275,27 +275,27 @@ static void prefs_display_header_create(void)
        reg_btn = gtk_button_new_with_label (_("Add"));
        gtk_widget_show (reg_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), reg_btn, FALSE, TRUE, 0);
        reg_btn = gtk_button_new_with_label (_("Add"));
        gtk_widget_show (reg_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), reg_btn, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (reg_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_display_header_register_cb),
-                           FALSE);
+       g_signal_connect (G_OBJECT (reg_btn), "clicked",
+                         G_CALLBACK (prefs_display_header_register_cb),
+                         FALSE);
        del_btn = gtk_button_new_with_label (_("Delete"));
        gtk_widget_show (del_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), del_btn, FALSE, TRUE, 0);
        del_btn = gtk_button_new_with_label (_("Delete"));
        gtk_widget_show (del_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), del_btn, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (del_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_display_header_delete_cb),
-                           headers_clist);
+       g_signal_connect (G_OBJECT (del_btn), "clicked",
+                         G_CALLBACK (prefs_display_header_delete_cb),
+                         headers_clist);
 
        up_btn = gtk_button_new_with_label (_("Up"));
        gtk_widget_show (up_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), up_btn, FALSE, FALSE, 0);
 
        up_btn = gtk_button_new_with_label (_("Up"));
        gtk_widget_show (up_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), up_btn, FALSE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT (up_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_display_header_up), NULL);
+       g_signal_connect (G_OBJECT (up_btn), "clicked",
+                         G_CALLBACK (prefs_display_header_up), NULL);
 
        down_btn = gtk_button_new_with_label (_("Down"));
        gtk_widget_show (down_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), down_btn, FALSE, FALSE, 0);
 
        down_btn = gtk_button_new_with_label (_("Down"));
        gtk_widget_show (down_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), down_btn, FALSE, FALSE, 0);
-       gtk_signal_connect (GTK_OBJECT (down_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_display_header_down), NULL);
+       g_signal_connect (G_OBJECT (down_btn), "clicked",
+                         G_CALLBACK (prefs_display_header_down), NULL);
 
        /* hidden headers list */
 
 
        /* hidden headers list */
 
@@ -304,7 +304,7 @@ static void prefs_display_header_create(void)
        gtk_box_pack_start (GTK_BOX (clist_hbox), clist_hbox2, TRUE, TRUE, 0);
 
        clist_scrolledwin = gtk_scrolled_window_new (NULL, NULL);
        gtk_box_pack_start (GTK_BOX (clist_hbox), clist_hbox2, TRUE, TRUE, 0);
 
        clist_scrolledwin = gtk_scrolled_window_new (NULL, NULL);
-       gtk_widget_set_usize (clist_scrolledwin, 200, 210);
+       gtk_widget_set_size_request (clist_scrolledwin, 200, 210);
        gtk_widget_show (clist_scrolledwin);
        gtk_box_pack_start (GTK_BOX (clist_hbox2), clist_scrolledwin,
                            TRUE, TRUE, 0);
        gtk_widget_show (clist_scrolledwin);
        gtk_box_pack_start (GTK_BOX (clist_hbox2), clist_scrolledwin,
                            TRUE, TRUE, 0);
@@ -330,15 +330,15 @@ static void prefs_display_header_create(void)
        reg_btn = gtk_button_new_with_label (_("Add"));
        gtk_widget_show (reg_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), reg_btn, FALSE, TRUE, 0);
        reg_btn = gtk_button_new_with_label (_("Add"));
        gtk_widget_show (reg_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), reg_btn, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (reg_btn), "clicked",
-                           GTK_SIGNAL_FUNC
+       g_signal_connect (G_OBJECT (reg_btn), "clicked",
+                           G_CALLBACK
                            (prefs_display_header_register_cb),
                            (void *) TRUE);
        del_btn = gtk_button_new_with_label (_("Delete"));
        gtk_widget_show (del_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), del_btn, FALSE, TRUE, 0);
                            (prefs_display_header_register_cb),
                            (void *) TRUE);
        del_btn = gtk_button_new_with_label (_("Delete"));
        gtk_widget_show (del_btn);
        gtk_box_pack_start (GTK_BOX (btn_vbox), del_btn, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (del_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_display_header_delete_cb),
+       g_signal_connect (G_OBJECT       (del_btn), "clicked",
+                           G_CALLBACK (prefs_display_header_delete_cb),
                            (void *) hidden_headers_clist);
 
        PACK_CHECK_BUTTON (btn_hbox, checkbtn_other_headers,
                            (void *) hidden_headers_clist);
 
        PACK_CHECK_BUTTON (btn_hbox, checkbtn_other_headers,
@@ -521,7 +521,7 @@ static gint prefs_display_header_clist_set_row(gboolean hidden)
 {
        GtkCList *clist;
        DisplayHeaderProp *dp;
 {
        GtkCList *clist;
        DisplayHeaderProp *dp;
-       gchar *entry_text;
+       const gchar *entry_text;
        gchar *dp_str[1];
        gint row;
 
        gchar *dp_str[1];
        gint row;
 
@@ -609,12 +609,13 @@ static void prefs_display_header_row_moved(GtkCList *clist, gint source_row,
        prefs_display_header_set_list();
 }
 
        prefs_display_header_set_list();
 }
 
-static void prefs_display_header_key_pressed(GtkWidget *widget,
+static gboolean prefs_display_header_key_pressed(GtkWidget *widget,
                                             GdkEventKey *event,
                                             gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                prefs_display_header_cancel();
                                             GdkEventKey *event,
                                             gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                prefs_display_header_cancel();
+       return FALSE;
 }
 
 static void prefs_display_header_ok(void)
 }
 
 static void prefs_display_header_ok(void)
index 02572b272a171507f7a9a7a3e622c3cef54ae1f2..240768fe40e8e39ab2a8c030a7735b53f45d6ea6 100644 (file)
@@ -199,7 +199,7 @@ static void prefs_filtering_create(void)
 
        debug_print("Creating filtering configuration window...\n");
 
 
        debug_print("Creating filtering configuration window...\n");
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
@@ -706,7 +706,7 @@ static void prefs_filtering_condition_define_done(MatcherList * matchers)
 
 static void prefs_filtering_condition_define(void)
 {
 
 static void prefs_filtering_condition_define(void)
 {
-       gchar * cond_str;
+       const gchar * cond_str;
        MatcherList * matchers = NULL;
 
        cond_str = gtk_entry_get_text(GTK_ENTRY(filtering.cond_entry));
        MatcherList * matchers = NULL;
 
        cond_str = gtk_entry_get_text(GTK_ENTRY(filtering.cond_entry));
@@ -740,7 +740,7 @@ static void prefs_filtering_action_define_done(GSList * action_list)
 
 static void prefs_filtering_action_define(void)
 {
 
 static void prefs_filtering_action_define(void)
 {
-       gchar * action_str;
+       const gchar * action_str;
        GSList * action_list = NULL;
 
        action_str = gtk_entry_get_text(GTK_ENTRY(filtering.action_entry));
        GSList * action_list = NULL;
 
        action_str = gtk_entry_get_text(GTK_ENTRY(filtering.action_entry));
@@ -769,8 +769,8 @@ static void prefs_filtering_action_define(void)
 static FilteringProp * prefs_filtering_dialog_to_filtering(gboolean alert)
 {
        MatcherList * cond;
 static FilteringProp * prefs_filtering_dialog_to_filtering(gboolean alert)
 {
        MatcherList * cond;
-       gchar * cond_str;
-       gchar * action_str;
+       const gchar * cond_str;
+       const gchar * action_str;
        FilteringProp * prop;
        GSList * action_list;
 
        FilteringProp * prop;
        GSList * action_list;
 
index 1e10f3dced88143b4c88e6c35e8ac7a2f6e22d4f..68082c067085101f9595df1ff9bdb914b194db3f 100644 (file)
@@ -254,7 +254,7 @@ static void prefs_filtering_action_create(void)
 
        debug_print("Creating matcher configuration window...\n");
 
 
        debug_print("Creating matcher configuration window...\n");
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
@@ -713,7 +713,7 @@ static FilteringAction * prefs_filtering_action_dialog_to_action(gboolean alert)
        gint action_type;
        gint list_id;
        gint account_id;
        gint action_type;
        gint list_id;
        gint account_id;
-       gchar * destination;
+       const gchar * destination;
        gint labelcolor = 0;
         FilteringAction * action;
 
        gint labelcolor = 0;
         FilteringAction * action;
 
index de3de4cc1c12bfdc5109428ff7e0bd83fe7d53fc..7a5c1f99bc6d9229af47e3198aafc40aa8932e25 100644 (file)
@@ -181,14 +181,14 @@ void prefs_folder_item_general_create_widget_func(PrefsPage * _page,
                                  rowcount, rowcount + 1);
 
        folder_color_btn = gtk_button_new_with_label("");
                                  rowcount, rowcount + 1);
 
        folder_color_btn = gtk_button_new_with_label("");
-       gtk_widget_set_usize(folder_color_btn, 36, 26);
+       gtk_widget_set_size_request(folder_color_btn, 36, 26);
        gtk_box_pack_start (GTK_BOX(hbox), folder_color_btn, FALSE, FALSE, 0);
 
        page->folder_color = item->prefs->color;
 
        gtk_box_pack_start (GTK_BOX(hbox), folder_color_btn, FALSE, FALSE, 0);
 
        page->folder_color = item->prefs->color;
 
-       gtk_signal_connect(GTK_OBJECT(folder_color_btn), "clicked",
-                          GTK_SIGNAL_FUNC(folder_color_set_dialog),
-                          page);
+       g_signal_connect(G_OBJECT(folder_color_btn), "clicked",
+                        G_CALLBACK(folder_color_set_dialog),
+                        page);
 
        gtkut_set_widget_bgcolor_rgb(folder_color_btn, item->prefs->color);
 
 
        gtkut_set_widget_bgcolor_rgb(folder_color_btn, item->prefs->color);
 
@@ -489,7 +489,7 @@ void prefs_folder_item_compose_save_func(PrefsPage *_page)
            gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_enable_default_account));
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_default_account));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
            gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_enable_default_account));
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_default_account));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
-       prefs->default_account = GPOINTER_TO_INT(gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+       prefs->default_account = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
 
 #if USE_ASPELL
        prefs->enable_default_dictionary =
 
 #if USE_ASPELL
        prefs->enable_default_dictionary =
index 1cbc09d5690fe9cb863a906a5b51f13b27cfc34c..8797e9683d622559ef00368bc048e2aa47e94e83 100644 (file)
@@ -36,6 +36,7 @@
 #include "gtkutils.h"
 #include "passcrypt.h"
 #include "base64.h"
 #include "gtkutils.h"
 #include "passcrypt.h"
 #include "base64.h"
+#include "codeconv.h"
 
 #define CL(x)  (((gulong) (x) >> (gulong) 8) & 0xFFUL)
 #define RGB_FROM_GDK_COLOR(c) \
 
 #define CL(x)  (((gulong) (x) >> (gulong) 8) & 0xFFUL)
 #define RGB_FROM_GDK_COLOR(c) \
@@ -116,10 +117,23 @@ void prefs_config_parse_one_line(PrefParam *param, const gchar *buf)
 
                switch (param[i].type) {
                case P_STRING:
 
                switch (param[i].type) {
                case P_STRING:
+               {
+#warning FIXME_GTK2
+                       gchar *tmp;
+
+                       tmp = *value ?
+                               conv_codeset_strdup(value,
+                                                   conv_get_current_charset_str(),
+                                                   CS_UTF_8)
+                               : g_strdup("");
+                       if (!tmp) {
+                               g_warning("faild to convert character set.");
+                               tmp = g_strdup(value);
+                       }
                        g_free(*((gchar **)param[i].data));
                        g_free(*((gchar **)param[i].data));
-                       *((gchar **)param[i].data) =
-                               *value ? g_strdup(value) : NULL;
+                       *((gchar **)param[i].data) = tmp;
                        break;
                        break;
+               }
                case P_INT:
                        *((gint *)param[i].data) =
                                (gint)atoi(value);
                case P_INT:
                        *((gint *)param[i].data) =
                                (gint)atoi(value);
@@ -256,10 +270,24 @@ gint prefs_write_param(PrefParam *param, FILE *fp)
        for (i = 0; param[i].name != NULL; i++) {
                switch (param[i].type) {
                case P_STRING:
        for (i = 0; param[i].name != NULL; i++) {
                switch (param[i].type) {
                case P_STRING:
+               {
+#warning FIXME_GTK2
+                       gchar *tmp = NULL;
+
+                       if (*((gchar **)param[i].data)) {
+                               tmp = conv_codeset_strdup(*((gchar **)param[i].data),
+                                                         CS_UTF_8,
+                                                         conv_get_current_charset_str());
+                               if (!tmp)
+                                       tmp = g_strdup(*((gchar **)param[i].data));
+                       }
+
                        g_snprintf(buf, sizeof(buf), "%s=%s\n", param[i].name,
                        g_snprintf(buf, sizeof(buf), "%s=%s\n", param[i].name,
-                                  *((gchar **)param[i].data) ?
-                                  *((gchar **)param[i].data) : "");
+                                  tmp ? tmp : "");
+
+                       g_free(tmp);
                        break;
                        break;
+               }
                case P_INT:
                        g_snprintf(buf, sizeof(buf), "%s=%d\n", param[i].name,
                                   *((gint *)param[i].data));
                case P_INT:
                        g_snprintf(buf, sizeof(buf), "%s=%d\n", param[i].name,
                                   *((gint *)param[i].data));
@@ -326,14 +354,27 @@ void prefs_set_default(PrefParam *param)
                if (!param[i].data) continue;
 
                switch (param[i].type) {
                if (!param[i].data) continue;
 
                switch (param[i].type) {
+#warning FIXME_GTK2
                case P_STRING:
                case P_PASSWORD:
                        g_free(*((gchar **)param[i].data));
                        if (param[i].defval != NULL) {
                case P_STRING:
                case P_PASSWORD:
                        g_free(*((gchar **)param[i].data));
                        if (param[i].defval != NULL) {
-                               if (!strncasecmp(param[i].defval, "ENV_", 4))
-                                       *((gchar **)param[i].data) =
-                                               g_strdup(g_getenv(param[i].defval + 4));
-                               else if (param[i].defval[0] == '~')
+                               if (!strncasecmp(param[i].defval, "ENV_", 4)) {
+                                       const gchar *envstr;
+                                       gchar *tmp;
+
+                                       envstr = g_getenv(param[i].defval + 4);
+                                       tmp = envstr && *envstr ?
+                                               conv_codeset_strdup(envstr,
+                                                                   conv_get_current_charset_str(),
+                                                                   CS_UTF_8)
+                                               : g_strdup("");
+                                       if (!tmp) {
+                                               g_warning("faild to convert character set.");
+                                               tmp = g_strdup(envstr);
+                                       }
+                                       *((gchar **)param[i].data) = tmp;
+                               } else if (param[i].defval[0] == '~')
                                        *((gchar **)param[i].data) =
                                                g_strconcat(get_home_dir(),
                                                            param[i].defval + 1,
                                        *((gchar **)param[i].data) =
                                                g_strconcat(get_home_dir(),
                                                            param[i].defval + 1,
@@ -426,7 +467,7 @@ void prefs_dialog_create(PrefsDialog *dialog)
 
        g_return_if_fail(dialog != NULL);
 
 
        g_return_if_fail(dialog != NULL);
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_position (GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_position (GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
@@ -516,6 +557,7 @@ void prefs_set_dialog_to_default(PrefParam *param)
                switch (tmpparam.type) {
                case P_STRING:
                case P_PASSWORD:
                switch (tmpparam.type) {
                case P_STRING:
                case P_PASSWORD:
+#warning FIXME_GTK2
                        if (tmpparam.defval) {
                                if (!strncasecmp(tmpparam.defval, "ENV_", 4)) {
                                        str_data = g_strdup(g_getenv(param[i].defval + 4));
                        if (tmpparam.defval) {
                                if (!strncasecmp(tmpparam.defval, "ENV_", 4)) {
                                        str_data = g_strdup(g_getenv(param[i].defval + 4));
@@ -576,7 +618,8 @@ void prefs_set_dialog_to_default(PrefParam *param)
 
 void prefs_set_data_from_entry(PrefParam *pparam)
 {
 
 void prefs_set_data_from_entry(PrefParam *pparam)
 {
-       gchar **str, *entry_str;
+       gchar **str;
+       const gchar *entry_str;
 
        g_return_if_fail(*pparam->widget != NULL);
 
 
        g_return_if_fail(*pparam->widget != NULL);
 
@@ -631,7 +674,7 @@ void prefs_set_entry(PrefParam *pparam)
 void prefs_set_data_from_text(PrefParam *pparam)
 {
        gchar **str;
 void prefs_set_data_from_text(PrefParam *pparam)
 {
        gchar **str;
-       gchar *text, *tp;
+       gchar *text = NULL, *tp = NULL;
        gchar *tmp, *tmpp;
 
        g_return_if_fail(*pparam->widget != NULL);
        gchar *tmp, *tmpp;
 
        g_return_if_fail(*pparam->widget != NULL);
@@ -641,8 +684,20 @@ void prefs_set_data_from_text(PrefParam *pparam)
        case P_PASSWORD:
                str = (gchar **)pparam->data;
                g_free(*str);
        case P_PASSWORD:
                str = (gchar **)pparam->data;
                g_free(*str);
-               tp = text = gtk_editable_get_chars
-                       (GTK_EDITABLE(*pparam->widget), 0, -1);
+               if (GTK_IS_EDITABLE(*pparam->widget)) {   /* need? */
+                       tp = text = gtk_editable_get_chars
+                                       (GTK_EDITABLE(*pparam->widget), 0, -1);
+               } else if (GTK_IS_TEXT_VIEW(*pparam->widget)) {
+                       GtkTextView *textview = GTK_TEXT_VIEW(*pparam->widget);
+                       GtkTextBuffer *buffer = gtk_text_view_get_buffer(textview);
+                       GtkTextIter start, end;
+                       gtk_text_buffer_get_start_iter(buffer, &start);
+                       gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
+                       tp = text = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
+               }
+
+               g_return_if_fail (tp && text);
+
                if (text[0] == '\0') {
                        *str = NULL;
                        g_free(text);
                if (text[0] == '\0') {
                        *str = NULL;
                        g_free(text);
@@ -673,7 +728,9 @@ void prefs_set_text(PrefParam *pparam)
 {
        gchar *buf, *sp, *bufp;
        gchar **str;
 {
        gchar *buf, *sp, *bufp;
        gchar **str;
-       GtkText *text;
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
 
        g_return_if_fail(*pparam->widget != NULL);
 
 
        g_return_if_fail(*pparam->widget != NULL);
 
@@ -698,14 +755,14 @@ void prefs_set_text(PrefParam *pparam)
                } else
                        buf = "";
 
                } else
                        buf = "";
 
-               text = GTK_TEXT(*pparam->widget);
-               gtk_text_set_point(text, 0);
-               gtk_text_forward_delete(text, gtk_text_get_length(text));
-               gtk_text_set_point(text, 0);
-               gtk_text_insert(text, NULL, NULL, NULL, buf, -1);
+               text = GTK_TEXT_VIEW(*pparam->widget);
+               buffer = gtk_text_view_get_buffer(text);
+               gtk_text_buffer_set_text(buffer, "\0", -1);
+               gtk_text_buffer_get_start_iter(buffer, &iter);
+               gtk_text_buffer_insert(buffer, &iter, buf, -1);
                break;
        default:
                break;
        default:
-               g_warning("Invalid PrefType for GtkText widget: %d\n",
+               g_warning("Invalid PrefType for GtkTextView widget: %d\n",
                          pparam->type);
        }
 }
                          pparam->type);
        }
 }
index b119a5d518c92493b17518908907fa9b82a17224..570f36a45de2f4855338fea17accaee28ed38fc4 100644 (file)
@@ -357,7 +357,7 @@ static void prefs_matcher_create(void)
 
        debug_print("Creating matcher configuration window...\n");
 
 
        debug_print("Creating matcher configuration window...\n");
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
@@ -1049,10 +1049,10 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void)
        gint value_criteria;
        gboolean use_regexp;
        gboolean case_sensitive;
        gint value_criteria;
        gboolean use_regexp;
        gboolean case_sensitive;
-       gchar *header;
-       gchar *expr;
+       const gchar *header;
+       const gchar *expr;
        gint value;
        gint value;
-       gchar *value_str;
+       const gchar *value_str;
 
        value_criteria = get_sel_from_list(GTK_LIST(matcher.criteria_list));
 
 
        value_criteria = get_sel_from_list(GTK_LIST(matcher.criteria_list));
 
index d39d38717b03d8e4223d633b1520d24f9e04b99d..5987dbaf196b48175d4bc8b3dd289f8b2842be68 100644 (file)
@@ -183,7 +183,7 @@ static void prefs_scoring_create(void)
 
        debug_print("Creating scoring configuration window...\n");
 
 
        debug_print("Creating scoring configuration window...\n");
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (window), TRUE);
@@ -508,7 +508,7 @@ static void prefs_scoring_condition_define_done(MatcherList * matchers)
 
 static void prefs_scoring_condition_define(void)
 {
 
 static void prefs_scoring_condition_define(void)
 {
-       gchar * cond_str;
+       const gchar * cond_str;
        MatcherList * matchers = NULL;
 
        cond_str = gtk_entry_get_text(GTK_ENTRY(scoring.cond_entry));
        MatcherList * matchers = NULL;
 
        cond_str = gtk_entry_get_text(GTK_ENTRY(scoring.cond_entry));
@@ -531,8 +531,8 @@ static void prefs_scoring_condition_define(void)
 static void prefs_scoring_register_cb(void)
 {
        MatcherList * cond;
 static void prefs_scoring_register_cb(void)
 {
        MatcherList * cond;
-       gchar * cond_str;
-       gchar * score_str;
+       const gchar * cond_str;
+       const gchar * score_str;
        ScoringProp * prop;
        gint score;
 
        ScoringProp * prop;
        gint score;
 
@@ -570,8 +570,8 @@ static void prefs_scoring_substitute_cb(void)
        GtkCList *clist = GTK_CLIST(scoring.cond_clist);
        gint row;
        MatcherList * cond;
        GtkCList *clist = GTK_CLIST(scoring.cond_clist);
        gint row;
        MatcherList * cond;
-       gchar * cond_str;
-       gchar * score_str;
+       const gchar * cond_str;
+       const gchar * score_str;
        ScoringProp * prop;
        gint score;
 
        ScoringProp * prop;
        gint score;
 
@@ -722,8 +722,8 @@ static void prefs_scoring_key_pressed(GtkWidget *widget, GdkEventKey *event,
 static void prefs_scoring_ok(void)
 {
        MatcherList * cond;
 static void prefs_scoring_ok(void)
 {
        MatcherList * cond;
-       gchar * cond_str;
-       gchar * score_str;
+       const gchar * cond_str;
+       const gchar * score_str;
        gchar * scoring_str;
        gchar * str;
        ScoringProp * prop;
        gchar * scoring_str;
        gchar * str;
        ScoringProp * prop;
index 6521b6e3db7acbded4001cc0fbc96c4bef0fc326..e6d3282d79a97a6a0c324bd297cb2e31ac364594 100644 (file)
@@ -109,7 +109,7 @@ static void prefs_summary_column_cancel     (void);
 static gint prefs_summary_column_delete_event  (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gpointer        data);
 static gint prefs_summary_column_delete_event  (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gpointer        data);
-static void prefs_summary_column_key_pressed   (GtkWidget      *widget,
+static gboolean prefs_summary_column_key_pressed(GtkWidget     *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 
@@ -169,19 +169,19 @@ static void prefs_summary_column_create(void)
 
        debug_print("Creating summary column setting window...\n");
 
 
        debug_print("Creating summary column setting window...\n");
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
-       gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+       gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
        gtk_window_set_title(GTK_WINDOW(window),
                             _("Displayed items configuration"));
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
        gtk_window_set_title(GTK_WINDOW(window),
                             _("Displayed items configuration"));
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_delete_event),
-                          NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_key_pressed),
-                          NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(prefs_summary_column_delete_event),
+                        NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(prefs_summary_column_key_pressed),
+                        NULL);
 
        vbox = gtk_vbox_new(FALSE, 6);
        gtk_widget_show(vbox);
 
        vbox = gtk_vbox_new(FALSE, 6);
        gtk_widget_show(vbox);
@@ -212,7 +212,7 @@ static void prefs_summary_column_create(void)
        gtk_box_pack_start(GTK_BOX(hbox1), clist_hbox, TRUE, TRUE, 0);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_box_pack_start(GTK_BOX(hbox1), clist_hbox, TRUE, TRUE, 0);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
-       gtk_widget_set_usize(scrolledwin, 180, 210);
+       gtk_widget_set_size_request(scrolledwin, 180, 210);
        gtk_widget_show(scrolledwin);
        gtk_box_pack_start(GTK_BOX(clist_hbox), scrolledwin, TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
        gtk_widget_show(scrolledwin);
        gtk_box_pack_start(GTK_BOX(clist_hbox), scrolledwin, TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
@@ -245,17 +245,17 @@ static void prefs_summary_column_create(void)
        gtk_widget_show(remove_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox1), remove_btn, FALSE, FALSE, 0);
 
        gtk_widget_show(remove_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox1), remove_btn, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(add_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_add), NULL);
-       gtk_signal_connect(GTK_OBJECT(remove_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_remove), NULL);
+       g_signal_connect(G_OBJECT(add_btn), "clicked",
+                        G_CALLBACK(prefs_summary_column_add), NULL);
+       g_signal_connect(G_OBJECT(remove_btn), "clicked",
+                        G_CALLBACK(prefs_summary_column_remove), NULL);
 
        clist_hbox = gtk_hbox_new(FALSE, 8);
        gtk_widget_show(clist_hbox);
        gtk_box_pack_start(GTK_BOX(hbox1), clist_hbox, TRUE, TRUE, 0);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
 
        clist_hbox = gtk_hbox_new(FALSE, 8);
        gtk_widget_show(clist_hbox);
        gtk_box_pack_start(GTK_BOX(hbox1), clist_hbox, TRUE, TRUE, 0);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
-       gtk_widget_set_usize(scrolledwin, 180, 210);
+       gtk_widget_set_size_request(scrolledwin, 180, 210);
        gtk_widget_show(scrolledwin);
        gtk_box_pack_start(GTK_BOX(clist_hbox), scrolledwin, TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
        gtk_widget_show(scrolledwin);
        gtk_box_pack_start(GTK_BOX(clist_hbox), scrolledwin, TRUE, TRUE, 0);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
@@ -290,10 +290,10 @@ static void prefs_summary_column_create(void)
        gtk_widget_show(down_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox1), down_btn, FALSE, FALSE, 0);
 
        gtk_widget_show(down_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox1), down_btn, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(up_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_up), NULL);
-       gtk_signal_connect(GTK_OBJECT(down_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_down), NULL);
+       g_signal_connect(G_OBJECT(up_btn), "clicked",
+                        G_CALLBACK(prefs_summary_column_up), NULL);
+       g_signal_connect(G_OBJECT(down_btn), "clicked",
+                        G_CALLBACK(prefs_summary_column_down), NULL);
 
        btn_hbox = gtk_hbox_new(FALSE, 8);
        gtk_widget_show(btn_hbox);
 
        btn_hbox = gtk_hbox_new(FALSE, 8);
        gtk_widget_show(btn_hbox);
@@ -306,9 +306,9 @@ static void prefs_summary_column_create(void)
        default_btn = gtk_button_new_with_label(_(" Use default "));
        gtk_widget_show(default_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox), default_btn, TRUE, FALSE, 0);
        default_btn = gtk_button_new_with_label(_(" Use default "));
        gtk_widget_show(default_btn);
        gtk_box_pack_start(GTK_BOX(btn_vbox), default_btn, TRUE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(default_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_set_to_default),
-                          NULL);
+       g_signal_connect(G_OBJECT(default_btn), "clicked",
+                        G_CALLBACK(prefs_summary_column_set_to_default),
+                        NULL);
 
        gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
                                &cancel_btn, _("Cancel"), NULL, NULL);
 
        gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
                                &cancel_btn, _("Cancel"), NULL, NULL);
@@ -316,10 +316,10 @@ static void prefs_summary_column_create(void)
        gtk_box_pack_end(GTK_BOX(btn_hbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
        gtk_box_pack_end(GTK_BOX(btn_hbox), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(ok_btn);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_ok), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_summary_column_cancel), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(prefs_summary_column_ok), NULL);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(prefs_summary_column_cancel), NULL);
 
        summary_col.window      = window;
        summary_col.stock_clist = stock_clist;
 
        summary_col.window      = window;
        summary_col.stock_clist = stock_clist;
@@ -534,10 +534,11 @@ static gint prefs_summary_column_delete_event(GtkWidget *widget,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void prefs_summary_column_key_pressed(GtkWidget *widget,
-                                            GdkEventKey *event,
-                                            gpointer data)
+static gboolean prefs_summary_column_key_pressed(GtkWidget *widget,
+                                                GdkEventKey *event,
+                                                gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                summary_col.finished = TRUE;
 {
        if (event && event->keyval == GDK_Escape)
                summary_col.finished = TRUE;
+       return FALSE;
 }
 }
index 6c5ea2d385d25309dc99d3dcf09bdc401c5f3919..9762153f062d5d19beee15cb64df4a318080e86b 100644 (file)
@@ -62,7 +62,7 @@ static GSList *prefs_template_get_list                (void);
 static gint prefs_template_deleted_cb          (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gpointer        data);
 static gint prefs_template_deleted_cb          (GtkWidget      *widget,
                                                 GdkEventAny    *event,
                                                 gpointer        data);
-static void prefs_template_key_pressed_cb      (GtkWidget      *widget,
+static gboolean prefs_template_key_pressed_cb  (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_template_cancel_cb           (void);
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_template_cancel_cb           (void);
@@ -134,8 +134,8 @@ static void prefs_template_window_create(void)
        gchar *title[1];
 
        /* main window */
        gchar *title[1];
 
        /* main window */
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, FALSE);
        gtk_window_set_default_size(GTK_WINDOW(window), 400, -1);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, FALSE);
        gtk_window_set_default_size(GTK_WINDOW(window), 400, -1);
@@ -186,12 +186,12 @@ static void prefs_template_window_create(void)
                                       GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox1), scroll2, TRUE, TRUE, 0);
 
                                       GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox1), scroll2, TRUE, TRUE, 0);
 
-       text_value = gtk_text_new(NULL, NULL);
+       text_value = gtk_text_view_new();
        gtk_widget_show(text_value);
        gtk_widget_show(text_value);
-       gtk_widget_set_usize(text_value, -1, 120);
+       gtk_widget_set_size_request(text_value, -1, 120);
        gtk_container_add(GTK_CONTAINER(scroll2), text_value);
        gtk_container_add(GTK_CONTAINER(scroll2), text_value);
-       gtk_text_set_editable(GTK_TEXT(text_value), TRUE);
-       gtk_text_set_word_wrap(GTK_TEXT(text_value), TRUE);
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(text_value), TRUE);
+       gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text_value), GTK_WRAP_WORD);
 
        /* vbox for buttons and templates list */
        vbox2 = gtk_vbox_new(FALSE, 6);
 
        /* vbox for buttons and templates list */
        vbox2 = gtk_vbox_new(FALSE, 6);
@@ -207,7 +207,7 @@ static void prefs_template_window_create(void)
        arrow1 = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_widget_show(arrow1);
        gtk_box_pack_start(GTK_BOX(hbox2), arrow1, FALSE, FALSE, 0);
        arrow1 = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_widget_show(arrow1);
        gtk_box_pack_start(GTK_BOX(hbox2), arrow1, FALSE, FALSE, 0);
-       gtk_widget_set_usize(arrow1, -1, 16);
+       gtk_widget_set_size_request(arrow1, -1, 16);
 
        hbox3 = gtk_hbox_new(TRUE, 4);
        gtk_widget_show(hbox3);
 
        hbox3 = gtk_hbox_new(TRUE, 4);
        gtk_widget_show(hbox3);
@@ -216,27 +216,27 @@ static void prefs_template_window_create(void)
        reg_btn = gtk_button_new_with_label(_("Add"));
        gtk_widget_show(reg_btn);
        gtk_box_pack_start(GTK_BOX(hbox3), reg_btn, FALSE, TRUE, 0);
        reg_btn = gtk_button_new_with_label(_("Add"));
        gtk_widget_show(reg_btn);
        gtk_box_pack_start(GTK_BOX(hbox3), reg_btn, FALSE, TRUE, 0);
-       gtk_signal_connect(GTK_OBJECT (reg_btn), "clicked",
-                          GTK_SIGNAL_FUNC (prefs_template_register_cb), NULL);
+       g_signal_connect(G_OBJECT (reg_btn), "clicked",
+                        G_CALLBACK (prefs_template_register_cb), NULL);
 
        subst_btn = gtk_button_new_with_label(_("  Replace  "));
        gtk_widget_show(subst_btn);
        gtk_box_pack_start(GTK_BOX(hbox3), subst_btn, FALSE, TRUE, 0);
 
        subst_btn = gtk_button_new_with_label(_("  Replace  "));
        gtk_widget_show(subst_btn);
        gtk_box_pack_start(GTK_BOX(hbox3), subst_btn, FALSE, TRUE, 0);
-       gtk_signal_connect(GTK_OBJECT(subst_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_template_substitute_cb),
-                          NULL);
+       g_signal_connect(G_OBJECT(subst_btn), "clicked",
+                        G_CALLBACK(prefs_template_substitute_cb),
+                        NULL);
 
        del_btn = gtk_button_new_with_label(_("Delete"));
        gtk_widget_show(del_btn);
        gtk_box_pack_start(GTK_BOX(hbox3), del_btn, FALSE, TRUE, 0);
 
        del_btn = gtk_button_new_with_label(_("Delete"));
        gtk_widget_show(del_btn);
        gtk_box_pack_start(GTK_BOX(hbox3), del_btn, FALSE, TRUE, 0);
-       gtk_signal_connect(GTK_OBJECT(del_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_template_delete_cb), NULL);
+       g_signal_connect(G_OBJECT(del_btn), "clicked",
+                        G_CALLBACK(prefs_template_delete_cb), NULL);
 
        desc_btn = gtk_button_new_with_label(_(" Symbols "));
        gtk_widget_show(desc_btn);
        gtk_box_pack_end(GTK_BOX(hbox2), desc_btn, FALSE, FALSE, 0);
 
        desc_btn = gtk_button_new_with_label(_(" Symbols "));
        gtk_widget_show(desc_btn);
        gtk_box_pack_end(GTK_BOX(hbox2), desc_btn, FALSE, FALSE, 0);
-       gtk_signal_connect(GTK_OBJECT(desc_btn), "clicked",
-                          GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
+       g_signal_connect(G_OBJECT(desc_btn), "clicked",
+                        G_CALLBACK(quote_fmt_quote_description), NULL);
 
        /* templates list */
        scroll1 = gtk_scrolled_window_new(NULL, NULL);
 
        /* templates list */
        scroll1 = gtk_scrolled_window_new(NULL, NULL);
@@ -249,15 +249,15 @@ static void prefs_template_window_create(void)
        title[0] = _("Current templates");
        clist_tmpls = gtk_clist_new_with_titles(1, title);
        gtk_widget_show(clist_tmpls);
        title[0] = _("Current templates");
        clist_tmpls = gtk_clist_new_with_titles(1, title);
        gtk_widget_show(clist_tmpls);
-       gtk_widget_set_usize(scroll1, -1, 140);
+       gtk_widget_set_size_request(scroll1, -1, 140);
        gtk_container_add(GTK_CONTAINER(scroll1), clist_tmpls);
        gtk_clist_set_column_width(GTK_CLIST(clist_tmpls), 0, 80);
        gtk_clist_set_selection_mode(GTK_CLIST(clist_tmpls),
                                     GTK_SELECTION_BROWSE);
        GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(clist_tmpls)->column[0].button,
                               GTK_CAN_FOCUS);
        gtk_container_add(GTK_CONTAINER(scroll1), clist_tmpls);
        gtk_clist_set_column_width(GTK_CLIST(clist_tmpls), 0, 80);
        gtk_clist_set_selection_mode(GTK_CLIST(clist_tmpls),
                                     GTK_SELECTION_BROWSE);
        GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(clist_tmpls)->column[0].button,
                               GTK_CAN_FOCUS);
-       gtk_signal_connect(GTK_OBJECT (clist_tmpls), "select_row",
-                          GTK_SIGNAL_FUNC (prefs_template_select_cb), NULL);
+       g_signal_connect(G_OBJECT (clist_tmpls), "select_row",
+                        G_CALLBACK (prefs_template_select_cb), NULL);
 
        /* ok | cancel */
        gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
 
        /* ok | cancel */
        gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
@@ -268,15 +268,15 @@ static void prefs_template_window_create(void)
 
        gtk_window_set_title(GTK_WINDOW(window), _("Template configuration"));
 
 
        gtk_window_set_title(GTK_WINDOW(window), _("Template configuration"));
 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(prefs_template_deleted_cb), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(prefs_template_key_pressed_cb), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(prefs_template_deleted_cb), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(prefs_template_key_pressed_cb), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(prefs_template_ok_cb), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                           GTK_SIGNAL_FUNC(prefs_template_cancel_cb), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(prefs_template_ok_cb), NULL);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(prefs_template_cancel_cb), NULL);
 
        address_completion_start(window);
 
 
        address_completion_start(window);
 
@@ -345,11 +345,12 @@ static gint prefs_template_deleted_cb(GtkWidget *widget, GdkEventAny *event,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void prefs_template_key_pressed_cb(GtkWidget *widget,
-                                         GdkEventKey *event, gpointer data)
+static gboolean prefs_template_key_pressed_cb(GtkWidget *widget,
+                                             GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                prefs_template_cancel_cb();
 {
        if (event && event->keyval == GDK_Escape)
                prefs_template_cancel_cb();
+       return FALSE;
 }
 
 static void prefs_template_ok_cb(void)
 }
 
 static void prefs_template_ok_cb(void)
@@ -376,6 +377,8 @@ static void prefs_template_select_cb(GtkCList *clist, gint row, gint column,
 {
        Template *tmpl;
        Template tmpl_def;
 {
        Template *tmpl;
        Template tmpl_def;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
 
        tmpl_def.name = _("Template");
        tmpl_def.subject = "";
 
        tmpl_def.name = _("Template");
        tmpl_def.subject = "";
@@ -397,14 +400,10 @@ static void prefs_template_select_cb(GtkCList *clist, gint row, gint column,
        gtk_entry_set_text(GTK_ENTRY(templates.entry_subject),
                           tmpl->subject ? tmpl->subject : "");
        
        gtk_entry_set_text(GTK_ENTRY(templates.entry_subject),
                           tmpl->subject ? tmpl->subject : "");
        
-       gtk_text_freeze(GTK_TEXT(templates.text_value));
-       gtk_text_set_point(GTK_TEXT(templates.text_value), 0);
-       gtk_text_forward_delete
-               (GTK_TEXT(templates.text_value), 
-                gtk_text_get_length(GTK_TEXT(templates.text_value)));
-       gtk_text_insert(GTK_TEXT(templates.text_value), NULL, NULL, NULL,
-                       tmpl->value, -1);
-       gtk_text_thaw(GTK_TEXT(templates.text_value));
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(templates.text_value));
+       gtk_text_buffer_set_text(buffer, "\0", -1);
+       gtk_text_buffer_get_start_iter(buffer, &iter);
+       gtk_text_buffer_insert(buffer, &iter, tmpl->value, -1);
 }
 
 static GSList *prefs_template_get_list(void)
 }
 
 static GSList *prefs_template_get_list(void)
@@ -434,11 +433,15 @@ static gint prefs_template_clist_set_row(gint row)
        gchar *bcc;     
        gchar *value;
        gchar *title[1];
        gchar *bcc;     
        gchar *value;
        gchar *title[1];
+       GtkTextBuffer *buffer;
+       GtkTextIter start, end;
 
        g_return_val_if_fail(row != 0, -1);
 
 
        g_return_val_if_fail(row != 0, -1);
 
-       value = gtk_editable_get_chars(GTK_EDITABLE(templates.text_value),
-                                      0, -1);
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(templates.text_value));
+       gtk_text_buffer_get_start_iter(buffer, &start);
+       gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
+       value = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
 
        if (value && *value != '\0') {
                gchar *parsed_buf;
 
        if (value && *value != '\0') {
                gchar *parsed_buf;
index a5d88c3e98ba0add94dec33dd45371cae8945932..82524396c91073e5e4ebb94b0c573557faa2fddb 100644 (file)
@@ -398,7 +398,7 @@ static void prefs_toolbar_register(GtkButton *button, ToolbarPage *prefs_toolbar
 
                if (g_strcasecmp(item[3], syl_act) == 0) {
 
 
                if (g_strcasecmp(item[3], syl_act) == 0) {
 
-                       gchar *entry = gtk_entry_get_text(GTK_ENTRY(prefs_toolbar->combo_syl_entry));
+                       const gchar *entry = gtk_entry_get_text(GTK_ENTRY(prefs_toolbar->combo_syl_entry));
                        get_action_name(entry, &item[2]);
                }
                else {
                        get_action_name(entry, &item[2]);
                }
                else {
@@ -469,7 +469,7 @@ static void prefs_toolbar_substitute(GtkButton *button, ToolbarPage *prefs_toolb
 
                if (g_strcasecmp(item[3], syl_act) == 0) {
 
 
                if (g_strcasecmp(item[3], syl_act) == 0) {
 
-                       gchar *entry = gtk_entry_get_text(GTK_ENTRY(prefs_toolbar->combo_syl_entry));
+                       const gchar *entry = gtk_entry_get_text(GTK_ENTRY(prefs_toolbar->combo_syl_entry));
                        get_action_name(entry, &item[2]);
                } else {
                        item[2] = g_strdup(gtk_entry_get_text(GTK_ENTRY(prefs_toolbar->entry_icon_text)));
                        get_action_name(entry, &item[2]);
                } else {
                        item[2] = g_strdup(gtk_entry_get_text(GTK_ENTRY(prefs_toolbar->entry_icon_text)));
index e008e0585d956b487b5b0ee543e25639a40158b5..1c1a5d5a0b4f9c9daf54a0580b77578098a9bfbc 100644 (file)
@@ -903,6 +903,23 @@ void procheader_date_get_localtime(gchar *dest, gint len, const time_t timer)
                strftime(dest, len, prefs_common.date_format, lt);
        else
                strftime(dest, len, default_format, lt);
                strftime(dest, len, prefs_common.date_format, lt);
        else
                strftime(dest, len, default_format, lt);
+
+#warning FIXME_GTK2
+#if 1
+       {
+               gchar *str;
+               const gchar *src_codeset, *dest_codeset;
+
+               src_codeset = conv_get_current_charset_str();
+               dest_codeset = CS_UTF_8;
+               str = conv_codeset_strdup(dest, src_codeset, dest_codeset);
+               if (str) {
+                       g_snprintf(dest, len, "%s", str);
+                       strncpy2(dest, str, len);
+                       g_free(str);
+               }
+       }
+#endif
 }
 
 gint get_header_from_msginfo(MsgInfo *msginfo, gchar *buf, gint len, gchar *header)
 }
 
 gint get_header_from_msginfo(MsgInfo *msginfo, gchar *buf, gint len, gchar *header)
index a7d433022926e9650ea9998a24f12aa760006c20..13d12bc5d84585697d0b9c65459105075051ddeb 100644 (file)
@@ -885,7 +885,8 @@ FILE *procmime_get_text_content(MimeInfo *mimeinfo, FILE *infp)
                dup2(oldout, 1);
        } else if (mimeinfo->mime_type == MIME_TEXT) {
                while (fgets(buf, sizeof(buf), tmpfp) != NULL) {
                dup2(oldout, 1);
        } else if (mimeinfo->mime_type == MIME_TEXT) {
                while (fgets(buf, sizeof(buf), tmpfp) != NULL) {
-                       str = conv_codeset_strdup(buf, src_codeset, NULL);
+#warning FIXME_GTK2
+                       str = conv_codeset_strdup(buf, src_codeset, CS_UTF_8);
                        if (str) {
                                fputs(str, outfp);
                                g_free(str);
                        if (str) {
                                fputs(str, outfp);
                                g_free(str);
@@ -1043,7 +1044,7 @@ gboolean procmime_find_string(MsgInfo *msginfo, const gchar *str,
 gchar *procmime_get_tmp_file_name(MimeInfo *mimeinfo)
 {
        static guint32 id = 0;
 gchar *procmime_get_tmp_file_name(MimeInfo *mimeinfo)
 {
        static guint32 id = 0;
-       gchar *base;
+       const gchar *base;
        gchar *filename;
        gchar f_prefix[10];
 
        gchar *filename;
        gchar f_prefix[10];
 
@@ -1054,12 +1055,14 @@ gchar *procmime_get_tmp_file_name(MimeInfo *mimeinfo)
        if (MIME_TEXT_HTML == mimeinfo->mime_type)
                base = "mimetmp.html";
        else {
        if (MIME_TEXT_HTML == mimeinfo->mime_type)
                base = "mimetmp.html";
        else {
+               gchar *tmp;
                base = mimeinfo->filename ? mimeinfo->filename
                        : mimeinfo->name ? mimeinfo->name : "mimetmp";
                base = g_basename(base);
                if (*base == '\0') base = "mimetmp";
                base = mimeinfo->filename ? mimeinfo->filename
                        : mimeinfo->name ? mimeinfo->name : "mimetmp";
                base = g_basename(base);
                if (*base == '\0') base = "mimetmp";
-               Xstrdup_a(base, base, return NULL);
-               subst_for_filename(base);
+               Xstrdup_a(tmp, base, return NULL);
+               subst_for_filename(tmp);
+               base = tmp;
        }
 
        filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S,
        }
 
        filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S,
index 0bc416932ae5b677f5511b0f4a5a4c7c94c3d1f3..83d5fb1ae75c2b7ff61937ce4985ac3ca355bcdb 100644 (file)
@@ -241,6 +241,7 @@ GNode  *procmsg_get_thread_tree             (GSList         *mlist);
 void   procmsg_move_messages           (GSList         *mlist);
 void   procmsg_copy_messages           (GSList         *mlist);
 
 void   procmsg_move_messages           (GSList         *mlist);
 void   procmsg_copy_messages           (GSList         *mlist);
 
+/* return path is locale charset */
 gchar  *procmsg_get_message_file_path  (MsgInfo        *msginfo);
 gchar  *procmsg_get_message_file       (MsgInfo        *msginfo);
 GSList *procmsg_get_message_file_list  (MsgInfoList    *mlist);
 gchar  *procmsg_get_message_file_path  (MsgInfo        *msginfo);
 gchar  *procmsg_get_message_file       (MsgInfo        *msginfo);
 GSList *procmsg_get_message_file_list  (MsgInfoList    *mlist);
index 2ff64bcc84c693ff604faa0dcc0afad8cf10f337..b0bf259dbd316b01b533cc3cf6acdc18f6929df2 100644 (file)
@@ -55,8 +55,8 @@ ProgressDialog *progress_dialog_create(void)
        debug_print("Creating progress dialog...\n");
        progress = g_new0(ProgressDialog, 1);
 
        debug_print("Creating progress dialog...\n");
        progress = g_new0(ProgressDialog, 1);
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 460, -1);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 460, -1);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
@@ -94,7 +94,7 @@ ProgressDialog *progress_dialog_create(void)
        clist = gtk_clist_new_with_titles(3, text);
        gtk_widget_show(clist);
        gtk_container_add(GTK_CONTAINER(scrolledwin), clist);
        clist = gtk_clist_new_with_titles(3, text);
        gtk_widget_show(clist);
        gtk_container_add(GTK_CONTAINER(scrolledwin), clist);
-       gtk_widget_set_usize(clist, -1, 120);
+       gtk_widget_set_size_request(clist, -1, 120);
        gtk_clist_set_column_justification(GTK_CLIST(clist), 0,
                                           GTK_JUSTIFY_CENTER);
        gtk_clist_set_column_width(GTK_CLIST(clist), 0, 16);
        gtk_clist_set_column_justification(GTK_CLIST(clist), 0,
                                           GTK_JUSTIFY_CENTER);
        gtk_clist_set_column_width(GTK_CLIST(clist), 0, 16);
index 00da2e04556de5c8d782d387d136c77137a0471b..ee8f2c962048a1fb3035f891df6e20e287fca49d 100644 (file)
@@ -82,8 +82,8 @@ static void open_dialog (struct select_keys_s *sk);
 static void close_dialog (struct select_keys_s *sk);
 static gint delete_event_cb (GtkWidget *widget,
                              GdkEventAny *event, gpointer data);
 static void close_dialog (struct select_keys_s *sk);
 static gint delete_event_cb (GtkWidget *widget,
                              GdkEventAny *event, gpointer data);
-static void key_pressed_cb (GtkWidget *widget,
-                            GdkEventKey *event, gpointer data);
+static gboolean key_pressed_cb (GtkWidget *widget,
+                                GdkEventKey *event, gpointer data);
 static void showall_btn_cb (GtkWidget *widget, gpointer data);
 static void select_btn_cb (GtkWidget *widget, gpointer data);
 static void cancel_btn_cb (GtkWidget *widget, gpointer data);
 static void showall_btn_cb (GtkWidget *widget, gpointer data);
 static void select_btn_cb (GtkWidget *widget, gpointer data);
 static void cancel_btn_cb (GtkWidget *widget, gpointer data);
@@ -267,15 +267,15 @@ create_dialog (struct select_keys_s *sk)
     const char *titles[N_COL_TITLES];
 
     g_assert (!sk->window);
     const char *titles[N_COL_TITLES];
 
     g_assert (!sk->window);
-    window = gtk_window_new (GTK_WINDOW_DIALOG);
-    gtk_widget_set_usize (window, 520, 280);
+    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+    gtk_widget_set_size_request (window, 520, 280);
     gtk_container_set_border_width (GTK_CONTAINER (window), 8);
     gtk_window_set_title (GTK_WINDOW (window), _("Select Keys"));
     gtk_window_set_modal (GTK_WINDOW (window), TRUE);
     gtk_container_set_border_width (GTK_CONTAINER (window), 8);
     gtk_window_set_title (GTK_WINDOW (window), _("Select Keys"));
     gtk_window_set_modal (GTK_WINDOW (window), TRUE);
-    gtk_signal_connect (GTK_OBJECT (window), "delete_event",
-                        GTK_SIGNAL_FUNC (delete_event_cb), sk);
-    gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
-                        GTK_SIGNAL_FUNC (key_pressed_cb), sk);
+    g_signal_connect (G_OBJECT (window), "delete_event",
+                     G_CALLBACK (delete_event_cb), sk);
+    g_signal_connect (G_OBJECT (window), "key_press_event",
+                     G_CALLBACK (key_pressed_cb), sk);
     MANAGE_WINDOW_SIGNALS_CONNECT (window);
 
     vbox = gtk_vbox_new (FALSE, 8);
     MANAGE_WINDOW_SIGNALS_CONNECT (window);
 
     vbox = gtk_vbox_new (FALSE, 8);
@@ -310,12 +310,12 @@ create_dialog (struct select_keys_s *sk)
     gtk_clist_set_column_width (GTK_CLIST(clist), COL_EMAIL,    130);
     gtk_clist_set_column_width (GTK_CLIST(clist), COL_VALIDITY,  20);
     gtk_clist_set_selection_mode (GTK_CLIST(clist), GTK_SELECTION_BROWSE);
     gtk_clist_set_column_width (GTK_CLIST(clist), COL_EMAIL,    130);
     gtk_clist_set_column_width (GTK_CLIST(clist), COL_VALIDITY,  20);
     gtk_clist_set_selection_mode (GTK_CLIST(clist), GTK_SELECTION_BROWSE);
-    gtk_signal_connect (GTK_OBJECT(GTK_CLIST(clist)->column[COL_NAME].button),
-                       "clicked",
-                        GTK_SIGNAL_FUNC(sort_keys_name), sk);
-    gtk_signal_connect (GTK_OBJECT(GTK_CLIST(clist)->column[COL_EMAIL].button),
-                       "clicked",
-                        GTK_SIGNAL_FUNC(sort_keys_email), sk);
+    g_signal_connect (G_OBJECT(GTK_CLIST(clist)->column[COL_NAME].button),
+                     "clicked",
+                     G_CALLBACK(sort_keys_name), sk);
+    g_signal_connect (G_OBJECT(GTK_CLIST(clist)->column[COL_EMAIL].button),
+                     "clicked",
+                     G_CALLBACK(sort_keys_email), sk);
 
     hbox = gtk_hbox_new (FALSE, 8);
     gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
 
     hbox = gtk_hbox_new (FALSE, 8);
     gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
@@ -334,12 +334,12 @@ create_dialog (struct select_keys_s *sk)
     gtk_box_pack_end (GTK_BOX (hbox), bbox, FALSE, FALSE, 0);
     gtk_widget_grab_default (select_btn);
 
     gtk_box_pack_end (GTK_BOX (hbox), bbox, FALSE, FALSE, 0);
     gtk_widget_grab_default (select_btn);
 
-    gtk_signal_connect (GTK_OBJECT (select_btn), "clicked",
-                        GTK_SIGNAL_FUNC (select_btn_cb), sk);
-    gtk_signal_connect (GTK_OBJECT(cancel_btn), "clicked",
-                        GTK_SIGNAL_FUNC (cancel_btn_cb), sk);
-    gtk_signal_connect (GTK_OBJECT (other_btn), "clicked",
-                        GTK_SIGNAL_FUNC (other_btn_cb), sk);
+    g_signal_connect (G_OBJECT (select_btn), "clicked",
+                     G_CALLBACK (select_btn_cb), sk);
+    g_signal_connect (G_OBJECT(cancel_btn), "clicked",
+                     G_CALLBACK (cancel_btn_cb), sk);
+    g_signal_connect (G_OBJECT (other_btn), "clicked",
+                     G_CALLBACK (other_btn_cb), sk);
 
     vbox2 = gtk_vbox_new (FALSE, 4);
     gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
 
     vbox2 = gtk_vbox_new (FALSE, 4);
     gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
@@ -386,16 +386,17 @@ delete_event_cb (GtkWidget *widget, GdkEventAny *event, gpointer data)
 }
 
 
 }
 
 
-static void 
+static gboolean 
 key_pressed_cb (GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
     struct select_keys_s *sk = data;
 
 key_pressed_cb (GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
     struct select_keys_s *sk = data;
 
-    g_return_if_fail (sk);
+    g_return_val_if_fail (sk, FALSE);
     if (event && event->keyval == GDK_Escape) {
         sk->okay = 0;
         gtk_main_quit ();
     }
     if (event && event->keyval == GDK_Escape) {
         sk->okay = 0;
         gtk_main_quit ();
     }
+       return FALSE;
 }
 
 
 }
 
 
index da22a8e00b45672208489e827dd496a7c75234e5..bf346212086658f9093c2fb201df76e09faea9cf 100644 (file)
@@ -84,7 +84,7 @@ static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data)
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        GpgmegtkSigStatus hd = data;
 
 {
        GpgmegtkSigStatus hd = data;
 
@@ -92,6 +92,7 @@ static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
                hd->running = 0;
                do_destroy(hd);
        }
                hd->running = 0;
                do_destroy(hd);
        }
+       return FALSE;
 }
 
 GpgmegtkSigStatus gpgmegtk_sig_status_create(void)
 }
 
 GpgmegtkSigStatus gpgmegtk_sig_status_create(void)
@@ -107,16 +108,16 @@ GpgmegtkSigStatus gpgmegtk_sig_status_create(void)
        hd = g_malloc0(sizeof *hd);
        hd->running = 1;
 
        hd = g_malloc0(sizeof *hd);
        hd->running = 1;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        hd->mainwindow = window;
        hd->mainwindow = window;
-       gtk_widget_set_usize(window, 400, -1);
+       gtk_widget_set_size_request(window, 400, -1);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, FALSE);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, FALSE);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(delete_event), hd);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), hd);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                               G_CALLBACK(delete_event), hd);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), hd);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -135,8 +136,8 @@ GpgmegtkSigStatus gpgmegtk_sig_status_create(void)
                                NULL, NULL, NULL, NULL);
        gtk_box_pack_end(GTK_BOX(vbox), okay_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(okay_btn);
                                NULL, NULL, NULL, NULL);
        gtk_box_pack_end(GTK_BOX(vbox), okay_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(okay_btn);
-       gtk_signal_connect(GTK_OBJECT(okay_btn), "clicked",
-                          GTK_SIGNAL_FUNC(okay_cb), hd);
+       g_signal_connect(G_OBJECT(okay_btn), "clicked",
+                        G_CALLBACK(okay_cb), hd);
 
        gtk_widget_show_all(window);
 
 
        gtk_widget_show_all(window);
 
index 86a1ff73cbcabc8c8ff13273cbb50440847906cc..088b480185bec9a51b7dc908c4b7a49b3615d4d5 100644 (file)
@@ -40,16 +40,12 @@ static void source_window_size_alloc_cb     (GtkWidget      *widget,
                                         GtkAllocation  *allocation);
 static void source_window_destroy_cb   (GtkWidget      *widget,
                                         SourceWindow   *sourcewin);
                                         GtkAllocation  *allocation);
 static void source_window_destroy_cb   (GtkWidget      *widget,
                                         SourceWindow   *sourcewin);
-static void key_pressed                        (GtkWidget      *widget,
+static gboolean key_pressed            (GtkWidget      *widget,
                                         GdkEventKey    *event,
                                         SourceWindow   *sourcewin);
 
                                         GdkEventKey    *event,
                                         SourceWindow   *sourcewin);
 
-static GdkFont *msgfont = NULL;
-
 static void source_window_init()
 {
 static void source_window_init()
 {
-       if (!msgfont && prefs_common.textfont)
-               msgfont = gtkut_font_load(prefs_common.textfont);
 }
 
 SourceWindow *source_window_create(void)
 }
 
 SourceWindow *source_window_create(void)
@@ -58,6 +54,7 @@ SourceWindow *source_window_create(void)
        GtkWidget *window;
        GtkWidget *scrolledwin;
        GtkWidget *text;
        GtkWidget *window;
        GtkWidget *scrolledwin;
        GtkWidget *text;
+       static PangoFontDescription *font_desc = NULL;
 
        debug_print("Creating source window...\n");
        sourcewin = g_new0(SourceWindow, 1);
 
        debug_print("Creating source window...\n");
        sourcewin = g_new0(SourceWindow, 1);
@@ -66,16 +63,16 @@ SourceWindow *source_window_create(void)
        gtk_window_set_title(GTK_WINDOW(window), _("Source of the message"));
        gtk_window_set_wmclass(GTK_WINDOW(window), "source_window", "Sylpheed");
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
        gtk_window_set_title(GTK_WINDOW(window), _("Source of the message"));
        gtk_window_set_wmclass(GTK_WINDOW(window), "source_window", "Sylpheed");
        gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
-       gtk_widget_set_usize(window, prefs_common.sourcewin_width,
-                            prefs_common.sourcewin_height);
-       gtk_signal_connect(GTK_OBJECT(window), "size_allocate",
-                          GTK_SIGNAL_FUNC(source_window_size_alloc_cb),
-                          sourcewin);
-       gtk_signal_connect(GTK_OBJECT(window), "destroy",
-                          GTK_SIGNAL_FUNC(source_window_destroy_cb),
-                          sourcewin);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), sourcewin);
+       gtk_widget_set_size_request(window, prefs_common.sourcewin_width,
+                                   prefs_common.sourcewin_height);
+       g_signal_connect(G_OBJECT(window), "size_allocate",
+                        G_CALLBACK(source_window_size_alloc_cb),
+                        sourcewin);
+       g_signal_connect(G_OBJECT(window), "destroy",
+                        G_CALLBACK(source_window_destroy_cb),
+                        sourcewin);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), sourcewin);
        gtk_widget_realize(window);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_widget_realize(window);
 
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
@@ -84,10 +81,15 @@ SourceWindow *source_window_create(void)
        gtk_container_add(GTK_CONTAINER(window), scrolledwin);
        gtk_widget_show(scrolledwin);
 
        gtk_container_add(GTK_CONTAINER(window), scrolledwin);
        gtk_widget_show(scrolledwin);
 
-       text = gtk_text_new(gtk_scrolled_window_get_hadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)),
-                           gtk_scrolled_window_get_vadjustment
-                           (GTK_SCROLLED_WINDOW(scrolledwin)));
+       text = gtk_text_view_new();
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
+       if (!font_desc && prefs_common.textfont)
+               font_desc = pango_font_description_from_string
+                                       (prefs_common.textfont);
+       if (font_desc) {
+               gtk_widget_modify_font(text, font_desc);
+               pango_font_description_free(font_desc);
+       }
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
        gtk_widget_show(text);
 
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
        gtk_widget_show(text);
 
@@ -135,26 +137,27 @@ void source_window_show_msg(SourceWindow *sourcewin, MsgInfo *msginfo)
        g_free(title);
        g_free(file);
 
        g_free(title);
        g_free(file);
 
-       gtk_text_freeze(GTK_TEXT(sourcewin->text));
-
        while (fgets(buf, sizeof(buf), fp) != NULL)
                source_window_append(sourcewin, buf);
 
        while (fgets(buf, sizeof(buf), fp) != NULL)
                source_window_append(sourcewin, buf);
 
-       gtk_text_thaw(GTK_TEXT(sourcewin->text));
-
        fclose(fp);
 }
 
 void source_window_append(SourceWindow *sourcewin, const gchar *str)
 {
        fclose(fp);
 }
 
 void source_window_append(SourceWindow *sourcewin, const gchar *str)
 {
+       GtkTextView *text = GTK_TEXT_VIEW(sourcewin->text);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextIter iter;
        gchar *out;
        gint len;
 
        len = strlen(str) + 1;
        Xalloca(out, len, return);
        gchar *out;
        gint len;
 
        len = strlen(str) + 1;
        Xalloca(out, len, return);
+#warning FIXME_GTK2
        conv_localetodisp(out, len, str);
        conv_localetodisp(out, len, str);
-       gtk_text_insert(GTK_TEXT(sourcewin->text), msgfont, NULL, NULL,
-                       out, -1);
+
+       gtk_text_buffer_get_iter_at_offset(buffer, &iter, -1);
+       gtk_text_buffer_insert(buffer, &iter, out, -1);
 }
 
 static void source_window_size_alloc_cb(GtkWidget *widget,
 }
 
 static void source_window_size_alloc_cb(GtkWidget *widget,
@@ -172,11 +175,11 @@ static void source_window_destroy_cb(GtkWidget *widget,
        source_window_destroy(sourcewin);
 }
 
        source_window_destroy(sourcewin);
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event,
-                       SourceWindow *sourcewin)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event,
+                           SourceWindow *sourcewin)
 {
 
 {
 
-       if (!event || !sourcewin) return;
+       if (!event || !sourcewin) return FALSE;
        
        switch (event->keyval) {
        case GDK_A:
        
        switch (event->keyval) {
        case GDK_A:
@@ -188,4 +191,6 @@ static void key_pressed(GtkWidget *widget, GdkEventKey *event,
                gtk_widget_destroy(sourcewin->window);
                break;
        }
                gtk_widget_destroy(sourcewin->window);
                break;
        }
+
+       return FALSE;
 }
 }
index f76012c3f449f62a545df0ecf97c74f4d061217d..3c93330af31d8eca2879ef1a9fd039403fc42167 100644 (file)
@@ -20,7 +20,7 @@
 #include "defs.h"
 #include <glib.h>
 #include <gtk/gtkwidget.h>
 #include "defs.h"
 #include <glib.h>
 #include <gtk/gtkwidget.h>
-#include <gtk/gtkpixmap.h>
+#include <gtk/gtkimage.h>
 #include <string.h>
 #include <dirent.h>
 
 #include <string.h>
 #include <dirent.h>
 
@@ -230,7 +230,7 @@ GtkWidget *stock_pixmap_widget(GtkWidget *window, StockPixmap icon)
        g_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, NULL);
 
        if (stock_pixmap_gdk(window, icon, &pixmap, &mask) != -1)
        g_return_val_if_fail(icon >= 0 && icon < N_STOCK_PIXMAPS, NULL);
 
        if (stock_pixmap_gdk(window, icon, &pixmap, &mask) != -1)
-               return gtk_pixmap_new(pixmap, mask);
+               return gtk_image_new_from_pixmap(pixmap, mask);
        
        return NULL;
 }
        
        return NULL;
 }
index 240e04045fb5b988eb33164fc193b04941d36188..3900ae279a27a83458dcbd9ded3322928bfb3009 100644 (file)
@@ -71,7 +71,7 @@ static void from_activated(void);
 static void to_activated(void);
 static void subject_activated(void);
 static void body_activated(void);
 static void to_activated(void);
 static void subject_activated(void);
 static void body_activated(void);
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data);
 
 void summary_search(SummaryView *summaryview)
 {
 
 void summary_search(SummaryView *summaryview)
 {
@@ -96,15 +96,15 @@ static void summary_search_create(SummaryView *summaryview)
        GtkWidget *checkbtn_hbox;
        GtkWidget *confirm_area;
 
        GtkWidget *checkbtn_hbox;
        GtkWidget *confirm_area;
 
-       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title (GTK_WINDOW (window), _("Search messages"));
        gtk_window_set_title (GTK_WINDOW (window), _("Search messages"));
-       gtk_widget_set_usize (window, 450, -1);
+       gtk_widget_set_size_request (window, 450, -1);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete), NULL);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(gtk_widget_hide_on_delete), NULL);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), NULL);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox1 = gtk_vbox_new (FALSE, 0);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
 
        vbox1 = gtk_vbox_new (FALSE, 0);
@@ -122,29 +122,29 @@ static void summary_search_create(SummaryView *summaryview)
        gtk_widget_show (from_entry);
        gtk_table_attach (GTK_TABLE (table1), from_entry, 1, 3, 0, 1,
                          GTK_EXPAND|GTK_FILL, 0, 0, 0);
        gtk_widget_show (from_entry);
        gtk_table_attach (GTK_TABLE (table1), from_entry, 1, 3, 0, 1,
                          GTK_EXPAND|GTK_FILL, 0, 0, 0);
-       gtk_signal_connect(GTK_OBJECT(from_entry), "activate",
-                          GTK_SIGNAL_FUNC(from_activated), summaryview);
+       g_signal_connect(G_OBJECT(from_entry), "activate",
+                        G_CALLBACK(from_activated), summaryview);
 
        to_entry = gtk_entry_new ();
        gtk_widget_show (to_entry);
        gtk_table_attach (GTK_TABLE (table1), to_entry, 1, 3, 1, 2,
                          GTK_EXPAND|GTK_FILL, 0, 0, 0);
 
        to_entry = gtk_entry_new ();
        gtk_widget_show (to_entry);
        gtk_table_attach (GTK_TABLE (table1), to_entry, 1, 3, 1, 2,
                          GTK_EXPAND|GTK_FILL, 0, 0, 0);
-       gtk_signal_connect(GTK_OBJECT(to_entry), "activate",
-                          GTK_SIGNAL_FUNC(to_activated), summaryview);
+       g_signal_connect(G_OBJECT(to_entry), "activate",
+                        G_CALLBACK(to_activated), summaryview);
 
        subject_entry = gtk_entry_new ();
        gtk_widget_show (subject_entry);
        gtk_table_attach (GTK_TABLE (table1), subject_entry, 1, 3, 2, 3,
                          GTK_EXPAND|GTK_FILL, 0, 0, 0);
 
        subject_entry = gtk_entry_new ();
        gtk_widget_show (subject_entry);
        gtk_table_attach (GTK_TABLE (table1), subject_entry, 1, 3, 2, 3,
                          GTK_EXPAND|GTK_FILL, 0, 0, 0);
-       gtk_signal_connect(GTK_OBJECT(subject_entry), "activate",
-                          GTK_SIGNAL_FUNC(subject_activated), summaryview);
+       g_signal_connect(G_OBJECT(subject_entry), "activate",
+                        G_CALLBACK(subject_activated), summaryview);
 
        body_entry = gtk_entry_new ();
        gtk_widget_show (body_entry);
        gtk_table_attach (GTK_TABLE (table1), body_entry, 1, 3, 3, 4,
                          GTK_EXPAND|GTK_FILL, 0, 0, 0);
 
        body_entry = gtk_entry_new ();
        gtk_widget_show (body_entry);
        gtk_table_attach (GTK_TABLE (table1), body_entry, 1, 3, 3, 4,
                          GTK_EXPAND|GTK_FILL, 0, 0, 0);
-       gtk_signal_connect(GTK_OBJECT(body_entry), "activate",
-                          GTK_SIGNAL_FUNC(body_activated), summaryview);
+       g_signal_connect(G_OBJECT(body_entry), "activate",
+                        G_CALLBACK(body_activated), summaryview);
 
        from_label = gtk_label_new (_("From:"));
        gtk_widget_show (from_label);
 
        from_label = gtk_label_new (_("From:"));
        gtk_widget_show (from_label);
@@ -210,17 +210,30 @@ static void summary_search_create(SummaryView *summaryview)
        gtk_box_pack_start (GTK_BOX (vbox1), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(search_btn);
 
        gtk_box_pack_start (GTK_BOX (vbox1), confirm_area, FALSE, FALSE, 0);
        gtk_widget_grab_default(search_btn);
 
-       gtk_signal_connect(GTK_OBJECT(search_btn), "clicked",
-                          GTK_SIGNAL_FUNC(summary_search_execute),
-                          summaryview);
-       gtk_signal_connect(GTK_OBJECT(clear_btn), "clicked",
-                          GTK_SIGNAL_FUNC(summary_search_clear),
-                          summaryview);
-       gtk_signal_connect_object(GTK_OBJECT(close_btn), "clicked",
-                                 GTK_SIGNAL_FUNC(gtk_widget_hide),
-                                 GTK_OBJECT(window));
+       g_signal_connect(G_OBJECT(search_btn), "clicked",
+                        G_CALLBACK(summary_search_execute),
+                        summaryview);
+       g_signal_connect(G_OBJECT(clear_btn), "clicked",
+                        G_CALLBACK(summary_search_clear),
+                        summaryview);
+       g_signal_connect_closure
+               (G_OBJECT(close_btn), "clicked",
+                g_cclosure_new_swap(G_CALLBACK(gtk_widget_hide),
+                                    window, NULL),
+                FALSE);
 }
 
 }
 
+#define GET_ENTRY(entry) gtk_entry_get_text(GTK_ENTRY(entry))
+
+#define SHOW_ERROR_MESSAGE(error) \
+{ \
+   if (error != NULL) { \
+      g_warning("%s\n", error->message); \
+      g_error_free(error); \
+   } \
+}
+
+#warning FIXME_GTK2
 static void summary_search_execute(GtkButton *button, gpointer data)
 {
        SummaryView *summaryview = data;
 static void summary_search_execute(GtkButton *button, gpointer data)
 {
        SummaryView *summaryview = data;
@@ -237,10 +250,12 @@ static void summary_search_execute(GtkButton *button, gpointer data)
        gboolean   to_matched;
        gboolean subj_matched;
        gboolean body_matched;
        gboolean   to_matched;
        gboolean subj_matched;
        gboolean body_matched;
-       gchar *body_str;
+       const gchar *body_str;
        wchar_t *wcs_hs, *fromwcs, *towcs, *subjwcs;
        wchar_t *(* WCSFindFunc) (const wchar_t *haystack,
                                  const wchar_t *needle);
        wchar_t *wcs_hs, *fromwcs, *towcs, *subjwcs;
        wchar_t *(* WCSFindFunc) (const wchar_t *haystack,
                                  const wchar_t *needle);
+       glong items_read, items_written;
+       GError *error = NULL;
 
        if (summary_is_locked(summaryview)) return;
        summary_lock(summaryview);
 
        if (summary_is_locked(summaryview)) return;
        summary_lock(summaryview);
@@ -267,10 +282,19 @@ static void summary_search_execute(GtkButton *button, gpointer data)
        else
                WCSFindFunc = wcscasestr;
 
        else
                WCSFindFunc = wcscasestr;
 
-       fromwcs = (wchar_t *)GTK_ENTRY(from_entry)->text;
-       towcs   = (wchar_t *)GTK_ENTRY(to_entry)->text;
-       subjwcs = (wchar_t *)GTK_ENTRY(subject_entry)->text;
-       body_str = gtk_entry_get_text(GTK_ENTRY(body_entry));
+       fromwcs = (wchar_t *)g_utf8_to_ucs4(GET_ENTRY(from_entry),
+                                           -1, &items_read, &items_written,
+                                           &error);
+       SHOW_ERROR_MESSAGE(error);
+       towcs   = (wchar_t *)g_utf8_to_ucs4(GET_ENTRY(to_entry),
+                                           -1, &items_read, &items_written,
+                                           &error);
+       SHOW_ERROR_MESSAGE(error);
+       subjwcs = (wchar_t *)g_utf8_to_ucs4(GET_ENTRY(subject_entry),
+                                           -1, &items_read, &items_written,
+                                           &error);
+       SHOW_ERROR_MESSAGE(error);
+       body_str = GET_ENTRY(body_entry);
 
        if (search_all) {
                gtk_clist_freeze(GTK_CLIST(ctree));
 
        if (search_all) {
                gtk_clist_freeze(GTK_CLIST(ctree));
@@ -342,31 +366,40 @@ static void summary_search_execute(GtkButton *button, gpointer data)
                
                msginfo = gtk_ctree_node_get_row_data(ctree, node);
 
                
                msginfo = gtk_ctree_node_get_row_data(ctree, node);
 
-               if (*fromwcs && msginfo->from) {
-                       wcs_hs = strdup_mbstowcs(msginfo->from);
+               if (fromwcs && *fromwcs && msginfo->from) {
+                       wcs_hs = (wchar_t *)g_utf8_to_ucs4(msginfo->from,
+                                                           -1, &items_read, &items_written,
+                                                           &error);
+                       SHOW_ERROR_MESSAGE(error);
                        if (wcs_hs && WCSFindFunc(wcs_hs, fromwcs) != NULL)
                                from_matched = TRUE;
                        else
                                all_matched = FALSE;
                        g_free(wcs_hs);
                }       
                        if (wcs_hs && WCSFindFunc(wcs_hs, fromwcs) != NULL)
                                from_matched = TRUE;
                        else
                                all_matched = FALSE;
                        g_free(wcs_hs);
                }       
-               if (*towcs && msginfo->to) {
-                       wcs_hs = strdup_mbstowcs(msginfo->to);
+               if (towcs && *towcs && msginfo->to) {
+                       wcs_hs = (wchar_t *)g_utf8_to_ucs4(msginfo->to,
+                                                           -1, &items_read, &items_written,
+                                                           &error);
+                       SHOW_ERROR_MESSAGE(error);
                        if (wcs_hs && WCSFindFunc(wcs_hs, towcs) != NULL)
                                to_matched = TRUE;
                        else
                                all_matched = FALSE;
                        g_free(wcs_hs);
                }
                        if (wcs_hs && WCSFindFunc(wcs_hs, towcs) != NULL)
                                to_matched = TRUE;
                        else
                                all_matched = FALSE;
                        g_free(wcs_hs);
                }
-               if (*subjwcs && msginfo->subject) {
-                       wcs_hs = strdup_mbstowcs(msginfo->subject);
+               if (subjwcs && *subjwcs && msginfo->subject) {
+                       wcs_hs = (wchar_t *)g_utf8_to_ucs4(msginfo->subject,
+                                                           -1, &items_read, &items_written,
+                                                           &error);
+                       SHOW_ERROR_MESSAGE(error);
                        if (wcs_hs && WCSFindFunc(wcs_hs, subjwcs) != NULL)
                                subj_matched = TRUE;
                        else
                                all_matched = FALSE;
                        g_free(wcs_hs);
                }
                        if (wcs_hs && WCSFindFunc(wcs_hs, subjwcs) != NULL)
                                subj_matched = TRUE;
                        else
                                all_matched = FALSE;
                        g_free(wcs_hs);
                }
-               if (*body_str) {
+               if (body_str && *body_str) {
                        if (procmime_find_string(msginfo, body_str, case_sens))
                                body_matched = TRUE;
                        else
                        if (procmime_find_string(msginfo, body_str, case_sens))
                                body_matched = TRUE;
                        else
@@ -404,9 +437,15 @@ static void summary_search_execute(GtkButton *button, gpointer data)
        if (*body_str)
                main_window_cursor_normal(summaryview->mainwin);
 
        if (*body_str)
                main_window_cursor_normal(summaryview->mainwin);
 
+       g_free(fromwcs);
+       g_free(towcs);
+       g_free(subjwcs);
+
        summary_unlock(summaryview);
 }
 
        summary_unlock(summaryview);
 }
 
+#undef GET_ENTRY
+
 static void summary_search_clear(GtkButton *button, gpointer data)
 {
        gtk_editable_delete_text(GTK_EDITABLE(from_entry),    0, -1);
 static void summary_search_clear(GtkButton *button, gpointer data)
 {
        gtk_editable_delete_text(GTK_EDITABLE(from_entry),    0, -1);
@@ -435,8 +474,9 @@ static void body_activated(void)
        gtk_button_clicked(GTK_BUTTON(search_btn));
 }
 
        gtk_button_clicked(GTK_BUTTON(search_btn));
 }
 
-static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(window);
 {
        if (event && event->keyval == GDK_Escape)
                gtk_widget_hide(window);
+       return FALSE;
 }
 }
index c3cef2a1fcbf1bc145399748fb525b2532da34d7..0af8518311acb1b25a9a008b398ed8326dcbcf86 100644 (file)
@@ -2,7 +2,7 @@
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
  * Copyright (C) 1999-2003 Hiroyuki Yamamoto
  *
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
  * Copyright (C) 1999-2003 Hiroyuki Yamamoto
  *
- * This program is free software; you can redistribute it and/or modify
+ * This program is free software; you can redistributte it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
@@ -91,9 +91,6 @@
 #define SUMMARY_COL_LOCKED_WIDTH       13
 #define SUMMARY_COL_MIME_WIDTH         11
 
 #define SUMMARY_COL_LOCKED_WIDTH       13
 #define SUMMARY_COL_MIME_WIDTH         11
 
-static GdkFont *boldfont;
-static GdkFont *smallfont;
-
 static GtkStyle *bold_style;
 static GtkStyle *bold_marked_style;
 static GtkStyle *bold_deleted_style;
 static GtkStyle *bold_style;
 static GtkStyle *bold_marked_style;
 static GtkStyle *bold_deleted_style;
@@ -257,16 +254,17 @@ static GtkWidget *summary_ctree_create    (SummaryView    *summaryview);
 static gint summary_toggle_pressed     (GtkWidget              *eventbox,
                                         GdkEventButton         *event,
                                         SummaryView            *summaryview);
 static gint summary_toggle_pressed     (GtkWidget              *eventbox,
                                         GdkEventButton         *event,
                                         SummaryView            *summaryview);
-static void summary_button_pressed     (GtkWidget              *ctree,
+static gboolean summary_button_pressed (GtkWidget              *ctree,
                                         GdkEventButton         *event,
                                         SummaryView            *summaryview);
                                         GdkEventButton         *event,
                                         SummaryView            *summaryview);
-static void summary_button_released    (GtkWidget              *ctree,
+static gboolean summary_button_released        (GtkWidget              *ctree,
                                         GdkEventButton         *event,
                                         SummaryView            *summaryview);
                                         GdkEventButton         *event,
                                         SummaryView            *summaryview);
-static gint summary_key_pressed                (GtkWidget              *ctree,
+static gboolean summary_key_pressed    (GtkWidget              *ctree,
                                         GdkEventKey            *event,
                                         SummaryView            *summaryview);
                                         GdkEventKey            *event,
                                         SummaryView            *summaryview);
-static gint summary_searchbar_pressed  (GtkWidget              *ctree,
+static gboolean summary_searchbar_pressed
+                                       (GtkWidget              *ctree,
                                         GdkEventKey            *event,
                                         SummaryView            *summaryview);
 static void summary_searchbar_focus_evt        (GtkWidget              *ctree,
                                         GdkEventKey            *event,
                                         SummaryView            *summaryview);
 static void summary_searchbar_focus_evt        (GtkWidget              *ctree,
@@ -589,9 +587,9 @@ SummaryView *summary_create(void)
        gtk_box_pack_end(GTK_BOX(hbox), toggle_eventbox, FALSE, FALSE, 4);
        toggle_arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_container_add(GTK_CONTAINER(toggle_eventbox), toggle_arrow);
        gtk_box_pack_end(GTK_BOX(hbox), toggle_eventbox, FALSE, FALSE, 4);
        toggle_arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_container_add(GTK_CONTAINER(toggle_eventbox), toggle_arrow);
-       gtk_signal_connect(GTK_OBJECT(toggle_eventbox), "button_press_event",
-                          GTK_SIGNAL_FUNC(summary_toggle_pressed),
-                          summaryview);
+       g_signal_connect(G_OBJECT(toggle_eventbox), "button_press_event",
+                        G_CALLBACK(summary_toggle_pressed),
+                        summaryview);
        
        
        statlabel_msgs = gtk_label_new("");
        
        
        statlabel_msgs = gtk_label_new("");
@@ -605,7 +603,7 @@ SummaryView *summary_create(void)
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
-       gtk_widget_set_usize(vbox,
+       gtk_widget_set_size_request(vbox,
                             prefs_common.summaryview_width,
                             prefs_common.summaryview_height);
 
                             prefs_common.summaryview_width,
                             prefs_common.summaryview_height);
 
@@ -630,21 +628,21 @@ SummaryView *summary_create(void)
 
        search_type = gtk_menu_new();
        MENUITEM_ADD (search_type, menuitem, _("Subject"), S_SEARCH_SUBJECT);
 
        search_type = gtk_menu_new();
        MENUITEM_ADD (search_type, menuitem, _("Subject"), S_SEARCH_SUBJECT);
-       gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
-                          GTK_SIGNAL_FUNC(summary_searchtype_changed),
-                          summaryview);
+       g_signal_connect(G_OBJECT(menuitem), "activate",
+                        G_CALLBACK(summary_searchtype_changed),
+                        summaryview);
        MENUITEM_ADD (search_type, menuitem, _("From"), S_SEARCH_FROM);
        MENUITEM_ADD (search_type, menuitem, _("From"), S_SEARCH_FROM);
-       gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
-                          GTK_SIGNAL_FUNC(summary_searchtype_changed),
-                          summaryview);
+       g_signal_connect(G_OBJECT(menuitem), "activate",
+                        G_CALLBACK(summary_searchtype_changed),
+                        summaryview);
        MENUITEM_ADD (search_type, menuitem, _("To"), S_SEARCH_TO);
        MENUITEM_ADD (search_type, menuitem, _("To"), S_SEARCH_TO);
-       gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
-                          GTK_SIGNAL_FUNC(summary_searchtype_changed),
-                          summaryview);
+       g_signal_connect(G_OBJECT(menuitem), "activate",
+                        G_CALLBACK(summary_searchtype_changed),
+                        summaryview);
        MENUITEM_ADD (search_type, menuitem, _("Extended"), S_SEARCH_EXTENDED);
        MENUITEM_ADD (search_type, menuitem, _("Extended"), S_SEARCH_EXTENDED);
-       gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
-                          GTK_SIGNAL_FUNC(summary_searchtype_changed),
-                          summaryview);
+       g_signal_connect(G_OBJECT(menuitem), "activate",
+                        G_CALLBACK(summary_searchtype_changed),
+                        summaryview);
 
        gtk_option_menu_set_menu(GTK_OPTION_MENU(search_type_opt), search_type);
        
 
        gtk_option_menu_set_menu(GTK_OPTION_MENU(search_type_opt), search_type);
        
@@ -658,27 +656,27 @@ SummaryView *summary_create(void)
        
        gtkut_button_set_create(&search_hbbox, &search_description, _("Extended Symbols"),
                                NULL, NULL, NULL, NULL);
        
        gtkut_button_set_create(&search_hbbox, &search_description, _("Extended Symbols"),
                                NULL, NULL, NULL, NULL);
-       gtk_signal_connect(GTK_OBJECT(search_description), "clicked",
-                          GTK_SIGNAL_FUNC(search_description_cb), NULL);
+       g_signal_connect(G_OBJECT(search_description), "clicked",
+                        G_CALLBACK(search_description_cb), NULL);
        gtk_box_pack_start(GTK_BOX(hbox_search), search_hbbox, FALSE, FALSE, 2);
                                
        gtk_widget_show(search_string);
        gtk_widget_show(hbox_search);
 
        gtk_box_pack_start(GTK_BOX(hbox_search), search_hbbox, FALSE, FALSE, 2);
                                
        gtk_widget_show(search_string);
        gtk_widget_show(hbox_search);
 
-       gtk_signal_connect(GTK_OBJECT(search_string), "key_press_event",
-                          GTK_SIGNAL_FUNC(summary_searchbar_pressed),
-                          summaryview);
+       g_signal_connect(G_OBJECT(search_string), "key_press_event",
+                        G_CALLBACK(summary_searchbar_pressed),
+                        summaryview);
 
 
-       gtk_signal_connect(GTK_OBJECT(search_string), "focus_in_event",
-                          GTK_SIGNAL_FUNC(summary_searchbar_focus_evt),
-                          summaryview);
+       g_signal_connect(G_OBJECT(search_string), "focus_in_event",
+                        G_CALLBACK(summary_searchbar_focus_evt),
+                        summaryview);
 
 
-       gtk_signal_connect(GTK_OBJECT(search_string), "focus_out_event",
-                          GTK_SIGNAL_FUNC(summary_searchbar_focus_evt),
-                          summaryview);
+       g_signal_connect(G_OBJECT(search_string), "focus_out_event",
+                        G_CALLBACK(summary_searchbar_focus_evt),
+                        summaryview);
 
 
-       gtk_signal_connect (GTK_OBJECT(toggle_search), "toggled",
-                        GTK_SIGNAL_FUNC(tog_searchbar_cb), summaryview);
+       g_signal_connect (G_OBJECT(toggle_search), "toggled",
+                         G_CALLBACK(tog_searchbar_cb), summaryview);
 
        /* create popup menu */
        n_entries = sizeof(summary_popup_entries) /
 
        /* create popup menu */
        n_entries = sizeof(summary_popup_entries) /
@@ -752,11 +750,18 @@ void summary_init(SummaryView *summaryview)
                         &gpgsignedxpm, &gpgsignedxpmmask);
 
        if (!small_style) {
                         &gpgsignedxpm, &gpgsignedxpmmask);
 
        if (!small_style) {
+               PangoFontDescription *font_desc = NULL;
+
                small_style = gtk_style_copy
                        (gtk_widget_get_style(summaryview->ctree));
                small_style = gtk_style_copy
                        (gtk_widget_get_style(summaryview->ctree));
-               if (!smallfont)
-                       smallfont = gtkut_font_load(SMALL_FONT);
-               small_style->font = smallfont;
+               if (SMALL_FONT)
+                       font_desc = pango_font_description_from_string
+                                               (SMALL_FONT);
+               if (font_desc) {
+                       if (small_style->font_desc)
+                               pango_font_description_free(small_style->font_desc);
+                       small_style->font_desc = font_desc;
+               }
                small_marked_style = gtk_style_copy(small_style);
                small_marked_style->fg[GTK_STATE_NORMAL] =
                        summaryview->color_marked;
                small_marked_style = gtk_style_copy(small_style);
                small_marked_style->fg[GTK_STATE_NORMAL] =
                        summaryview->color_marked;
@@ -765,11 +770,18 @@ void summary_init(SummaryView *summaryview)
                        summaryview->color_dim;
        }
        if (!bold_style) {
                        summaryview->color_dim;
        }
        if (!bold_style) {
+               PangoFontDescription *font_desc = NULL;
                bold_style = gtk_style_copy
                        (gtk_widget_get_style(summaryview->ctree));
                bold_style = gtk_style_copy
                        (gtk_widget_get_style(summaryview->ctree));
-               if (!boldfont)
-                       boldfont = gtkut_font_load(BOLD_FONT);
-               bold_style->font = boldfont;
+               if (BOLD_FONT)
+                       font_desc = pango_font_description_from_string
+                                               (BOLD_FONT);
+               if (font_desc) {
+                       if (bold_style->font_desc)
+                               pango_font_description_free
+                                       (bold_style->font_desc);
+                       bold_style->font_desc = font_desc;
+               }
                bold_marked_style = gtk_style_copy(bold_style);
                bold_marked_style->fg[GTK_STATE_NORMAL] =
                        summaryview->color_marked;
                bold_marked_style = gtk_style_copy(bold_style);
                bold_marked_style->fg[GTK_STATE_NORMAL] =
                        summaryview->color_marked;
@@ -1014,7 +1026,7 @@ gboolean summary_show(SummaryView *summaryview, FolderItem *item)
                gint search_type = GPOINTER_TO_INT(gtk_object_get_user_data(
                                   GTK_OBJECT(GTK_MENU_ITEM(gtk_menu_get_active(
                                   GTK_MENU(summaryview->search_type))))));
                gint search_type = GPOINTER_TO_INT(gtk_object_get_user_data(
                                   GTK_OBJECT(GTK_MENU_ITEM(gtk_menu_get_active(
                                   GTK_MENU(summaryview->search_type))))));
-               gchar *search_string = gtk_entry_get_text(GTK_ENTRY(summaryview->search_string));
+               const gchar *search_string = gtk_entry_get_text(GTK_ENTRY(summaryview->search_string));
                gchar *searched_header = NULL;
                MatcherList * tmp_list = NULL;
                
                gchar *searched_header = NULL;
                MatcherList * tmp_list = NULL;
                
@@ -1435,12 +1447,15 @@ void summary_select_next_unread(SummaryView *summaryview)
                        }
 
                        if (val == G_ALERTDEFAULT) {
                        }
 
                        if (val == G_ALERTDEFAULT) {
+#warning FIXME_GTK2
+#if 0
                                if (gtk_signal_n_emissions_by_name
                                        (GTK_OBJECT(ctree), "key_press_event") > 0)
                                                gtk_signal_emit_stop_by_name
                                                        (GTK_OBJECT(ctree),
                                                         "key_press_event");
                                folderview_select_next_unread(summaryview->folderview);
                                if (gtk_signal_n_emissions_by_name
                                        (GTK_OBJECT(ctree), "key_press_event") > 0)
                                                gtk_signal_emit_stop_by_name
                                                        (GTK_OBJECT(ctree),
                                                         "key_press_event");
                                folderview_select_next_unread(summaryview->folderview);
+#endif
                                return;
                        } 
                        else
                                return;
                        } 
                        else
@@ -1490,12 +1505,15 @@ void summary_select_next_new(SummaryView *summaryview)
                                   "Go to next folder?"),
                                 _("Yes"), _("Search again"), _("No"));
                if (val == G_ALERTDEFAULT) {
                                   "Go to next folder?"),
                                 _("Yes"), _("Search again"), _("No"));
                if (val == G_ALERTDEFAULT) {
+#warning FIXME_GTK2
+#if 0
                        if (gtk_signal_n_emissions_by_name
                                (GTK_OBJECT(ctree), "key_press_event") > 0)
                                        gtk_signal_emit_stop_by_name
                                                (GTK_OBJECT(ctree),
                                                 "key_press_event");
                        folderview_select_next_unread(summaryview->folderview);
                        if (gtk_signal_n_emissions_by_name
                                (GTK_OBJECT(ctree), "key_press_event") > 0)
                                        gtk_signal_emit_stop_by_name
                                                (GTK_OBJECT(ctree),
                                                 "key_press_event");
                        folderview_select_next_unread(summaryview->folderview);
+#endif
                        return;
                } else if (val == G_ALERTALTERNATE)
                        node = NULL;
                        return;
                } else if (val == G_ALERTALTERNATE)
                        node = NULL;
@@ -1928,9 +1946,9 @@ static void summary_status_show(SummaryView *summaryview)
        gchar *name;
 
        if (!summaryview->folder_item) {
        gchar *name;
 
        if (!summaryview->folder_item) {
-               gtk_label_set(GTK_LABEL(summaryview->statlabel_folder), "");
-               gtk_label_set(GTK_LABEL(summaryview->statlabel_select), "");
-               gtk_label_set(GTK_LABEL(summaryview->statlabel_msgs),   "");
+               gtk_label_set_text(GTK_LABEL(summaryview->statlabel_folder), "");
+               gtk_label_set_text(GTK_LABEL(summaryview->statlabel_select), "");
+               gtk_label_set_text(GTK_LABEL(summaryview->statlabel_msgs),   "");
                return;
        }
 
                return;
        }
 
@@ -1948,7 +1966,7 @@ static void summary_status_show(SummaryView *summaryview)
        }
 
        name = folder_item_get_name(summaryview->folder_item);
        }
 
        name = folder_item_get_name(summaryview->folder_item);
-       gtk_label_set(GTK_LABEL(summaryview->statlabel_folder), name);
+       gtk_label_set_text(GTK_LABEL(summaryview->statlabel_folder), name);
        g_free(name);
 
        if (summaryview->deleted)
        g_free(name);
 
        if (summaryview->deleted)
@@ -1987,7 +2005,7 @@ static void summary_status_show(SummaryView *summaryview)
                
        str = g_strconcat(n_selected ? itos(n_selected) : "",
                                        itstr, sel, spc, del, mv, cp, NULL);
                
        str = g_strconcat(n_selected ? itos(n_selected) : "",
                                        itstr, sel, spc, del, mv, cp, NULL);
-       gtk_label_set(GTK_LABEL(summaryview->statlabel_select), str);
+       gtk_label_set_text(GTK_LABEL(summaryview->statlabel_select), str);
        g_free(str);
        g_free(sel);
        g_free(del);
        g_free(str);
        g_free(sel);
        g_free(del);
@@ -2001,7 +2019,7 @@ static void summary_status_show(SummaryView *summaryview)
                                      summaryview->folder_item->unread_msgs,
                                      summaryview->folder_item->total_msgs,
                                      to_human_readable(summaryview->total_size));
                                      summaryview->folder_item->unread_msgs,
                                      summaryview->folder_item->total_msgs,
                                      to_human_readable(summaryview->total_size));
-       gtk_label_set(GTK_LABEL(summaryview->statlabel_msgs), str);
+       gtk_label_set_text(GTK_LABEL(summaryview->statlabel_msgs), str);
        g_free(str);
 }
 
        g_free(str);
 }
 
@@ -2058,7 +2076,7 @@ static void summary_set_column_titles(SummaryView *summaryview)
                }
 
                if (type == S_COL_MIME) {
                }
 
                if (type == S_COL_MIME) {
-                       label = gtk_pixmap_new(clipxpm, clipxpmmask);
+                       label = gtk_image_new_from_pixmap(clipxpm, clipxpmmask);
                        gtk_widget_show(label);
                        gtk_clist_set_column_widget(clist, pos, label);
                        continue;
                        gtk_widget_show(label);
                        gtk_clist_set_column_widget(clist, pos, label);
                        continue;
@@ -2572,8 +2590,8 @@ void summary_step(SummaryView *summaryview, GtkScrollType type)
        if (messageview_is_visible(summaryview->messageview))
                summaryview->display_msg = TRUE;
 
        if (messageview_is_visible(summaryview->messageview))
                summaryview->display_msg = TRUE;
 
-       gtk_signal_emit_by_name(GTK_OBJECT(ctree), "scroll_vertical",
-                               type, 0.0);
+       g_signal_emit_by_name(G_OBJECT(ctree), "scroll_vertical",
+                             type, 0.0);
 
        if (GTK_CLIST(ctree)->selection)
                gtk_sctree_set_anchor_row
 
        if (GTK_CLIST(ctree)->selection)
                gtk_sctree_set_anchor_row
@@ -3417,7 +3435,21 @@ 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);
        }
-       dest = filesel_select_file(_("Save as"), filename);
+       if (g_getenv ("G_BROKEN_FILENAMES") &&
+           filename && g_utf8_validate(filename, -1, NULL)) {
+               gchar *oldstr = filename;
+               filename = conv_codeset_strdup(filename,
+                                              CS_UTF_8,
+                                              conv_get_current_charset_str());
+               if (!filename) {
+                       g_warning("summary_save_as(): faild to convert character set.");
+                       filename = g_strdup(oldstr);
+               }
+               dest = filesel_select_file(_("Save as"), filename);
+               g_free(filename);
+       } else
+               dest = filesel_select_file(_("Save as"), filename);
+       filename = NULL;
        if (!dest) return;
        if (is_file_exist(dest)) {
                aval = alertpanel(_("Append or Overwrite"),
        if (!dest) return;
        if (is_file_exist(dest)) {
                aval = alertpanel(_("Append or Overwrite"),
@@ -3716,8 +3748,8 @@ void summary_thread_build(SummaryView *summaryview)
        STATUSBAR_PUSH(summaryview->mainwin, _("Building threads..."));
        main_window_cursor_wait(summaryview->mainwin);
 
        STATUSBAR_PUSH(summaryview->mainwin, _("Building threads..."));
        main_window_cursor_wait(summaryview->mainwin);
 
-       gtk_signal_handler_block_by_func(GTK_OBJECT(ctree),
-                                        summary_tree_expanded, summaryview);
+       g_signal_handlers_block_by_func(G_OBJECT(ctree),
+                                      G_CALLBACK(summary_tree_expanded), summaryview);
        gtk_clist_freeze(GTK_CLIST(ctree));
 
        node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
        gtk_clist_freeze(GTK_CLIST(ctree));
 
        node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
@@ -3765,8 +3797,8 @@ void summary_thread_build(SummaryView *summaryview)
        gtkut_ctree_set_focus_row(ctree, summaryview->selected);
 
        gtk_clist_thaw(GTK_CLIST(ctree));
        gtkut_ctree_set_focus_row(ctree, summaryview->selected);
 
        gtk_clist_thaw(GTK_CLIST(ctree));
-       gtk_signal_handler_unblock_by_func(GTK_OBJECT(ctree),
-                                          summary_tree_expanded, summaryview);
+       g_signal_handlers_unblock_by_func(G_OBJECT(ctree),
+                                        G_CALLBACK(summary_tree_expanded), summaryview);
 
        debug_print("done.\n");
        STATUSBAR_POP(summaryview->mainwin);
 
        debug_print("done.\n");
        STATUSBAR_POP(summaryview->mainwin);
@@ -3814,8 +3846,8 @@ void summary_unthread(SummaryView *summaryview)
        STATUSBAR_PUSH(summaryview->mainwin, _("Unthreading..."));
        main_window_cursor_wait(summaryview->mainwin);
        
        STATUSBAR_PUSH(summaryview->mainwin, _("Unthreading..."));
        main_window_cursor_wait(summaryview->mainwin);
        
-       gtk_signal_handler_block_by_func(GTK_OBJECT(ctree),
-                                        summary_tree_collapsed, summaryview);
+       g_signal_handlers_block_by_func(G_OBJECT(ctree),
+                                       summary_tree_collapsed, summaryview);
        gtk_clist_freeze(GTK_CLIST(ctree));
 
        for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
        gtk_clist_freeze(GTK_CLIST(ctree));
 
        for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
@@ -3834,8 +3866,8 @@ void summary_unthread(SummaryView *summaryview)
        gtk_sctree_sort_recursive(ctree, NULL); 
 
        gtk_clist_thaw(GTK_CLIST(ctree));
        gtk_sctree_sort_recursive(ctree, NULL); 
 
        gtk_clist_thaw(GTK_CLIST(ctree));
-       gtk_signal_handler_unblock_by_func(GTK_OBJECT(ctree),
-                                          summary_tree_collapsed, summaryview);
+       g_signal_handlers_unblock_by_func(G_OBJECT(ctree),
+                                          G_CALLBACK(summary_tree_collapsed), summaryview);
 
        debug_print("done.\n");
        STATUSBAR_POP(summaryview->mainwin);
 
        debug_print("done.\n");
        STATUSBAR_POP(summaryview->mainwin);
@@ -4033,11 +4065,11 @@ static void summary_colorlabel_menu_item_activate_cb(GtkWidget *widget,
        guint color = GPOINTER_TO_UINT(data);
        SummaryView *summaryview;
 
        guint color = GPOINTER_TO_UINT(data);
        SummaryView *summaryview;
 
-       summaryview = gtk_object_get_data(GTK_OBJECT(widget), "summaryview");
+       summaryview = g_object_get_data(G_OBJECT(widget), "summaryview");
        g_return_if_fail(summaryview != NULL);
 
        /* "dont_toggle" state set? */
        g_return_if_fail(summaryview != NULL);
 
        /* "dont_toggle" state set? */
-       if (gtk_object_get_data(GTK_OBJECT(summaryview->colorlabel_menu),
+       if (g_object_get_data(G_OBJECT(summaryview->colorlabel_menu),
                                "dont_toggle"))
                return;
 
                                "dont_toggle"))
                return;
 
@@ -4132,13 +4164,13 @@ static void summary_colorlabel_menu_item_activate_item_cb(GtkMenuItem *menu_item
 
        /* NOTE: don't return prematurely because we set the "dont_toggle"
         * state for check menu items */
 
        /* NOTE: don't return prematurely because we set the "dont_toggle"
         * state for check menu items */
-       gtk_object_set_data(GTK_OBJECT(menu), "dont_toggle",
-                           GINT_TO_POINTER(1));
+       g_object_set_data(G_OBJECT(menu), "dont_toggle",
+                         GINT_TO_POINTER(1));
 
        /* clear items. get item pointers. */
        for (n = 0, cur = menu->children; cur != NULL; cur = cur->next) {
                if (GTK_IS_CHECK_MENU_ITEM(cur->data)) {
 
        /* clear items. get item pointers. */
        for (n = 0, cur = menu->children; cur != NULL; cur = cur->next) {
                if (GTK_IS_CHECK_MENU_ITEM(cur->data)) {
-                       gtk_check_menu_item_set_state
+                       gtk_check_menu_item_set_active
                                (GTK_CHECK_MENU_ITEM(cur->data), FALSE);
                        items[n] = GTK_CHECK_MENU_ITEM(cur->data);
                        n++;
                                (GTK_CHECK_MENU_ITEM(cur->data), FALSE);
                        items[n] = GTK_CHECK_MENU_ITEM(cur->data);
                        n++;
@@ -4158,7 +4190,7 @@ static void summary_colorlabel_menu_item_activate_item_cb(GtkMenuItem *menu_item
                        if (msginfo) {
                                clabel = MSG_GET_COLORLABEL_VALUE(msginfo->flags);
                                if (!items[clabel]->active)
                        if (msginfo) {
                                clabel = MSG_GET_COLORLABEL_VALUE(msginfo->flags);
                                if (!items[clabel]->active)
-                                       gtk_check_menu_item_set_state
+                                       gtk_check_menu_item_set_active
                                                (items[clabel], TRUE);
                        }
                }
                                                (items[clabel], TRUE);
                        }
                }
@@ -4166,8 +4198,8 @@ static void summary_colorlabel_menu_item_activate_item_cb(GtkMenuItem *menu_item
                g_warning("invalid number of color elements (%d)\n", n);
 
        /* reset "dont_toggle" state */
                g_warning("invalid number of color elements (%d)\n", n);
 
        /* reset "dont_toggle" state */
-       gtk_object_set_data(GTK_OBJECT(menu), "dont_toggle",
-                           GINT_TO_POINTER(0));
+       g_object_set_data(G_OBJECT(menu), "dont_toggle",
+                         GINT_TO_POINTER(0));
 }
 
 static void summary_colorlabel_menu_create(SummaryView *summaryview)
 }
 
 static void summary_colorlabel_menu_create(SummaryView *summaryview)
@@ -4179,8 +4211,8 @@ static void summary_colorlabel_menu_create(SummaryView *summaryview)
 
        label_menuitem = gtk_item_factory_get_item(summaryview->popupfactory,
                                                   "/Color label");
 
        label_menuitem = gtk_item_factory_get_item(summaryview->popupfactory,
                                                   "/Color label");
-       gtk_signal_connect(GTK_OBJECT(label_menuitem), "activate",
-                          GTK_SIGNAL_FUNC(summary_colorlabel_menu_item_activate_item_cb),
+       g_signal_connect(G_OBJECT(label_menuitem), "activate",
+                        G_CALLBACK(summary_colorlabel_menu_item_activate_item_cb),
                           summaryview);
        gtk_widget_show(label_menuitem);
 
                           summaryview);
        gtk_widget_show(label_menuitem);
 
@@ -4192,26 +4224,26 @@ static void summary_colorlabel_menu_create(SummaryView *summaryview)
         * can always get back the SummaryView pointer. */
 
        item = gtk_check_menu_item_new_with_label(_("None"));
         * can always get back the SummaryView pointer. */
 
        item = gtk_check_menu_item_new_with_label(_("None"));
-       gtk_menu_append(GTK_MENU(menu), item);
-       gtk_signal_connect(GTK_OBJECT(item), "activate",
-                          GTK_SIGNAL_FUNC(summary_colorlabel_menu_item_activate_cb),
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+       g_signal_connect(G_OBJECT(item), "activate",
+                        G_CALLBACK(summary_colorlabel_menu_item_activate_cb),
                           GUINT_TO_POINTER(0));
                           GUINT_TO_POINTER(0));
-       gtk_object_set_data(GTK_OBJECT(item), "summaryview", summaryview);
+       g_object_set_data(G_OBJECT(item), "summaryview", summaryview);
        gtk_widget_show(item);
 
        item = gtk_menu_item_new();
        gtk_widget_show(item);
 
        item = gtk_menu_item_new();
-       gtk_menu_append(GTK_MENU(menu), item);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
        gtk_widget_show(item);
 
        /* create pixmap/label menu items */
        for (i = 0; i < N_COLOR_LABELS; i++) {
                item = colorlabel_create_check_color_menu_item(i);
        gtk_widget_show(item);
 
        /* create pixmap/label menu items */
        for (i = 0; i < N_COLOR_LABELS; i++) {
                item = colorlabel_create_check_color_menu_item(i);
-               gtk_menu_append(GTK_MENU(menu), item);
-               gtk_signal_connect(GTK_OBJECT(item), "activate",
-                                  GTK_SIGNAL_FUNC(summary_colorlabel_menu_item_activate_cb),
-                                  GUINT_TO_POINTER(i + 1));
-               gtk_object_set_data(GTK_OBJECT(item), "summaryview",
-                                   summaryview);
+               gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+               g_signal_connect(G_OBJECT(item), "activate",
+                                G_CALLBACK(summary_colorlabel_menu_item_activate_cb),
+                                GUINT_TO_POINTER(i + 1));
+               g_object_set_data(G_OBJECT(item), "summaryview",
+                                 summaryview);
                gtk_widget_show(item);
        }
 
                gtk_widget_show(item);
        }
 
@@ -4286,7 +4318,7 @@ static GtkWidget *summary_ctree_create(SummaryView *summaryview)
                                     GTK_CTREE_EXPANDER_TRIANGLE);
 #endif
        gtk_ctree_set_indent(GTK_CTREE(ctree), 16);
                                     GTK_CTREE_EXPANDER_TRIANGLE);
 #endif
        gtk_ctree_set_indent(GTK_CTREE(ctree), 16);
-       gtk_object_set_user_data(GTK_OBJECT(ctree), summaryview);
+       g_object_set_data(G_OBJECT(ctree), "user_data", summaryview);
 
        for (pos = 0; pos < N_SUMMARY_COLS; pos++) {
                GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(ctree)->column[pos].button,
 
        for (pos = 0; pos < N_SUMMARY_COLS; pos++) {
                GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(ctree)->column[pos].button,
@@ -4297,10 +4329,10 @@ static GtkWidget *summary_ctree_create(SummaryView *summaryview)
 
        /* connect signal to the buttons for sorting */
 #define CLIST_BUTTON_SIGNAL_CONNECT(col, func) \
 
        /* connect signal to the buttons for sorting */
 #define CLIST_BUTTON_SIGNAL_CONNECT(col, func) \
-       gtk_signal_connect \
-               (GTK_OBJECT(GTK_CLIST(ctree)->column[col_pos[col]].button), \
+       g_signal_connect \
+               (G_OBJECT(GTK_CLIST(ctree)->column[col_pos[col]].button), \
                 "clicked", \
                 "clicked", \
-                GTK_SIGNAL_FUNC(func), \
+                G_CALLBACK(func), \
                 summaryview)
 
        CLIST_BUTTON_SIGNAL_CONNECT(S_COL_MARK   , summary_mark_clicked);
                 summaryview)
 
        CLIST_BUTTON_SIGNAL_CONNECT(S_COL_MARK   , summary_mark_clicked);
@@ -4316,34 +4348,34 @@ static GtkWidget *summary_ctree_create(SummaryView *summaryview)
 
 #undef CLIST_BUTTON_SIGNAL_CONNECT
 
 
 #undef CLIST_BUTTON_SIGNAL_CONNECT
 
-       gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row",
-                          GTK_SIGNAL_FUNC(summary_selected), summaryview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "button_press_event",
-                          GTK_SIGNAL_FUNC(summary_button_pressed),
-                          summaryview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "button_release_event",
-                          GTK_SIGNAL_FUNC(summary_button_released),
-                          summaryview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "key_press_event",
-                          GTK_SIGNAL_FUNC(summary_key_pressed), summaryview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "resize_column",
-                          GTK_SIGNAL_FUNC(summary_col_resized), summaryview);
-        gtk_signal_connect(GTK_OBJECT(ctree), "open_row",
-                          GTK_SIGNAL_FUNC(summary_open_row), summaryview);
-
-       gtk_signal_connect_after(GTK_OBJECT(ctree), "tree_expand",
-                                GTK_SIGNAL_FUNC(summary_tree_expanded),
-                                summaryview);
-       gtk_signal_connect_after(GTK_OBJECT(ctree), "tree_collapse",
-                                GTK_SIGNAL_FUNC(summary_tree_collapsed),
-                                summaryview);
-
-       gtk_signal_connect(GTK_OBJECT(ctree), "start_drag",
-                          GTK_SIGNAL_FUNC(summary_start_drag),
-                          summaryview);
-       gtk_signal_connect(GTK_OBJECT(ctree), "drag_data_get",
-                          GTK_SIGNAL_FUNC(summary_drag_data_get),
-                          summaryview);
+       g_signal_connect(G_OBJECT(ctree), "tree_select_row",
+                        G_CALLBACK(summary_selected), summaryview);
+       g_signal_connect(G_OBJECT(ctree), "button_press_event",
+                        G_CALLBACK(summary_button_pressed),
+                        summaryview);
+       g_signal_connect(G_OBJECT(ctree), "button_release_event",
+                        G_CALLBACK(summary_button_released),
+                        summaryview);
+       g_signal_connect(G_OBJECT(ctree), "key_press_event",
+                        G_CALLBACK(summary_key_pressed), summaryview);
+       g_signal_connect(G_OBJECT(ctree), "resize_column",
+                        G_CALLBACK(summary_col_resized), summaryview);
+        g_signal_connect(G_OBJECT(ctree), "open_row",
+                        G_CALLBACK(summary_open_row), summaryview);
+
+       g_signal_connect_after(G_OBJECT(ctree), "tree_expand",
+                              G_CALLBACK(summary_tree_expanded),
+                              summaryview);
+       g_signal_connect_after(G_OBJECT(ctree), "tree_collapse",
+                              G_CALLBACK(summary_tree_collapsed),
+                              summaryview);
+
+       g_signal_connect(G_OBJECT(ctree), "start_drag",
+                        G_CALLBACK(summary_start_drag),
+                        summaryview);
+       g_signal_connect(G_OBJECT(ctree), "drag_data_get",
+                        G_CALLBACK(summary_drag_data_get),
+                        summaryview);
 
        return ctree;
 }
 
        return ctree;
 }
@@ -4363,7 +4395,7 @@ void summary_set_column_order(SummaryView *summaryview)
        gtk_widget_destroy(summaryview->ctree);
 
        summaryview->ctree = ctree = summary_ctree_create(summaryview);
        gtk_widget_destroy(summaryview->ctree);
 
        summaryview->ctree = ctree = summary_ctree_create(summaryview);
-       pixmap = gtk_pixmap_new(clipxpm, clipxpmmask);
+       pixmap = gtk_image_new_from_pixmap(clipxpm, clipxpmmask);
        gtk_clist_set_column_widget(GTK_CLIST(ctree),
                                    summaryview->col_pos[S_COL_MIME], pixmap);
        gtk_widget_show(pixmap);
        gtk_clist_set_column_widget(GTK_CLIST(ctree),
                                    summaryview->col_pos[S_COL_MIME], pixmap);
        gtk_widget_show(pixmap);
@@ -4395,10 +4427,10 @@ static gint summary_toggle_pressed(GtkWidget *eventbox, GdkEventButton *event,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static void summary_button_pressed(GtkWidget *ctree, GdkEventButton *event,
-                                  SummaryView *summaryview)
+static gboolean summary_button_pressed(GtkWidget *ctree, GdkEventButton *event,
+                                      SummaryView *summaryview)
 {
 {
-       if (!event) return;
+       if (!event) return FALSE;
 
        if (event->button == 3) {
                summaryview->display_msg = TRUE;
 
        if (event->button == 3) {
                summaryview->display_msg = TRUE;
@@ -4412,11 +4444,14 @@ static void summary_button_pressed(GtkWidget *ctree, GdkEventButton *event,
                    messageview_is_visible(summaryview->messageview))
                        summaryview->display_msg = TRUE;
        }
                    messageview_is_visible(summaryview->messageview))
                        summaryview->display_msg = TRUE;
        }
+
+       return FALSE;
 }
 
 }
 
-static void summary_button_released(GtkWidget *ctree, GdkEventButton *event,
-                                   SummaryView *summaryview)
+static gboolean summary_button_released(GtkWidget *ctree, GdkEventButton *event,
+                                       SummaryView *summaryview)
 {
 {
+       return FALSE;
 }
 
 void summary_pass_key_press_event(SummaryView *summaryview, GdkEventKey *event)
 }
 
 void summary_pass_key_press_event(SummaryView *summaryview, GdkEventKey *event)
@@ -4430,8 +4465,8 @@ void summary_pass_key_press_event(SummaryView *summaryview, GdkEventKey *event)
 #define RETURN_IF_LOCKED() \
        if (summaryview->mainwin->lock_count) return TRUE
 
 #define RETURN_IF_LOCKED() \
        if (summaryview->mainwin->lock_count) return TRUE
 
-static gint summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                               SummaryView *summaryview)
+static gboolean summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                   SummaryView *summaryview)
 {
        GtkCTree *ctree = GTK_CTREE(widget);
        GtkCTreeNode *node;
 {
        GtkCTree *ctree = GTK_CTREE(widget);
        GtkCTreeNode *node;
@@ -4509,8 +4544,8 @@ static gint summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
        return TRUE;
 }
 
        return TRUE;
 }
 
-static gint summary_searchbar_pressed(GtkWidget *widget, GdkEventKey *event,
-                               SummaryView *summaryview)
+static gboolean summary_searchbar_pressed(GtkWidget *widget, GdkEventKey *event,
+                                         SummaryView *summaryview)
 {
        if (event != NULL && event->keyval == GDK_Return)
                summary_show(summaryview, summaryview->folder_item);
 {
        if (event != NULL && event->keyval == GDK_Return)
                summary_show(summaryview, summaryview->folder_item);
@@ -4521,13 +4556,13 @@ static void summary_searchbar_focus_evt(GtkWidget *widget, GdkEventFocus *event,
                                SummaryView *summaryview)
 {
        if (event != NULL && event->in)
                                SummaryView *summaryview)
 {
        if (event != NULL && event->in)
-               gtk_signal_handler_block_by_func(GTK_OBJECT(summaryview->mainwin->window), 
-                                                GTK_SIGNAL_FUNC(mainwindow_key_pressed),
-                                                summaryview->mainwin);
+               g_signal_handlers_block_by_func(G_OBJECT(summaryview->mainwin->window), 
+                                               G_CALLBACK(mainwindow_key_pressed),
+                                               summaryview->mainwin);
        else
        else
-               gtk_signal_handler_unblock_by_func(GTK_OBJECT(summaryview->mainwin->window), 
-                                                  GTK_SIGNAL_FUNC(mainwindow_key_pressed),
-                                                  summaryview->mainwin);
+               g_signal_handlers_unblock_by_func(G_OBJECT(summaryview->mainwin->window), 
+                                                 G_CALLBACK(mainwindow_key_pressed),
+                                                 summaryview->mainwin);
 }
 
 static void summary_searchtype_changed(GtkMenuItem *widget, gpointer data)
 }
 
 static void summary_searchtype_changed(GtkMenuItem *widget, gpointer data)
index 9e0070b260ee0cb1819cb1b8be4da955bd9d5917..11581a26042dd8227a32b762c65251efbc9231b7 100644 (file)
@@ -40,7 +40,6 @@
 #include "procheader.h"
 #include "prefs_common.h"
 #include "codeconv.h"
 #include "procheader.h"
 #include "prefs_common.h"
 #include "codeconv.h"
-#include "gtkstext.h"
 #include "utils.h"
 #include "gtkutils.h"
 #include "procmime.h"
 #include "utils.h"
 #include "gtkutils.h"
 #include "procmime.h"
@@ -121,14 +120,6 @@ static GdkColor bad_sig_color = {
 };
 #endif
 
 };
 #endif
 
-static GdkFont *text_sb_font;
-static GdkFont *text_mb_font;
-static gint text_sb_font_orig_ascent;
-static gint text_sb_font_orig_descent;
-static gint text_mb_font_orig_ascent;
-static gint text_mb_font_orig_descent;
-static GdkFont *spacingfont;
-
 static void textview_show_ertf         (TextView       *textview,
                                         FILE           *fp,
                                         CodeConverter  *conv);
 static void textview_show_ertf         (TextView       *textview,
                                         FILE           *fp,
                                         CodeConverter  *conv);
@@ -160,12 +151,19 @@ static void textview_show_header  (TextView       *textview,
 static gint textview_key_pressed       (GtkWidget      *widget,
                                         GdkEventKey    *event,
                                         TextView       *textview);
 static gint textview_key_pressed       (GtkWidget      *widget,
                                         GdkEventKey    *event,
                                         TextView       *textview);
+#warning FIXME_GTK2
+#if 0
 static gint textview_button_pressed    (GtkWidget      *widget,
                                         GdkEventButton *event,
                                         TextView       *textview);
 static gint textview_button_released   (GtkWidget      *widget,
                                         GdkEventButton *event,
                                         TextView       *textview);
 static gint textview_button_pressed    (GtkWidget      *widget,
                                         GdkEventButton *event,
                                         TextView       *textview);
 static gint textview_button_released   (GtkWidget      *widget,
                                         GdkEventButton *event,
                                         TextView       *textview);
+#else
+static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj,
+                                           GdkEvent *event, GtkTextIter *iter,
+                                           TextView *textview);
+#endif
 
 static void textview_uri_list_remove_all(GSList                *uri_list);
 
 
 static void textview_uri_list_remove_all(GSList                *uri_list);
 
@@ -183,101 +181,60 @@ TextView *textview_create(void)
 {
        TextView *textview;
        GtkWidget *vbox;
 {
        TextView *textview;
        GtkWidget *vbox;
-       GtkWidget *scrolledwin_sb;
-       GtkWidget *scrolledwin_mb;
-       GtkWidget *text_sb;
-       GtkWidget *text_mb;
+       GtkWidget *scrolledwin;
+       GtkWidget *text;
+       GtkTextBuffer *buffer;
+       GtkClipboard *clipboard;
+       PangoFontDescription *font_desc = NULL;
 
        debug_print("Creating text view...\n");
        textview = g_new0(TextView, 1);
 
 
        debug_print("Creating text view...\n");
        textview = g_new0(TextView, 1);
 
-       scrolledwin_sb = gtk_scrolled_window_new(NULL, NULL);
-       scrolledwin_mb = gtk_scrolled_window_new(NULL, NULL);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin_sb),
+       scrolledwin = gtk_scrolled_window_new(NULL, NULL);
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
                                       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
                                       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin_mb),
-                                      GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-       gtk_widget_set_usize(scrolledwin_sb, prefs_common.mainview_width, -1);
-       gtk_widget_set_usize(scrolledwin_mb, prefs_common.mainview_width, -1);
+       gtk_widget_set_size_request(scrolledwin, prefs_common.mainview_width, -1);
 
        /* create GtkSText widgets for single-byte and multi-byte character */
 
        /* create GtkSText widgets for single-byte and multi-byte character */
-       text_sb = gtk_stext_new(NULL, NULL);
-       text_mb = gtk_stext_new(NULL, NULL);
-       GTK_STEXT(text_sb)->default_tab_width = 8;
-       GTK_STEXT(text_mb)->default_tab_width = 8;
-       gtk_widget_show(text_sb);
-       gtk_widget_show(text_mb);
-       gtk_stext_set_word_wrap(GTK_STEXT(text_sb), TRUE);
-       gtk_stext_set_word_wrap(GTK_STEXT(text_mb), TRUE);
-       gtk_widget_ensure_style(text_sb);
-       gtk_widget_ensure_style(text_mb);
-       if (text_sb->style && text_sb->style->font->type == GDK_FONT_FONTSET) {
-               GtkStyle *style;
-               GdkFont *font;
-
-               font = gtkut_font_load_from_fontset(prefs_common.normalfont);
-               if (font) {
-                       style = gtk_style_copy(text_sb->style);
-                       gdk_font_unref(style->font);
-                       style->font = font;
-                       gtk_widget_set_style(text_sb, style);
-               }
+       text = gtk_text_view_new();
+       gtk_widget_show(text);
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
+       gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
+
+       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
+       clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
+       gtk_text_buffer_add_selection_clipboard(buffer, clipboard);
+
+       gtk_widget_ensure_style(text);
+
+       if (prefs_common.normalfont)
+               font_desc = pango_font_description_from_string
+                                       (prefs_common.normalfont);
+       if (font_desc) {
+               gtk_widget_modify_font(text, font_desc);
        }
        }
-       if (text_mb->style && text_mb->style->font->type == GDK_FONT_FONT) {
-               GtkStyle *style;
-               GdkFont *font;
-
-               font = gdk_fontset_load(prefs_common.normalfont);
-               if (font) {
-                       style = gtk_style_copy(text_mb->style);
-                       gdk_font_unref(style->font);
-                       style->font = font;
-                       gtk_widget_set_style(text_mb, style);
-               }
-       }
-       gtk_widget_ref(scrolledwin_sb);
-       gtk_widget_ref(scrolledwin_mb);
-
-       gtk_container_add(GTK_CONTAINER(scrolledwin_sb), text_sb);
-       gtk_container_add(GTK_CONTAINER(scrolledwin_mb), text_mb);
-       gtk_signal_connect(GTK_OBJECT(text_sb), "key_press_event",
-                          GTK_SIGNAL_FUNC(textview_key_pressed),
-                          textview);
-       gtk_signal_connect_after(GTK_OBJECT(text_sb), "button_press_event",
-                                GTK_SIGNAL_FUNC(textview_button_pressed),
-                                textview);
-       gtk_signal_connect_after(GTK_OBJECT(text_sb), "button_release_event",
-                                GTK_SIGNAL_FUNC(textview_button_released),
-                                textview);
-       gtk_signal_connect(GTK_OBJECT(text_mb), "key_press_event",
-                          GTK_SIGNAL_FUNC(textview_key_pressed),
-                          textview);
-       gtk_signal_connect_after(GTK_OBJECT(text_mb), "button_press_event",
-                                GTK_SIGNAL_FUNC(textview_button_pressed),
-                                textview);
-       gtk_signal_connect_after(GTK_OBJECT(text_mb), "button_release_event",
-                                GTK_SIGNAL_FUNC(textview_button_released),
-                                textview);
-
-       gtk_widget_show(scrolledwin_sb);
-       gtk_widget_show(scrolledwin_mb);
+       pango_font_description_free(font_desc);
+
+       gtk_widget_ref(scrolledwin);
+
+       gtk_container_add(GTK_CONTAINER(scrolledwin), text);
+
+       g_signal_connect(G_OBJECT(text), "key_press_event",
+                        G_CALLBACK(textview_key_pressed),
+                        textview);
+
+       gtk_widget_show(scrolledwin);
 
        vbox = gtk_vbox_new(FALSE, 0);
 
        vbox = gtk_vbox_new(FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(vbox), scrolledwin_sb, TRUE, TRUE, 0);
+       gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
 
        gtk_widget_show(vbox);
 
        textview->vbox             = vbox;
 
        gtk_widget_show(vbox);
 
        textview->vbox             = vbox;
-       textview->scrolledwin      = scrolledwin_sb;
-       textview->scrolledwin_sb   = scrolledwin_sb;
-       textview->scrolledwin_mb   = scrolledwin_mb;
-       textview->text             = text_sb;
-       textview->text_sb          = text_sb;
-       textview->text_mb          = text_mb;
-       textview->text_is_mb       = FALSE;
+       textview->scrolledwin      = scrolledwin;
+       textview->text             = text;
        textview->uri_list         = NULL;
        textview->body_pos         = 0;
        textview->uri_list         = NULL;
        textview->body_pos         = 0;
-       textview->cur_pos          = 0;
        textview->show_all_headers = FALSE;
        textview->last_buttonpress = GDK_NOTHING;
        textview->show_url_msgid   = 0;
        textview->show_all_headers = FALSE;
        textview->last_buttonpress = GDK_NOTHING;
        textview->show_url_msgid   = 0;
@@ -285,13 +242,67 @@ TextView *textview_create(void)
        return textview;
 }
 
        return textview;
 }
 
+static void textview_create_tags(GtkTextView *text, TextView *textview)
+{
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextTag *tag;
+
+       gtk_text_buffer_create_tag(buffer, "header",
+                                  "pixels-above-lines", 0,
+                                  "pixels-above-lines-set", TRUE,
+                                  "pixels-below-lines", 0,
+                                  "pixels-below-lines-set", TRUE,
+                                  "left-margin", 0,
+                                  "left-margin-set", TRUE,
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "header_title",
+                                  "font", prefs_common.boldfont,
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "quote0",
+                                  "foreground-gdk", &quote_colors[0],
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "quote1",
+                                  "foreground-gdk", &quote_colors[1],
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "quote2",
+                                  "foreground-gdk", &quote_colors[2],
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "emphasis",
+                                  "foreground-gdk", &emphasis_color,
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "signature",
+                                  "foreground-gdk", &signature_color,
+                                  NULL);
+       tag = gtk_text_buffer_create_tag(buffer, "link",
+                                        "foreground-gdk", &uri_color,
+                                        NULL);
+#if USE_GPGME
+       gtk_text_buffer_create_tag(buffer, "good-signature",
+                                  "foreground-gdk", &good_sig_color,
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "bad-signature",
+                                  "foreground-gdk", &bad_sig_color,
+                                  NULL);
+       gtk_text_buffer_create_tag(buffer, "nocheck-signature",
+                                  "foreground-gdk", &nocheck_sig_color,
+                                  NULL);
+#endif /*USE_GPGME  */
+
+       g_signal_connect(G_OBJECT(tag), "event",
+                         G_CALLBACK(textview_uri_button_pressed), textview);
+ }
+
 void textview_init(TextView *textview)
 {
 void textview_init(TextView *textview)
 {
-       gtkut_widget_disable_theme_engine(textview->text_sb);
-       gtkut_widget_disable_theme_engine(textview->text_mb);
+#warning FIXME_GTK2
+#if 0
+       gtkut_widget_disable_theme_engine(textview->text);
+#endif
        textview_update_message_colors();
        textview_set_all_headers(textview, FALSE);
        textview_set_font(textview, NULL);
        textview_update_message_colors();
        textview_set_all_headers(textview, FALSE);
        textview_set_font(textview, NULL);
+
+       textview_create_tags(GTK_TEXT_VIEW(textview->text), textview);
 }
 
 void textview_update_message_colors(void)
 }
 
 void textview_update_message_colors(void)
@@ -319,7 +330,6 @@ void textview_update_message_colors(void)
 void textview_show_message(TextView *textview, MimeInfo *mimeinfo,
                           const gchar *file)
 {
 void textview_show_message(TextView *textview, MimeInfo *mimeinfo,
                           const gchar *file)
 {
-       GtkSText *text;
        FILE *fp;
        const gchar *charset = NULL;
        GPtrArray *headers = NULL;
        FILE *fp;
        const gchar *charset = NULL;
        GPtrArray *headers = NULL;
@@ -339,28 +349,29 @@ void textview_show_message(TextView *textview, MimeInfo *mimeinfo,
        textview_set_font(textview, charset);
        textview_clear(textview);
 
        textview_set_font(textview, charset);
        textview_clear(textview);
 
-       text = GTK_STEXT(textview->text);
-
-       gtk_stext_freeze(text);
-
        if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0) perror("fseek");
        headers = textview_scan_header(textview, fp);
        if (headers) {
        if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0) perror("fseek");
        headers = textview_scan_header(textview, fp);
        if (headers) {
+               GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+               GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+               GtkTextIter iter;
+
                textview_show_header(textview, headers);
                procheader_header_array_destroy(headers);
                textview_show_header(textview, headers);
                procheader_header_array_destroy(headers);
-               textview->body_pos = gtk_stext_get_length(text);
+
+               gtk_text_buffer_get_end_iter(buffer, &iter);
+               textview->body_pos = gtk_text_iter_get_offset(&iter);
        }
 
        textview_add_parts(textview, mimeinfo, fp);
 
        }
 
        textview_add_parts(textview, mimeinfo, fp);
 
-       gtk_stext_thaw(text);
-
        fclose(fp);
        fclose(fp);
+
+       textview_set_position(textview, 0);
 }
 
 void textview_show_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
 {
 }
 
 void textview_show_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
 {
-       GtkSText *text;
        gchar buf[BUFFSIZE];
        const gchar *boundary = NULL;
        gint boundary_len = 0;
        gchar buf[BUFFSIZE];
        const gchar *boundary = NULL;
        gint boundary_len = 0;
@@ -438,30 +449,34 @@ void textview_show_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
 
        textview_set_font(textview, charset);
 
 
        textview_set_font(textview, charset);
 
-       text = GTK_STEXT(textview->text);
-
-       gtk_stext_freeze(text);
        textview_clear(textview);
 
        if (headers) {
        textview_clear(textview);
 
        if (headers) {
+               GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+               GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+               GtkTextIter iter;
+
                textview_show_header(textview, headers);
                procheader_header_array_destroy(headers);
                textview_show_header(textview, headers);
                procheader_header_array_destroy(headers);
-               textview->body_pos = gtk_stext_get_length(text);
-               if (!mimeinfo->main)
-                       gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
+
+               gtk_text_buffer_get_end_iter(buffer, &iter);
+               textview->body_pos = gtk_text_iter_get_offset(&iter);
+               if (!mimeinfo->main) {
+                       gtk_text_buffer_insert(buffer, &iter, "\n", 1);
+               }
        }
 
        if (mimeinfo->mime_type == MIME_MULTIPART || is_rfc822_part)
                textview_add_parts(textview, mimeinfo, fp);
        else
                textview_write_body(textview, mimeinfo, fp, charset);
        }
 
        if (mimeinfo->mime_type == MIME_MULTIPART || is_rfc822_part)
                textview_add_parts(textview, mimeinfo, fp);
        else
                textview_write_body(textview, mimeinfo, fp, charset);
-
-       gtk_stext_thaw(text);
 }
 
 static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
 {
 }
 
 static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
        gchar buf[BUFFSIZE];
        const gchar *boundary = NULL;
        gint boundary_len = 0;
        gchar buf[BUFFSIZE];
        const gchar *boundary = NULL;
        gint boundary_len = 0;
@@ -471,6 +486,10 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
        g_return_if_fail(mimeinfo != NULL);
        g_return_if_fail(fp != NULL);
 
        g_return_if_fail(mimeinfo != NULL);
        g_return_if_fail(fp != NULL);
 
+       text = GTK_TEXT_VIEW(textview->text);
+       buffer = gtk_text_view_get_buffer(text);
+       gtk_text_buffer_get_end_iter(buffer, &iter);
+
        if (mimeinfo->mime_type == MIME_MULTIPART) return;
 
        if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0) {
        if (mimeinfo->mime_type == MIME_MULTIPART) return;
 
        if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0) {
@@ -489,17 +508,13 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
        if (mimeinfo->mime_type == MIME_MESSAGE_RFC822) {
                headers = textview_scan_header(textview, fp);
                if (headers) {
        if (mimeinfo->mime_type == MIME_MESSAGE_RFC822) {
                headers = textview_scan_header(textview, fp);
                if (headers) {
-                       gtk_stext_freeze(text);
-                       gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
+                       gtk_text_buffer_insert(buffer, &iter, "\n", 1);
                        textview_show_header(textview, headers);
                        procheader_header_array_destroy(headers);
                        textview_show_header(textview, headers);
                        procheader_header_array_destroy(headers);
-                       gtk_stext_thaw(text);
                }
                return;
        }
 
                }
                return;
        }
 
-       gtk_stext_freeze(text);
-
 #if USE_GPGME
        if (mimeinfo->sigstatus)
                g_snprintf(buf, sizeof(buf), "\n[%s (%s)]\n",
 #if USE_GPGME
        if (mimeinfo->sigstatus)
                g_snprintf(buf, sizeof(buf), "\n[%s (%s)]\n",
@@ -517,6 +532,8 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
 
 #if USE_GPGME
        if (mimeinfo->sigstatus && !mimeinfo->sigstatus_full) {
 
 #if USE_GPGME
        if (mimeinfo->sigstatus && !mimeinfo->sigstatus_full) {
+#warning FIXME_GTK2
+#if 0
                gchar *tmp;
                /* use standard font */
                gpointer oldfont = textview->msgfont;
                gchar *tmp;
                /* use standard font */
                gpointer oldfont = textview->msgfont;
@@ -529,28 +546,35 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
                textview->msgfont = (GdkFont *)oldfont;
                oldfont = NULL;
                g_free(tmp);
                textview->msgfont = (GdkFont *)oldfont;
                oldfont = NULL;
                g_free(tmp);
+#else
+               gchar *tmp;
+
+               tmp = g_strconcat("pgp: ", _("Check signature"), NULL);
+               textview_write_link(textview, buf, tmp, NULL);
+#endif
        } else if (mimeinfo->sigstatus) {
        } else if (mimeinfo->sigstatus) {
-               GdkColor *color;
+               const gchar *color;
                if (!strcmp(mimeinfo->sigstatus, _("Good signature")))
                if (!strcmp(mimeinfo->sigstatus, _("Good signature")))
-                       color = &good_sig_color;
+                       color = "good-signature";
                else if (!strcmp(mimeinfo->sigstatus, _("BAD signature")))
                else if (!strcmp(mimeinfo->sigstatus, _("BAD signature")))
-                       color = &bad_sig_color;
+                       color = "bad-signature";
                else
                else
-                       color = &nocheck_sig_color; 
-               gtk_stext_insert(text, NULL, color, NULL, buf, -1);
+                       color = "nocheck-signature";
+               gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, "\n", 1,
+                                                        color, NULL);
        } else
 #endif
        if (mimeinfo->mime_type != MIME_TEXT &&
            mimeinfo->mime_type != MIME_TEXT_HTML &&
            mimeinfo->mime_type != MIME_TEXT_ENRICHED) {
        } else
 #endif
        if (mimeinfo->mime_type != MIME_TEXT &&
            mimeinfo->mime_type != MIME_TEXT_HTML &&
            mimeinfo->mime_type != MIME_TEXT_ENRICHED) {
-               gtk_stext_insert(text, NULL, NULL, NULL, buf, -1);
+               gtk_text_buffer_insert(buffer, &iter, buf, -1);
        } else {
                if (!mimeinfo->main &&
                    mimeinfo->parent &&
                    mimeinfo->parent->children != mimeinfo)
        } else {
                if (!mimeinfo->main &&
                    mimeinfo->parent &&
                    mimeinfo->parent->children != mimeinfo)
-                       gtk_stext_insert(text, NULL, NULL, NULL, buf, -1);
+                       gtk_text_buffer_insert(buffer, &iter, buf, -1);
                else if (prefs_common.display_header)
                else if (prefs_common.display_header)
-                       gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
+                       gtk_text_buffer_insert(buffer, &iter, "\n", 1);
                if (textview->messageview->forced_charset)
                        charset = textview->messageview->forced_charset;
                else if (prefs_common.force_charset)
                if (textview->messageview->forced_charset)
                        charset = textview->messageview->forced_charset;
                else if (prefs_common.force_charset)
@@ -559,8 +583,6 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
                        charset = mimeinfo->charset;
                textview_write_body(textview, mimeinfo, fp, charset);
        }
                        charset = mimeinfo->charset;
                textview_write_body(textview, mimeinfo, fp, charset);
        }
-
-       gtk_stext_thaw(text);
 }
 
 static void textview_add_parts(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
 }
 
 static void textview_add_parts(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
@@ -586,19 +608,22 @@ static void textview_add_parts(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
 }
 
 #define TEXT_INSERT(str) \
 }
 
 #define TEXT_INSERT(str) \
-       gtk_stext_insert(text, textview->msgfont, NULL, NULL, str, -1)
+       gtk_text_buffer_insert(buffer, &iter, str, -1)
 
 void textview_show_mime_part(TextView *textview, MimeInfo *partinfo)
 {
 
 void textview_show_mime_part(TextView *textview, MimeInfo *partinfo)
 {
-       GtkSText *text;
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
 
        if (!partinfo) return;
 
        textview_set_font(textview, NULL);
 
        if (!partinfo) return;
 
        textview_set_font(textview, NULL);
-       text = GTK_STEXT(textview->text);
        textview_clear(textview);
 
        textview_clear(textview);
 
-       gtk_stext_freeze(text);
+       text = GTK_TEXT_VIEW(textview->text);
+       buffer = gtk_text_view_get_buffer(text);
+       gtk_text_buffer_get_start_iter(buffer, &iter);
 
        TEXT_INSERT(_("To save this part, pop up the context menu with "));
        TEXT_INSERT(_("right click and select `Save as...', "));
 
        TEXT_INSERT(_("To save this part, pop up the context menu with "));
        TEXT_INSERT(_("right click and select `Save as...', "));
@@ -611,22 +636,23 @@ void textview_show_mime_part(TextView *textview, MimeInfo *partinfo)
        TEXT_INSERT(_("`Open' or `Open with...', "));
        TEXT_INSERT(_("or double-click, or click the center button, "));
        TEXT_INSERT(_("or press `l' key."));
        TEXT_INSERT(_("`Open' or `Open with...', "));
        TEXT_INSERT(_("or double-click, or click the center button, "));
        TEXT_INSERT(_("or press `l' key."));
-
-       gtk_stext_thaw(text);
 }
 
 #if USE_GPGME
 void textview_show_signature_part(TextView *textview, MimeInfo *partinfo)
 {
 }
 
 #if USE_GPGME
 void textview_show_signature_part(TextView *textview, MimeInfo *partinfo)
 {
-       GtkSText *text;
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
 
        if (!partinfo) return;
 
        textview_set_font(textview, NULL);
 
        if (!partinfo) return;
 
        textview_set_font(textview, NULL);
-       text = GTK_STEXT(textview->text);
        textview_clear(textview);
 
        textview_clear(textview);
 
-       gtk_stext_freeze(text);
+       text = GTK_TEXT_VIEW(textview->text);
+       buffer = gtk_text_view_get_buffer(text);
+       gtk_text_buffer_get_start_iter(buffer, &iter);
 
        if (partinfo->sigstatus_full == NULL) {
                TEXT_INSERT(_("This signature has not been checked yet.\n"));
 
        if (partinfo->sigstatus_full == NULL) {
                TEXT_INSERT(_("This signature has not been checked yet.\n"));
@@ -635,8 +661,6 @@ void textview_show_signature_part(TextView *textview, MimeInfo *partinfo)
        } else {
                TEXT_INSERT(partinfo->sigstatus_full);
        }
        } else {
                TEXT_INSERT(partinfo->sigstatus_full);
        }
-
-       gtk_stext_thaw(text);
 }
 #endif /* USE_GPGME */
 
 }
 #endif /* USE_GPGME */
 
@@ -998,18 +1022,22 @@ static gchar *make_email_string(const gchar *bp, const gchar *ep)
                last->next = NULL; \
        } else { \
                g_warning("alloc error scanning URIs\n"); \
                last->next = NULL; \
        } else { \
                g_warning("alloc error scanning URIs\n"); \
-               gtk_stext_insert(text, textview->msgfont, fg_color, NULL, \
-                               linebuf, -1); \
+               gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, \
+                                                        linebuf, -1, \
+                                                        fg_tag, NULL); \
                return; \
        }
 
 /* textview_make_clickable_parts() - colorizes clickable parts */
 static void textview_make_clickable_parts(TextView *textview,
                return; \
        }
 
 /* textview_make_clickable_parts() - colorizes clickable parts */
 static void textview_make_clickable_parts(TextView *textview,
-                                         GdkFont *font,
-                                         GdkColor *fg_color,
-                                         GdkColor *uri_color,
+                                         const gchar *fg_tag,
+                                         const gchar *uri_tag,
                                          const gchar *linebuf)
 {
                                          const gchar *linebuf)
 {
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextIter iter;
+
        /* parse table - in order of priority */
        struct table {
                const gchar *needle; /* token */
        /* parse table - in order of priority */
        struct table {
                const gchar *needle; /* token */
@@ -1046,7 +1074,7 @@ static void textview_make_clickable_parts(TextView *textview,
                struct txtpos   *next;          /* next */
        } head = {NULL, NULL, 0,  NULL}, *last = &head;
 
                struct txtpos   *next;          /* next */
        } head = {NULL, NULL, 0,  NULL}, *last = &head;
 
-       GtkSText *text = GTK_STEXT(textview->text);
+       gtk_text_buffer_get_end_iter(buffer, &iter);
 
        /* parse for clickable parts, and build a list of begin and end positions  */
        for (walk = linebuf, n = 0;;) {
 
        /* parse for clickable parts, and build a list of begin and end positions  */
        for (walk = linebuf, n = 0;;) {
@@ -1090,25 +1118,32 @@ static void textview_make_clickable_parts(TextView *textview,
 
                        uri = g_new(RemoteURI, 1);
                        if (last->bp - normal_text > 0)
 
                        uri = g_new(RemoteURI, 1);
                        if (last->bp - normal_text > 0)
-                               gtk_stext_insert(text, font,
-                                               fg_color, NULL,
-                                               normal_text,
-                                               last->bp - normal_text);
+                               gtk_text_buffer_insert_with_tags_by_name
+                                       (buffer, &iter,
+                                        normal_text,
+                                        last->bp - normal_text,
+                                        fg_tag, NULL);
                        uri->uri = parser[last->pti].build_uri(last->bp,
                                                               last->ep);
                        uri->uri = parser[last->pti].build_uri(last->bp,
                                                               last->ep);
-                       uri->start = gtk_stext_get_point(text);
-                       gtk_stext_insert(text, font, uri_color,
-                                       NULL, last->bp, last->ep - last->bp);
-                       uri->end = gtk_stext_get_point(text);
+                       uri->start = gtk_text_iter_get_offset(&iter);
+                       gtk_text_buffer_insert_with_tags_by_name
+                               (buffer, &iter,
+                                last->bp, last->ep - last->bp,
+                                uri_tag, NULL);
+                       uri->end = gtk_text_iter_get_offset(&iter);
                        textview->uri_list =
                                g_slist_append(textview->uri_list, uri);
                }
 
                if (*normal_text)
                        textview->uri_list =
                                g_slist_append(textview->uri_list, uri);
                }
 
                if (*normal_text)
-                       gtk_stext_insert(text, font, fg_color,
-                                       NULL, normal_text, -1);
-       } else
-               gtk_stext_insert(text, font, fg_color, NULL, linebuf, -1);
+                       gtk_text_buffer_insert_with_tags_by_name(buffer, &iter,
+                                                                normal_text, -1,
+                                                                fg_tag, NULL);
+       } else {
+               gtk_text_buffer_insert_with_tags_by_name(buffer, &iter,
+                                                        linebuf, -1,
+                                                        fg_tag, NULL);
+       }
 }
 
 #undef ADD_TXT_POS
 }
 
 #undef ADD_TXT_POS
@@ -1116,11 +1151,20 @@ static void textview_make_clickable_parts(TextView *textview,
 static void textview_write_line(TextView *textview, const gchar *str,
                                CodeConverter *conv)
 {
 static void textview_write_line(TextView *textview, const gchar *str,
                                CodeConverter *conv)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
        gchar buf[BUFFSIZE];
        gchar buf[BUFFSIZE];
-       GdkColor *fg_color;
+       gchar *fg_color;
        gint quotelevel = -1;
        gint quotelevel = -1;
+       gchar quote_tag_str[10];
 
 
+       text = GTK_TEXT_VIEW(textview->text);
+       buffer = gtk_text_view_get_buffer(text);
+       gtk_text_buffer_get_end_iter(buffer, &iter);
+
+#warning FIXME_GTK2
+#if 0
        if (!conv) {
                if (textview->text_is_mb)
                        conv_localetodisp(buf, sizeof(buf), str);
        if (!conv) {
                if (textview->text_is_mb)
                        conv_localetodisp(buf, sizeof(buf), str);
@@ -1130,6 +1174,12 @@ static void textview_write_line(TextView *textview, const gchar *str,
                conv_localetodisp(buf, sizeof(buf), str);
        else if (textview->text_is_mb)
                conv_unreadable_locale(buf);
                conv_localetodisp(buf, sizeof(buf), str);
        else if (textview->text_is_mb)
                conv_unreadable_locale(buf);
+#else
+       if (!conv)
+               strncpy2(buf, str, sizeof(buf));
+       else if (conv_convert(conv, buf, sizeof(buf), str) < 0)
+               conv_localetodisp(buf, sizeof(buf), str);
+#endif
 
        strcrchomp(buf);
        if (prefs_common.conv_mb_alnum) conv_mb_alnum(buf);
 
        strcrchomp(buf);
        if (prefs_common.conv_mb_alnum) conv_mb_alnum(buf);
@@ -1155,30 +1205,30 @@ static void textview_write_line(TextView *textview, const gchar *str,
 
        if (quotelevel == -1)
                fg_color = NULL;
 
        if (quotelevel == -1)
                fg_color = NULL;
-       else
-               fg_color = &quote_colors[quotelevel];
+       else {
+               g_snprintf(quote_tag_str, sizeof(quote_tag_str),
+                          "quote%d", quotelevel);
+               fg_color = quote_tag_str;
+       }
 
        if (prefs_common.enable_color && (strcmp(buf,"-- \n") == 0 || textview->is_in_signature)) {
 
        if (prefs_common.enable_color && (strcmp(buf,"-- \n") == 0 || textview->is_in_signature)) {
-               fg_color = &signature_color;
+               fg_color = "signature";
                textview->is_in_signature = TRUE;
        }
                textview->is_in_signature = TRUE;
        }
-       
-       if (prefs_common.head_space && spacingfont && buf[0] != '\n')
-               gtk_stext_insert(text, spacingfont, NULL, NULL, " ", 1);
 
        if (prefs_common.enable_color)
 
        if (prefs_common.enable_color)
-               textview_make_clickable_parts(textview, textview->msgfont,
-                                             fg_color, &uri_color, buf);
-       else
-               textview_make_clickable_parts(textview, textview->msgfont,
-                                             fg_color, NULL, buf);
+               textview_make_clickable_parts(textview, fg_color, "link", buf);
+       else
+               textview_make_clickable_parts(textview, fg_color, NULL, buf);
 }
 
 void textview_write_link(TextView *textview, const gchar *str,
                         const gchar *uri, CodeConverter *conv)
 {
        GdkColor *link_color = NULL;
 }
 
 void textview_write_link(TextView *textview, const gchar *str,
                         const gchar *uri, CodeConverter *conv)
 {
        GdkColor *link_color = NULL;
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
        gchar buf[BUFFSIZE];
        gchar *bufp;
        RemoteURI *r_uri;
        gchar buf[BUFFSIZE];
        gchar *bufp;
        RemoteURI *r_uri;
@@ -1186,6 +1236,12 @@ void textview_write_link(TextView *textview, const gchar *str,
        if (*str == '\0')
                return;
 
        if (*str == '\0')
                return;
 
+       text = GTK_TEXT_VIEW(textview->text);
+       buffer = gtk_text_view_get_buffer(text);
+       gtk_text_buffer_get_end_iter(buffer, &iter);
+
+#warning FIXME_GTK2
+#if 0
        if (!conv) {
                if (textview->text_is_mb)
                        conv_localetodisp(buf, sizeof(buf), str);
        if (!conv) {
                if (textview->text_is_mb)
                        conv_localetodisp(buf, sizeof(buf), str);
@@ -1195,37 +1251,44 @@ void textview_write_link(TextView *textview, const gchar *str,
                conv_localetodisp(buf, sizeof(buf), str);
        else if (textview->text_is_mb)
                conv_unreadable_locale(buf);
                conv_localetodisp(buf, sizeof(buf), str);
        else if (textview->text_is_mb)
                conv_unreadable_locale(buf);
+#else
+       if (!conv)
+               strncpy2(buf, str, sizeof(buf));
+       else if (conv_convert(conv, buf, sizeof(buf), str) < 0)
+               conv_localetodisp(buf, sizeof(buf), str);
+#endif
 
        strcrchomp(buf);
 
 
        strcrchomp(buf);
 
+       gtk_text_buffer_get_end_iter(buffer, &iter);
+
        for (bufp = buf; isspace(*bufp); bufp++)
        for (bufp = buf; isspace(*bufp); bufp++)
-               gtk_stext_insert(text, textview->msgfont, NULL, NULL, bufp, 1);
+               gtk_text_buffer_insert(buffer, &iter, bufp, 1);
 
        if (prefs_common.enable_color) {
                link_color = &uri_color;
        }
        r_uri = g_new(RemoteURI, 1);
        r_uri->uri = g_strdup(uri);
 
        if (prefs_common.enable_color) {
                link_color = &uri_color;
        }
        r_uri = g_new(RemoteURI, 1);
        r_uri->uri = g_strdup(uri);
-       r_uri->start = gtk_stext_get_point(text);
-       gtk_stext_insert(text, textview->msgfont, link_color, NULL, bufp, -1);
-       r_uri->end = gtk_stext_get_point(text);
+       r_uri->start = gtk_text_iter_get_offset(&iter);
+       gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, bufp, -1,
+                                                "link", NULL);
+       r_uri->end = gtk_text_iter_get_offset(&iter);
        textview->uri_list = g_slist_append(textview->uri_list, r_uri);
 }
 
 void textview_clear(TextView *textview)
 {
        textview->uri_list = g_slist_append(textview->uri_list, r_uri);
 }
 
 void textview_clear(TextView *textview)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkTextBuffer *buffer;
 
 
-       gtk_stext_freeze(text);
-       gtk_stext_set_point(text, 0);
-       gtk_stext_forward_delete(text, gtk_stext_get_length(text));
-       gtk_stext_thaw(text);
+       buffer = gtk_text_view_get_buffer(text);
+       gtk_text_buffer_set_text(buffer, "\0", -1);
 
        textview_uri_list_remove_all(textview->uri_list);
        textview->uri_list = NULL;
 
        textview->body_pos = 0;
 
        textview_uri_list_remove_all(textview->uri_list);
        textview->uri_list = NULL;
 
        textview->body_pos = 0;
-       textview->cur_pos  = 0;
 }
 
 void textview_destroy(TextView *textview)
 }
 
 void textview_destroy(TextView *textview)
@@ -1233,16 +1296,6 @@ void textview_destroy(TextView *textview)
        textview_uri_list_remove_all(textview->uri_list);
        textview->uri_list = NULL;
 
        textview_uri_list_remove_all(textview->uri_list);
        textview->uri_list = NULL;
 
-       if (!textview->scrolledwin_sb->parent)
-               gtk_widget_destroy(textview->scrolledwin_sb);
-       if (!textview->scrolledwin_mb->parent)
-               gtk_widget_destroy(textview->scrolledwin_mb);
-
-       if (textview->msgfont)
-               gdk_font_unref(textview->msgfont);
-       if (textview->boldfont)
-               gdk_font_unref(textview->boldfont);
-
        g_free(textview);
 }
 
        g_free(textview);
 }
 
@@ -1253,102 +1306,26 @@ void textview_set_all_headers(TextView *textview, gboolean all_headers)
 
 void textview_set_font(TextView *textview, const gchar *codeset)
 {
 
 void textview_set_font(TextView *textview, const gchar *codeset)
 {
-       gboolean use_fontset = TRUE;
-
-       /* In multi-byte mode, GtkSText can't display 8bit characters
-          correctly, so it must be single-byte mode. */
-       if (MB_CUR_MAX > 1) {
-               if (codeset && conv_get_current_charset() != C_UTF_8) {
-                       if (!g_strncasecmp(codeset, "ISO-8859-", 9) ||
-                           !g_strcasecmp(codeset, "BALTIC"))
-                               use_fontset = FALSE;
-                       else if (conv_get_current_charset() != C_EUC_JP &&
-                                (!g_strncasecmp(codeset, "KOI8-", 5) ||
-                                 !g_strncasecmp(codeset, "CP", 2)    ||
-                                 !g_strncasecmp(codeset, "WINDOWS-", 8)))
-                               use_fontset = FALSE;
-               }
-       } else
-               use_fontset = FALSE;
-
-       if (textview->text_is_mb && !use_fontset) {
-               GtkWidget *parent;
-
-               parent = textview->scrolledwin_mb->parent;
-               gtkut_container_remove(GTK_CONTAINER(parent),
-                                      textview->scrolledwin_mb);
-               gtk_container_add(GTK_CONTAINER(parent),
-                                 textview->scrolledwin_sb);
-
-               textview->text = textview->text_sb;
-               textview->text_is_mb = FALSE;
-       } else if (!textview->text_is_mb && use_fontset) {
-               GtkWidget *parent;
-
-               parent = textview->scrolledwin_sb->parent;
-               gtkut_container_remove(GTK_CONTAINER(parent),
-                                      textview->scrolledwin_sb);
-               gtk_container_add(GTK_CONTAINER(parent),
-                                 textview->scrolledwin_mb);
-
-               textview->text = textview->text_mb;
-               textview->text_is_mb = TRUE;
-       }
-
        if (prefs_common.textfont) {
        if (prefs_common.textfont) {
-               GdkFont *font;
-
-               if (use_fontset) {
-                       if (text_mb_font) {
-                               text_mb_font->ascent = text_mb_font_orig_ascent;
-                               text_mb_font->descent = text_mb_font_orig_descent;
-                       }
-                       font = gdk_fontset_load(prefs_common.textfont);
-                       if (font && text_mb_font != font) {
-                               if (text_mb_font)
-                                       gdk_font_unref(text_mb_font);
-                               text_mb_font = font;
-                               text_mb_font_orig_ascent = font->ascent;
-                               text_mb_font_orig_descent = font->descent;
-                       }
-               } else {
-                       if (text_sb_font) {
-                               text_sb_font->ascent = text_sb_font_orig_ascent;
-                               text_sb_font->descent = text_sb_font_orig_descent;
-                       }
-                       if (MB_CUR_MAX > 1)
-                               font = gdk_font_load("-*-courier-medium-r-normal--14-*-*-*-*-*-iso8859-1");
-                       else
-                               font = gtkut_font_load_from_fontset
-                                       (prefs_common.textfont);
-                       if (font && text_sb_font != font) {
-                               if (text_sb_font)
-                                       gdk_font_unref(text_sb_font);
-                               text_sb_font = font;
-                               text_sb_font_orig_ascent = font->ascent;
-                               text_sb_font_orig_descent = font->descent;
-                       }
-               }
-
-               if (font) {
-                       gint ascent, descent;
-
-                       descent = prefs_common.line_space / 2;
-                       ascent  = prefs_common.line_space - descent;
-                       font->ascent  += ascent;
-                       font->descent += descent;
-
-                       if (textview->msgfont)
-                               gdk_font_unref(textview->msgfont);
-                       textview->msgfont = font;
-                       gdk_font_ref(font);
+               PangoFontDescription *font_desc = NULL;
+
+               if (prefs_common.textfont)
+                       font_desc = pango_font_description_from_string
+                                               (prefs_common.textfont);
+               if (font_desc) {
+                       gtk_widget_modify_font(textview->text, font_desc);
+                       pango_font_description_free(font_desc);
                }
        }
                }
        }
-
-       if (!textview->boldfont && prefs_common.boldfont)
-               textview->boldfont = gtkut_font_load(prefs_common.boldfont);
-       if (!spacingfont)
-               spacingfont = gdk_font_load("-*-*-medium-r-normal--6-*");
+       gtk_text_view_set_pixels_above_lines(GTK_TEXT_VIEW(textview->text),
+                                            prefs_common.line_space / 2);
+       gtk_text_view_set_pixels_below_lines(GTK_TEXT_VIEW(textview->text),
+                                            prefs_common.line_space / 2);
+       if (prefs_common.head_space) {
+               gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview->text), 6);
+       } else {
+               gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview->text), 0);
+       }
 }
 
 enum
 }
 
 enum
@@ -1369,12 +1346,12 @@ enum
 
 void textview_set_position(TextView *textview, gint pos)
 {
 
 void textview_set_position(TextView *textview, gint pos)
 {
-       if (pos < 0) {
-               textview->cur_pos =
-                       gtk_stext_get_length(GTK_STEXT(textview->text));
-       } else {
-               textview->cur_pos = pos;
-       }
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextIter iter;
+
+       gtk_text_buffer_get_iter_at_offset(buffer, &iter, pos);
+       gtk_text_buffer_place_cursor(buffer, &iter);
 }
 
 static GPtrArray *textview_scan_header(TextView *textview, FILE *fp)
 }
 
 static GPtrArray *textview_scan_header(TextView *textview, FILE *fp)
@@ -1436,23 +1413,32 @@ static GPtrArray *textview_scan_header(TextView *textview, FILE *fp)
 
 static void textview_show_header(TextView *textview, GPtrArray *headers)
 {
 
 static void textview_show_header(TextView *textview, GPtrArray *headers)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextIter iter;
        Header *header;
        gint i;
 
        g_return_if_fail(headers != NULL);
 
        Header *header;
        gint i;
 
        g_return_if_fail(headers != NULL);
 
-       gtk_stext_freeze(text);
-
        for (i = 0; i < headers->len; i++) {
                header = g_ptr_array_index(headers, i);
                g_return_if_fail(header->name != NULL);
 
        for (i = 0; i < headers->len; i++) {
                header = g_ptr_array_index(headers, i);
                g_return_if_fail(header->name != NULL);
 
-               gtk_stext_insert(text, textview->boldfont, NULL, NULL,
-                               header->name, -1);
+               gtk_text_buffer_get_end_iter (buffer, &iter);
+               gtk_text_buffer_insert_with_tags_by_name
+                       (buffer, &iter, header->name, -1,
+                        "header_title", "header", NULL);
                if (header->name[strlen(header->name) - 1] != ' ')
                if (header->name[strlen(header->name) - 1] != ' ')
+#warning FIXME_GTK2
+#if 0
                        gtk_stext_insert(text, textview->boldfont,
                                        NULL, NULL, " ", 1);
                        gtk_stext_insert(text, textview->boldfont,
                                        NULL, NULL, " ", 1);
+#else
+                       gtk_text_buffer_insert_with_tags_by_name
+                               (buffer, &iter, " ", 1,
+                                "header_title", "header", NULL);
+#endif
 
                if (procheader_headername_equal(header->name, "Subject") ||
                    procheader_headername_equal(header->name, "From")    ||
 
                if (procheader_headername_equal(header->name, "Subject") ||
                    procheader_headername_equal(header->name, "From")    ||
@@ -1460,34 +1446,39 @@ static void textview_show_header(TextView *textview, GPtrArray *headers)
                    procheader_headername_equal(header->name, "Cc"))
                        unfold_line(header->body);
 
                    procheader_headername_equal(header->name, "Cc"))
                        unfold_line(header->body);
 
+#warning FIXME_GTK2
+#if 0
                if (textview->text_is_mb == TRUE)
                        conv_unreadable_locale(header->body);
                if (textview->text_is_mb == TRUE)
                        conv_unreadable_locale(header->body);
+#endif
 
                if (prefs_common.enable_color &&
                    (procheader_headername_equal(header->name, "X-Mailer") ||
                     procheader_headername_equal(header->name,
                                                 "X-Newsreader")) &&
 
                if (prefs_common.enable_color &&
                    (procheader_headername_equal(header->name, "X-Mailer") ||
                     procheader_headername_equal(header->name,
                                                 "X-Newsreader")) &&
-                   strstr(header->body, "Sylpheed") != NULL)
-                       gtk_stext_insert(text, NULL, &emphasis_color, NULL,
-                                       header->body, -1);
-               else if (prefs_common.enable_color) {
-                       textview_make_clickable_parts(textview,
-                                                     NULL, NULL, &uri_color,
+                   strstr(header->body, "Sylpheed") != NULL) {
+                       gtk_text_buffer_get_end_iter (buffer, &iter);
+                       gtk_text_buffer_insert_with_tags_by_name
+                               (buffer, &iter, header->body, -1,
+                                "header", "emphasis", NULL);
+               } else if (prefs_common.enable_color) {
+                       textview_make_clickable_parts(textview, "header", "link",
                                                      header->body);
                } else {
                                                      header->body);
                } else {
-                       textview_make_clickable_parts(textview,
-                                                     NULL, NULL, NULL,
+                       textview_make_clickable_parts(textview, "header", NULL,
                                                      header->body);
                }
                                                      header->body);
                }
-               gtk_stext_insert(text, textview->msgfont, NULL, NULL, "\n", 1);
+               gtk_text_buffer_get_end_iter (buffer, &iter);
+               gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, "\n", 1,
+                                                        "header", NULL);
        }
        }
-
-       gtk_stext_thaw(text);
 }
 
 gboolean textview_search_string(TextView *textview, const gchar *str,
                                gboolean case_sens)
 {
 }
 
 gboolean textview_search_string(TextView *textview, const gchar *str,
                                gboolean case_sens)
 {
+#warning FIXME_GTK2 /* currently, these search functions ignores case_sens */
+#if 0
        GtkSText *text = GTK_STEXT(textview->text);
        gint pos;
        gint len;
        GtkSText *text = GTK_STEXT(textview->text);
        gint pos;
        gint len;
@@ -1509,11 +1500,47 @@ gboolean textview_search_string(TextView *textview, const gchar *str,
        }
 
        return FALSE;
        }
 
        return FALSE;
+#else
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextMark *mark;
+       GtkTextIter iter, start, end, *pos;
+       gboolean found;
+       gint insert_offset, selbound_offset;
+
+       /* reset selection */
+       mark = gtk_text_buffer_get_mark(buffer, "insert");
+       gtk_text_buffer_get_iter_at_mark(buffer, &start, mark);
+       insert_offset = gtk_text_iter_get_offset(&start);
+       mark = gtk_text_buffer_get_mark(buffer, "selection_bound");
+       gtk_text_buffer_get_iter_at_mark(buffer, &end, mark);
+       selbound_offset = gtk_text_iter_get_offset(&end);
+
+       pos = insert_offset > selbound_offset ? &start : &end;
+       gtk_text_buffer_place_cursor(buffer, pos);
+
+       /* search */
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+       found = gtk_text_iter_forward_search(&iter, str,
+                                            GTK_TEXT_SEARCH_VISIBLE_ONLY,
+                                            &start, &end, NULL);
+       if (found) {
+               gtk_text_buffer_place_cursor(buffer, &start);
+               gtk_text_buffer_move_mark_by_name(buffer, "selection_bound", &end);
+               mark = gtk_text_buffer_get_mark(buffer, "insert");
+               gtk_text_view_scroll_mark_onscreen(text, mark);
+       }
+
+       return found;
+#endif
 }
 
 gboolean textview_search_string_backward(TextView *textview, const gchar *str,
                                         gboolean case_sens)
 {
 }
 
 gboolean textview_search_string_backward(TextView *textview, const gchar *str,
                                         gboolean case_sens)
 {
+#warning FIXME_GTK2
+#if 0
        GtkSText *text = GTK_STEXT(textview->text);
        gint pos;
        wchar_t *wcs;
        GtkSText *text = GTK_STEXT(textview->text);
        gint pos;
        wchar_t *wcs;
@@ -1550,11 +1577,46 @@ gboolean textview_search_string_backward(TextView *textview, const gchar *str,
 
        g_free(wcs);
        return found;
 
        g_free(wcs);
        return found;
+#else
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+       GtkTextMark *mark;
+       GtkTextIter iter, start, end, *pos;
+       gboolean found;
+       gint insert_offset, selbound_offset;
+
+       /* reset selection */
+       mark = gtk_text_buffer_get_mark(buffer, "insert");
+       gtk_text_buffer_get_iter_at_mark(buffer, &start, mark);
+       insert_offset = gtk_text_iter_get_offset(&start);
+       mark = gtk_text_buffer_get_mark(buffer, "selection_bound");
+       gtk_text_buffer_get_iter_at_mark(buffer, &end, mark);
+       selbound_offset = gtk_text_iter_get_offset(&end);
+
+       pos = insert_offset < selbound_offset ? &start : &end;
+       gtk_text_buffer_place_cursor(buffer, pos);
+
+       /* search */
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+       found = gtk_text_iter_backward_search(&iter, str,
+                                             GTK_TEXT_SEARCH_VISIBLE_ONLY,
+                                             &start, &end, NULL);
+       if (found) {
+               gtk_text_buffer_place_cursor(buffer, &end);
+               gtk_text_buffer_move_mark_by_name(buffer, "selection_bound", &start);
+               mark = gtk_text_buffer_get_mark(buffer, "insert");
+               gtk_text_view_scroll_mark_onscreen(text, mark);
+       }
+
+       return found;
+#endif
 }
 
 void textview_scroll_one_line(TextView *textview, gboolean up)
 {
 }
 
 void textview_scroll_one_line(TextView *textview, gboolean up)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkAdjustment *vadj = text->vadjustment;
        gfloat upper;
 
        if (prefs_common.enable_smooth_scroll) {
        gfloat upper;
 
        if (prefs_common.enable_smooth_scroll) {
@@ -1563,30 +1625,31 @@ void textview_scroll_one_line(TextView *textview, gboolean up)
        }
 
        if (!up) {
        }
 
        if (!up) {
-               upper = text->vadj->upper - text->vadj->page_size;
-               if (text->vadj->value < upper) {
-                       text->vadj->value +=
-                               text->vadj->step_increment * 4;
-                       text->vadj->value =
-                               MIN(text->vadj->value, upper);
-                       gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
-                                               "value_changed");
+               upper = vadj->upper - vadj->page_size;
+               if (vadj->value < upper) {
+                       vadj->value +=
+                               vadj->step_increment * 4;
+                       vadj->value =
+                               MIN(vadj->value, upper);
+                       g_signal_emit_by_name(G_OBJECT(vadj),
+                                             "value_changed", 0);
                }
        } else {
                }
        } else {
-               if (text->vadj->value > 0.0) {
-                       text->vadj->value -=
-                               text->vadj->step_increment * 4;
-                       text->vadj->value =
-                               MAX(text->vadj->value, 0.0);
-                       gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
-                                               "value_changed");
+               if (vadj->value > 0.0) {
+                       vadj->value -=
+                               vadj->step_increment * 4;
+                       vadj->value =
+                               MAX(vadj->value, 0.0);
+                       g_signal_emit_by_name(G_OBJECT(vadj),
+                                             "value_changed", 0);
                }
        }
 }
 
 gboolean textview_scroll_page(TextView *textview, gboolean up)
 {
                }
        }
 }
 
 gboolean textview_scroll_page(TextView *textview, gboolean up)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkAdjustment *vadj = text->vadjustment;
        gfloat upper;
        gfloat page_incr;
 
        gfloat upper;
        gfloat page_incr;
 
@@ -1594,25 +1657,25 @@ gboolean textview_scroll_page(TextView *textview, gboolean up)
                return textview_smooth_scroll_page(textview, up);
 
        if (prefs_common.scroll_halfpage)
                return textview_smooth_scroll_page(textview, up);
 
        if (prefs_common.scroll_halfpage)
-               page_incr = text->vadj->page_increment / 2;
+               page_incr = vadj->page_increment / 2;
        else
        else
-               page_incr = text->vadj->page_increment;
+               page_incr = vadj->page_increment;
 
        if (!up) {
 
        if (!up) {
-               upper = text->vadj->upper - text->vadj->page_size;
-               if (text->vadj->value < upper) {
-                       text->vadj->value += page_incr;
-                       text->vadj->value = MIN(text->vadj->value, upper);
-                       gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
-                                               "value_changed");
+               upper = vadj->upper - vadj->page_size;
+               if (vadj->value < upper) {
+                       vadj->value += page_incr;
+                       vadj->value = MIN(vadj->value, upper);
+                       g_signal_emit_by_name(G_OBJECT(vadj),
+                                             "value_changed", 0);
                } else
                        return FALSE;
        } else {
                } else
                        return FALSE;
        } else {
-               if (text->vadj->value > 0.0) {
-                       text->vadj->value -= page_incr;
-                       text->vadj->value = MAX(text->vadj->value, 0.0);
-                       gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
-                                               "value_changed");
+               if (vadj->value > 0.0) {
+                       vadj->value -= page_incr;
+                       vadj->value = MAX(vadj->value, 0.0);
+                       g_signal_emit_by_name(G_OBJECT(vadj),
+                                             "value_changed", 0);
                } else
                        return FALSE;
        }
                } else
                        return FALSE;
        }
@@ -1624,7 +1687,8 @@ static void textview_smooth_scroll_do(TextView *textview,
                                      gfloat old_value, gfloat last_value,
                                      gint step)
 {
                                      gfloat old_value, gfloat last_value,
                                      gint step)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkAdjustment *vadj = text->vadjustment;
        gint change_value;
        gboolean up;
        gint i;
        gint change_value;
        gboolean up;
        gint i;
@@ -1637,33 +1701,36 @@ static void textview_smooth_scroll_do(TextView *textview,
                up = TRUE;
        }
 
                up = TRUE;
        }
 
-       gdk_key_repeat_disable();
+#warning FIXME_GTK2
+       /* gdk_key_repeat_disable(); */
 
        for (i = step; i <= change_value; i += step) {
 
        for (i = step; i <= change_value; i += step) {
-               text->vadj->value = old_value + (up ? -i : i);
-               gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
-                                       "value_changed");
+               vadj->value = old_value + (up ? -i : i);
+               g_signal_emit_by_name(G_OBJECT(vadj),
+                                     "value_changed", 0);
        }
 
        }
 
-       text->vadj->value = last_value;
-       gtk_signal_emit_by_name(GTK_OBJECT(text->vadj), "value_changed");
+       vadj->value = last_value;
+       g_signal_emit_by_name(G_OBJECT(vadj), "value_changed", 0);
 
 
-       gdk_key_repeat_restore();
+#warning FIXME_GTK2
+       /* gdk_key_repeat_restore(); */
 }
 
 static void textview_smooth_scroll_one_line(TextView *textview, gboolean up)
 {
 }
 
 static void textview_smooth_scroll_one_line(TextView *textview, gboolean up)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkAdjustment *vadj = text->vadjustment;
        gfloat upper;
        gfloat old_value;
        gfloat last_value;
 
        if (!up) {
        gfloat upper;
        gfloat old_value;
        gfloat last_value;
 
        if (!up) {
-               upper = text->vadj->upper - text->vadj->page_size;
-               if (text->vadj->value < upper) {
-                       old_value = text->vadj->value;
-                       last_value = text->vadj->value +
-                               text->vadj->step_increment * 4;
+               upper = vadj->upper - vadj->page_size;
+               if (vadj->value < upper) {
+                       old_value = vadj->value;
+                       last_value = vadj->value +
+                               vadj->step_increment * 4;
                        last_value = MIN(last_value, upper);
 
                        textview_smooth_scroll_do(textview, old_value,
                        last_value = MIN(last_value, upper);
 
                        textview_smooth_scroll_do(textview, old_value,
@@ -1671,10 +1738,10 @@ static void textview_smooth_scroll_one_line(TextView *textview, gboolean up)
                                                  prefs_common.scroll_step);
                }
        } else {
                                                  prefs_common.scroll_step);
                }
        } else {
-               if (text->vadj->value > 0.0) {
-                       old_value = text->vadj->value;
-                       last_value = text->vadj->value -
-                               text->vadj->step_increment * 4;
+               if (vadj->value > 0.0) {
+                       old_value = vadj->value;
+                       last_value = vadj->value -
+                               vadj->step_increment * 4;
                        last_value = MAX(last_value, 0.0);
 
                        textview_smooth_scroll_do(textview, old_value,
                        last_value = MAX(last_value, 0.0);
 
                        textview_smooth_scroll_do(textview, old_value,
@@ -1686,22 +1753,23 @@ static void textview_smooth_scroll_one_line(TextView *textview, gboolean up)
 
 static gboolean textview_smooth_scroll_page(TextView *textview, gboolean up)
 {
 
 static gboolean textview_smooth_scroll_page(TextView *textview, gboolean up)
 {
-       GtkSText *text = GTK_STEXT(textview->text);
+       GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+       GtkAdjustment *vadj = text->vadjustment;
        gfloat upper;
        gfloat page_incr;
        gfloat old_value;
        gfloat last_value;
 
        if (prefs_common.scroll_halfpage)
        gfloat upper;
        gfloat page_incr;
        gfloat old_value;
        gfloat last_value;
 
        if (prefs_common.scroll_halfpage)
-               page_incr = text->vadj->page_increment / 2;
+               page_incr = vadj->page_increment / 2;
        else
        else
-               page_incr = text->vadj->page_increment;
+               page_incr = vadj->page_increment;
 
        if (!up) {
 
        if (!up) {
-               upper = text->vadj->upper - text->vadj->page_size;
-               if (text->vadj->value < upper) {
-                       old_value = text->vadj->value;
-                       last_value = text->vadj->value + page_incr;
+               upper = vadj->upper - vadj->page_size;
+               if (vadj->value < upper) {
+                       old_value = vadj->value;
+                       last_value = vadj->value + page_incr;
                        last_value = MIN(last_value, upper);
 
                        textview_smooth_scroll_do(textview, old_value,
                        last_value = MIN(last_value, upper);
 
                        textview_smooth_scroll_do(textview, old_value,
@@ -1710,9 +1778,9 @@ static gboolean textview_smooth_scroll_page(TextView *textview, gboolean up)
                } else
                        return FALSE;
        } else {
                } else
                        return FALSE;
        } else {
-               if (text->vadj->value > 0.0) {
-                       old_value = text->vadj->value;
-                       last_value = text->vadj->value - page_incr;
+               if (vadj->value > 0.0) {
+                       old_value = vadj->value;
+                       last_value = vadj->value - page_incr;
                        last_value = MAX(last_value, 0.0);
 
                        textview_smooth_scroll_do(textview, old_value,
                        last_value = MAX(last_value, 0.0);
 
                        textview_smooth_scroll_do(textview, old_value,
@@ -1725,12 +1793,19 @@ static gboolean textview_smooth_scroll_page(TextView *textview, gboolean up)
        return TRUE;
 }
 
        return TRUE;
 }
 
+#warning FIXME_GTK2
+#if 0
 #define KEY_PRESS_EVENT_STOP() \
        if (gtk_signal_n_emissions_by_name \
                (GTK_OBJECT(widget), "key_press_event") > 0) { \
 #define KEY_PRESS_EVENT_STOP() \
        if (gtk_signal_n_emissions_by_name \
                (GTK_OBJECT(widget), "key_press_event") > 0) { \
-               gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), \
-                                            "key_press_event"); \
+               g_signal_stop_emission_by_name(G_OBJECT(widget), \
+                                              "key_press_event"); \
        }
        }
+#else
+#define KEY_PRESS_EVENT_STOP() \
+       g_signal_stop_emission_by_name(G_OBJECT(widget), \
+                                      "key_press_event");
+#endif
 
 static gint textview_key_pressed(GtkWidget *widget, GdkEventKey *event,
                                 TextView *textview)
 
 static gint textview_key_pressed(GtkWidget *widget, GdkEventKey *event,
                                 TextView *textview)
@@ -1816,6 +1891,8 @@ static gint show_url_timeout_cb(gpointer data)
                return FALSE;
 }
 
                return FALSE;
 }
 
+#warning FIXME_GTK2
+#if 0
 static gint textview_button_pressed(GtkWidget *widget, GdkEventButton *event,
                                    TextView *textview)
 {
 static gint textview_button_pressed(GtkWidget *widget, GdkEventButton *event,
                                    TextView *textview)
 {
@@ -1920,6 +1997,58 @@ static gint textview_button_released(GtkWidget *widget, GdkEventButton *event,
                textview->last_buttonpress = event->type;
        return FALSE;
 }
                textview->last_buttonpress = event->type;
        return FALSE;
 }
+#else
+static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj,
+                                           GdkEvent *event, GtkTextIter *iter,
+                                           TextView *textview)
+{
+       GtkTextIter start_iter, end_iter;
+       gint start_pos, end_pos;
+       GdkEventButton *bevent;
+
+       if (event->type != GDK_BUTTON_PRESS && event->type != GDK_2BUTTON_PRESS)
+               return FALSE;
+
+       bevent = (GdkEventButton *) event;
+
+       if (event &&
+           ((event->type == GDK_2BUTTON_PRESS && bevent->button == 1) ||
+            bevent->button == 2)) {
+               GSList *cur;
+
+                start_iter = *iter;
+                                                                                          
+                if(!gtk_text_iter_backward_to_tag_toggle(&start_iter, tag)) {
+                        debug_print("Can't find start.");
+                        return FALSE;
+                }
+               start_pos = gtk_text_iter_get_offset(&start_iter);
+
+                end_iter = *iter;
+                if(!gtk_text_iter_forward_to_tag_toggle(&end_iter, tag)) {
+                        debug_print("Can't find end");
+                        return FALSE;
+                }
+               end_pos = gtk_text_iter_get_offset(&end_iter);
+
+               for (cur = textview->uri_list; cur != NULL; cur = cur->next) {
+                       RemoteURI *uri = (RemoteURI *)cur->data;
+
+                       if (start_pos == uri->start &&
+                           end_pos ==  uri->end) {
+                               if (!g_strncasecmp(uri->uri, "mailto:", 7))
+                                       compose_new(NULL, uri->uri + 7, NULL);
+                               else
+                                       open_uri(uri->uri,
+                                                prefs_common.uri_cmd);
+                               return TRUE;
+                       }
+               }
+       }
+
+       return FALSE;
+}
+#endif
 
 static void textview_uri_list_remove_all(GSList *uri_list)
 {
 
 static void textview_uri_list_remove_all(GSList *uri_list)
 {
index 5ed886ef4313baaa892f1a3e651f07bb0eb9da06..935ab988358bb610e11fc373f39111c7231e2ec8 100644 (file)
@@ -36,25 +36,16 @@ struct _TextView
 {
        GtkWidget *vbox;
        GtkWidget *scrolledwin;
 {
        GtkWidget *vbox;
        GtkWidget *scrolledwin;
-       GtkWidget *scrolledwin_sb;
-       GtkWidget *scrolledwin_mb;
        GtkWidget *text;
        GtkWidget *text;
-       GtkWidget *text_sb;
-       GtkWidget *text_mb;
 
        GtkWidget *popup_menu;
        GtkItemFactory *popup_factory;
 
 
        GtkWidget *popup_menu;
        GtkItemFactory *popup_factory;
 
-       gboolean text_is_mb;
        gboolean default_text;
        gboolean is_in_signature;
        
        GSList *uri_list;
        gint body_pos;
        gboolean default_text;
        gboolean is_in_signature;
        
        GSList *uri_list;
        gint body_pos;
-       gint cur_pos;
-
-       GdkFont *msgfont;
-       GdkFont *boldfont;
 
        gboolean show_all_headers;
 
 
        gboolean show_all_headers;
 
index 79598b292adb08e2de1b9dbc2ed8712eb4b9b73b..e02bc9985042abeb71b719d02a39eebbfc0e28e4 100644 (file)
@@ -1499,13 +1499,11 @@ Toolbar *toolbar_create(ToolbarType      type,
 
        toolbar_data = g_new0(Toolbar, 1); 
 
 
        toolbar_data = g_new0(Toolbar, 1); 
 
-       toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL,
-                                 GTK_TOOLBAR_BOTH);
+       toolbar = gtk_toolbar_new();
        gtk_container_add(GTK_CONTAINER(container), toolbar);
        gtk_container_set_border_width(GTK_CONTAINER(container), 2);
        gtk_container_add(GTK_CONTAINER(container), toolbar);
        gtk_container_set_border_width(GTK_CONTAINER(container), 2);
-       gtk_toolbar_set_button_relief(GTK_TOOLBAR(toolbar), GTK_RELIEF_NONE);
-       gtk_toolbar_set_space_style(GTK_TOOLBAR(toolbar),
-                                   GTK_TOOLBAR_SPACE_LINE);
+       gtk_toolbar_set_orientation(GTK_TOOLBAR(toolbar), GTK_ORIENTATION_HORIZONTAL);
+       gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH);
        
        for (cur = toolbar_list; cur != NULL; cur = cur->next) {
 
        
        for (cur = toolbar_list; cur != NULL; cur = cur->next) {
 
@@ -1531,7 +1529,7 @@ Toolbar *toolbar_create(ToolbarType        type,
                                                toolbar_item->text,
                                                (""),
                                                (""),
                                                toolbar_item->text,
                                                (""),
                                                (""),
-                                               icon_wid, toolbar_buttons_cb
+                                               icon_wid, G_CALLBACK(toolbar_buttons_cb)
                                                toolbar_item);
                
                switch (toolbar_item->index) {
                                                toolbar_item);
                
                switch (toolbar_item->index) {
@@ -1560,7 +1558,7 @@ Toolbar *toolbar_create(ToolbarType        type,
                                                            _("News"),
                                                            (""),
                                                            (""),
                                                            _("News"),
                                                            (""),
                                                            (""),
-                                                           icon_news, toolbar_buttons_cb
+                                                           icon_news, G_CALLBACK(toolbar_buttons_cb)
                                                            toolbar_item);
                        toolbar_data->compose_mail_btn = item; 
                        gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips), 
                                                            toolbar_item);
                        toolbar_data->compose_mail_btn = item; 
                        gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips), 
index f14c9e4707070c891d8584cfa590bdae9c7881db..d20dcafe0702f5255db2be52fbae4d01812d2194 100644 (file)
@@ -32,7 +32,6 @@
 #include "undo.h"
 #include "utils.h"
 #include "prefs_common.h"
 #include "undo.h"
 #include "utils.h"
 #include "prefs_common.h"
-#include "gtkstext.h"
 
 typedef struct _UndoInfo UndoInfo;
 
 
 typedef struct _UndoInfo UndoInfo;
 
@@ -58,20 +57,20 @@ static void undo_add                (const gchar    *text,
                                 gint            end_pos,
                                 UndoAction      action,
                                 UndoMain       *undostruct);
                                 gint            end_pos,
                                 UndoAction      action,
                                 UndoMain       *undostruct);
-static gint undo_get_selection (GtkEditable    *text,
+static gint undo_get_selection (GtkTextView    *textview,
                                 guint          *start,
                                 guint          *end);
                                 guint          *start,
                                 guint          *end);
-static void undo_insert_text_cb        (GtkEditable    *editable,
+static void undo_insert_text_cb (GtkTextBuffer *textbuf,
+                                GtkTextIter    *iter,
                                 gchar          *new_text,
                                 gchar          *new_text,
-                                gint            new_text_length,
-                                gint           *position,
+                                gint           new_text_length,
                                 UndoMain       *undostruct);
                                 UndoMain       *undostruct);
-static void undo_delete_text_cb        (GtkEditable    *editable,
-                                gint            start_pos,
-                                gint            end_pos,
+static void undo_delete_text_cb (GtkTextBuffer *textbuf,
+                                GtkTextIter    *start,
+                                GtkTextIter    *end,
                                 UndoMain       *undostruct);
 
                                 UndoMain       *undostruct);
 
-static void undo_paste_clipboard_cb    (GtkEditable    *editable,
+static void undo_paste_clipboard_cb    (GtkTextView    *textview,
                                         UndoMain       *undostruct);
 
 void undo_undo                 (UndoMain       *undostruct);
                                         UndoMain       *undostruct);
 
 void undo_undo                 (UndoMain       *undostruct);
@@ -81,23 +80,25 @@ void undo_redo                      (UndoMain       *undostruct);
 UndoMain *undo_init(GtkWidget *text) 
 {
        UndoMain *undostruct;
 UndoMain *undo_init(GtkWidget *text) 
 {
        UndoMain *undostruct;
-       
+       GtkTextView *textview = GTK_TEXT_VIEW(text); 
+       GtkTextBuffer *textbuf = gtk_text_view_get_buffer(textview);
+
        g_return_val_if_fail(text != NULL, NULL);
 
        undostruct = g_new(UndoMain, 1);
        g_return_val_if_fail(text != NULL, NULL);
 
        undostruct = g_new(UndoMain, 1);
-       undostruct->text = text;
+       undostruct->textview = textview;
        undostruct->undo = NULL;
        undostruct->redo = NULL;
        undostruct->paste = 0;
        undostruct->undo_state = FALSE;
        undostruct->redo_state = FALSE;
 
        undostruct->undo = NULL;
        undostruct->redo = NULL;
        undostruct->paste = 0;
        undostruct->undo_state = FALSE;
        undostruct->redo_state = FALSE;
 
-       gtk_signal_connect(GTK_OBJECT(text), "insert-text",
-                          GTK_SIGNAL_FUNC(undo_insert_text_cb), undostruct);
-       gtk_signal_connect(GTK_OBJECT(text), "delete-text",
-                          GTK_SIGNAL_FUNC(undo_delete_text_cb), undostruct);
-       gtk_signal_connect(GTK_OBJECT(text), "paste-clipboard",
-                          GTK_SIGNAL_FUNC(undo_paste_clipboard_cb), undostruct);
+       g_signal_connect(G_OBJECT(textbuf), "insert-text",
+                        G_CALLBACK(undo_insert_text_cb), undostruct);
+       g_signal_connect(G_OBJECT(textbuf), "delete-range",
+                        G_CALLBACK(undo_delete_text_cb), undostruct);
+       g_signal_connect(G_OBJECT(textview), "paste-clipboard",
+                        G_CALLBACK(undo_paste_clipboard_cb), undostruct);
 
        return undostruct;
 }
 
        return undostruct;
 }
@@ -302,6 +303,7 @@ static void undo_add(const gchar *text,
                     UndoAction action, UndoMain *undostruct) 
 {
        UndoInfo *undoinfo;
                     UndoAction action, UndoMain *undostruct) 
 {
        UndoInfo *undoinfo;
+       GtkAdjustment *vadj;
 
        debug_print("undo_add(%i)*%s*\n", strlen (text), text);
 
 
        debug_print("undo_add(%i)*%s*\n", strlen (text), text);
 
@@ -332,8 +334,9 @@ static void undo_add(const gchar *text,
 
        debug_print("New: %s Action: %d Paste: %d\n", text, action, undostruct->paste);
 
 
        debug_print("New: %s Action: %d Paste: %d\n", text, action, undostruct->paste);
 
+       vadj = GTK_ADJUSTMENT(GTK_TEXT_VIEW(undostruct->textview)->vadjustment);
        undoinfo = undo_object_new(g_strdup(text), start_pos, end_pos, action,
        undoinfo = undo_object_new(g_strdup(text), start_pos, end_pos, action,
-                                  GTK_ADJUSTMENT(GTK_STEXT(undostruct->text)->vadj)->value);
+                                  vadj->value);
 
        if (end_pos - start_pos != 1 || text[0] == '\n')
                undoinfo->mergeable = FALSE;
 
        if (end_pos - start_pos != 1 || text[0] == '\n')
                undoinfo->mergeable = FALSE;
@@ -357,7 +360,10 @@ static void undo_add(const gchar *text,
 void undo_undo(UndoMain *undostruct) 
 {
        UndoInfo *undoinfo;
 void undo_undo(UndoMain *undostruct) 
 {
        UndoInfo *undoinfo;
-       guint start_pos, end_pos;
+       GtkTextView *textview;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter, start_iter, end_iter;
+       GtkTextMark *mark;
 
        g_return_if_fail(undostruct != NULL);
 
 
        g_return_if_fail(undostruct != NULL);
 
@@ -371,32 +377,37 @@ void undo_undo(UndoMain *undostruct)
        undostruct->redo = g_list_prepend(undostruct->redo, undoinfo);
        undostruct->undo = g_list_remove(undostruct->undo, undoinfo);
 
        undostruct->redo = g_list_prepend(undostruct->redo, undoinfo);
        undostruct->undo = g_list_remove(undostruct->undo, undoinfo);
 
+       textview = undostruct->textview;
+       buffer = gtk_text_view_get_buffer(textview);
+
+       undo_block(undostruct);
+
        /* Check if there is a selection active */
        /* Check if there is a selection active */
-       start_pos = GTK_EDITABLE(undostruct->text)->selection_start_pos;
-       end_pos   = GTK_EDITABLE(undostruct->text)->selection_end_pos;
-       if ((start_pos > 0 || end_pos > 0) && (start_pos != end_pos))
-               gtk_editable_select_region(GTK_EDITABLE(undostruct->text),
-                                          0, 0);
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+       gtk_text_buffer_place_cursor(buffer, &iter);
 
        /* Move the view (scrollbars) to the correct position */
        gtk_adjustment_set_value
 
        /* Move the view (scrollbars) to the correct position */
        gtk_adjustment_set_value
-               (GTK_ADJUSTMENT(GTK_STEXT(undostruct->text)->vadj),
+               (GTK_ADJUSTMENT(textview->vadjustment),
                 undoinfo->window_position);
 
        switch (undoinfo->action) {
        case UNDO_ACTION_DELETE:
                 undoinfo->window_position);
 
        switch (undoinfo->action) {
        case UNDO_ACTION_DELETE:
-               gtk_stext_set_point(GTK_STEXT(undostruct->text), undoinfo->start_pos);
-               gtk_stext_insert(GTK_STEXT(undostruct->text), NULL, NULL, NULL, undoinfo->text, -1);
+               gtk_text_buffer_get_iter_at_offset(buffer, &iter, undoinfo->start_pos);
+               gtk_text_buffer_insert(buffer, &iter, undoinfo->text, -1);
                debug_print("UNDO_ACTION_DELETE %s\n", undoinfo->text);
                break;
        case UNDO_ACTION_INSERT:
                debug_print("UNDO_ACTION_DELETE %s\n", undoinfo->text);
                break;
        case UNDO_ACTION_INSERT:
-               gtk_stext_set_point(GTK_STEXT(undostruct->text), undoinfo->end_pos);
-               gtk_stext_backward_delete(GTK_STEXT(undostruct->text), undoinfo->end_pos-undoinfo->start_pos);
+               gtk_text_buffer_get_iter_at_offset(buffer, &start_iter, undoinfo->start_pos);
+               gtk_text_buffer_get_iter_at_offset(buffer, &end_iter, undoinfo->end_pos);
+               gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
                debug_print("UNDO_ACTION_INSERT %d\n", undoinfo->end_pos-undoinfo->start_pos);
                break;
        case UNDO_ACTION_REPLACE_INSERT:
                debug_print("UNDO_ACTION_INSERT %d\n", undoinfo->end_pos-undoinfo->start_pos);
                break;
        case UNDO_ACTION_REPLACE_INSERT:
-               gtk_stext_set_point(GTK_STEXT(undostruct->text), undoinfo->end_pos);
-               gtk_stext_backward_delete(GTK_STEXT(undostruct->text), undoinfo->end_pos-undoinfo->start_pos);
+               gtk_text_buffer_get_iter_at_offset(buffer, &start_iter, undoinfo->start_pos);
+               gtk_text_buffer_get_iter_at_offset(buffer, &end_iter, undoinfo->end_pos);
+               gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
                debug_print("UNDO_ACTION_REPLACE %s\n", undoinfo->text);
                /* "pull" another data structure from the list */
                undoinfo = (UndoInfo *)undostruct->undo->data;
                debug_print("UNDO_ACTION_REPLACE %s\n", undoinfo->text);
                /* "pull" another data structure from the list */
                undoinfo = (UndoInfo *)undostruct->undo->data;
@@ -404,8 +415,7 @@ void undo_undo(UndoMain *undostruct)
                undostruct->redo = g_list_prepend(undostruct->redo, undoinfo);
                undostruct->undo = g_list_remove(undostruct->undo, undoinfo);
                g_return_if_fail(undoinfo->action == UNDO_ACTION_REPLACE_DELETE);
                undostruct->redo = g_list_prepend(undostruct->redo, undoinfo);
                undostruct->undo = g_list_remove(undostruct->undo, undoinfo);
                g_return_if_fail(undoinfo->action == UNDO_ACTION_REPLACE_DELETE);
-               gtk_stext_set_point(GTK_STEXT(undostruct->text), undoinfo->start_pos);
-               gtk_stext_insert(GTK_STEXT(undostruct->text), NULL, NULL, NULL, undoinfo->text, -1);
+               gtk_text_buffer_insert(buffer, &start_iter, undoinfo->text, -1);
                debug_print("UNDO_ACTION_REPLACE %s\n", undoinfo->text);
                break;
        case UNDO_ACTION_REPLACE_DELETE:
                debug_print("UNDO_ACTION_REPLACE %s\n", undoinfo->text);
                break;
        case UNDO_ACTION_REPLACE_DELETE:
@@ -425,6 +435,8 @@ void undo_undo(UndoMain *undostruct)
                                              UNDO_STATE_FALSE,
                                              UNDO_STATE_UNCHANGED,
                                              undostruct->change_state_data);
                                              UNDO_STATE_FALSE,
                                              UNDO_STATE_UNCHANGED,
                                              undostruct->change_state_data);
+
+       undo_unblock(undostruct);
 }
 
 /**
 }
 
 /**
@@ -437,7 +449,10 @@ void undo_undo(UndoMain *undostruct)
 void undo_redo(UndoMain *undostruct) 
 {
        UndoInfo *redoinfo;
 void undo_redo(UndoMain *undostruct) 
 {
        UndoInfo *redoinfo;
-       guint start_pos, end_pos;
+       GtkTextView *textview;
+       GtkTextBuffer *buffer;
+       GtkTextIter iter, start_iter, end_iter;
+       GtkTextMark *mark;
 
        g_return_if_fail(undostruct != NULL);
 
 
        g_return_if_fail(undostruct != NULL);
 
@@ -448,49 +463,45 @@ void undo_redo(UndoMain *undostruct)
        undostruct->undo = g_list_prepend(undostruct->undo, redoinfo);
        undostruct->redo = g_list_remove(undostruct->redo, redoinfo);
 
        undostruct->undo = g_list_prepend(undostruct->undo, redoinfo);
        undostruct->redo = g_list_remove(undostruct->redo, redoinfo);
 
+       textview = undostruct->textview;
+       buffer = gtk_text_view_get_buffer(textview);
+
+       undo_block(undostruct);
+
        /* Check if there is a selection active */
        /* Check if there is a selection active */
-       start_pos = GTK_EDITABLE(undostruct->text)->selection_start_pos;
-       end_pos   = GTK_EDITABLE(undostruct->text)->selection_end_pos;
-       if ((start_pos > 0 || end_pos > 0) && (start_pos != end_pos))
-               gtk_editable_select_region(GTK_EDITABLE(undostruct->text), 0, 0);
+       mark = gtk_text_buffer_get_insert(buffer);
+       gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+       gtk_text_buffer_place_cursor(buffer, &iter);
 
        /* Move the view to the right position. */
 
        /* Move the view to the right position. */
-       gtk_adjustment_set_value(GTK_ADJUSTMENT(GTK_STEXT(undostruct->text)->vadj)
+       gtk_adjustment_set_value(textview->vadjustment
                                 redoinfo->window_position);
 
        switch (redoinfo->action) {
        case UNDO_ACTION_INSERT:
                                 redoinfo->window_position);
 
        switch (redoinfo->action) {
        case UNDO_ACTION_INSERT:
-               gtk_stext_set_point(GTK_STEXT(undostruct->text),
-                                  redoinfo->start_pos);
-               gtk_stext_insert(GTK_STEXT(undostruct->text), NULL, NULL, 
-                               NULL, redoinfo->text, -1);
+               gtk_text_buffer_get_iter_at_offset(buffer, &iter, redoinfo->start_pos);
+               gtk_text_buffer_insert(buffer, &iter, redoinfo->text, -1);
                debug_print("UNDO_ACTION_DELETE %s\n",redoinfo->text);
                break;
        case UNDO_ACTION_DELETE:
                debug_print("UNDO_ACTION_DELETE %s\n",redoinfo->text);
                break;
        case UNDO_ACTION_DELETE:
-               gtk_stext_set_point(GTK_STEXT(undostruct->text),
-                                  redoinfo->end_pos);
-               gtk_stext_backward_delete
-                       (GTK_STEXT(undostruct->text), 
-                        redoinfo->end_pos - redoinfo->start_pos);
+               gtk_text_buffer_get_iter_at_offset(buffer, &start_iter, redoinfo->start_pos);
+               gtk_text_buffer_get_iter_at_offset(buffer, &end_iter, redoinfo->end_pos);
+               gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
                debug_print("UNDO_ACTION_INSERT %d\n", 
                            redoinfo->end_pos-redoinfo->start_pos);
                break;
        case UNDO_ACTION_REPLACE_DELETE:
                debug_print("UNDO_ACTION_INSERT %d\n", 
                            redoinfo->end_pos-redoinfo->start_pos);
                break;
        case UNDO_ACTION_REPLACE_DELETE:
-               gtk_stext_set_point(GTK_STEXT(undostruct->text),
-                                  redoinfo->end_pos);
-               gtk_stext_backward_delete
-                       (GTK_STEXT(undostruct->text), 
-                        redoinfo->end_pos - redoinfo->start_pos);
+               gtk_text_buffer_get_iter_at_offset(buffer, &start_iter, redoinfo->start_pos);
+               gtk_text_buffer_get_iter_at_offset(buffer, &end_iter, redoinfo->end_pos);
+               gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
+               debug_print("UNDO_ACTION_REPLACE %s\n", redoinfo->text);
                /* "pull" another data structure from the list */
                redoinfo = (UndoInfo *)undostruct->redo->data;
                g_return_if_fail(redoinfo != NULL);
                /* "pull" another data structure from the list */
                redoinfo = (UndoInfo *)undostruct->redo->data;
                g_return_if_fail(redoinfo != NULL);
-               undostruct->undo = g_list_prepend(undostruct->undo, redoinfo);
-               undostruct->redo = g_list_remove(undostruct->redo, redoinfo);
-               g_return_if_fail(redoinfo->action == UNDO_ACTION_REPLACE_INSERT);
-               gtk_stext_set_point(GTK_STEXT(undostruct->text),
-                                  redoinfo->start_pos);
-               gtk_stext_insert(GTK_STEXT(undostruct->text), NULL, NULL, 
-                               NULL, redoinfo->text, -1);
+               undostruct->undo = g_list_prepend(undostruct->redo, redoinfo);
+               undostruct->redo = g_list_remove(undostruct->undo, redoinfo);
+               g_return_if_fail(redoinfo->action == UNDO_ACTION_REPLACE_DELETE);
+               gtk_text_buffer_insert(buffer, &start_iter, redoinfo->text, -1);
                break;
        case UNDO_ACTION_REPLACE_INSERT:
                g_warning("This should not happen. Redo: UNDO_REPLACE_INSERT");
                break;
        case UNDO_ACTION_REPLACE_INSERT:
                g_warning("This should not happen. Redo: UNDO_REPLACE_INSERT");
@@ -509,54 +520,76 @@ void undo_redo(UndoMain *undostruct)
                                              UNDO_STATE_UNCHANGED,
                                              UNDO_STATE_FALSE,
                                              undostruct->change_state_data);
                                              UNDO_STATE_UNCHANGED,
                                              UNDO_STATE_FALSE,
                                              undostruct->change_state_data);
+
+       undo_unblock(undostruct);
 }
 
 }
 
-void undo_insert_text_cb(GtkEditable *editable, gchar *new_text,
-                        gint new_text_length, gint *position, 
+void undo_block(UndoMain *undostruct)
+{
+       GtkTextBuffer *buffer;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(undostruct->textview));
+
+       buffer = gtk_text_view_get_buffer(undostruct->textview);
+       g_signal_handlers_block_by_func(buffer, undo_insert_text_cb, undostruct);
+       g_signal_handlers_block_by_func(buffer, undo_delete_text_cb, undostruct);
+       g_signal_handlers_block_by_func(buffer, undo_paste_clipboard_cb,
+                                         undostruct);
+}
+
+void undo_unblock(UndoMain *undostruct)
+{
+       GtkTextBuffer *buffer;
+
+       g_return_if_fail(GTK_IS_TEXT_VIEW(undostruct->textview));
+
+       buffer = gtk_text_view_get_buffer(undostruct->textview);
+       g_signal_handlers_unblock_by_func(buffer, undo_insert_text_cb, undostruct);
+       g_signal_handlers_unblock_by_func(buffer, undo_delete_text_cb, undostruct);
+       g_signal_handlers_unblock_by_func(buffer, undo_paste_clipboard_cb,
+                                         undostruct);
+}
+
+void undo_insert_text_cb(GtkTextBuffer *textbuf, GtkTextIter *iter,
+                        gchar *new_text, gint new_text_length,
                         UndoMain *undostruct) 
 {
        gchar *text_to_insert;
                         UndoMain *undostruct) 
 {
        gchar *text_to_insert;
-       size_t wlen;
+       gint pos;
 
        if (prefs_common.undolevels <= 0) return;
 
 
        if (prefs_common.undolevels <= 0) return;
 
-       Xstrndup_a(text_to_insert, new_text, new_text_length, return);
-       if (MB_CUR_MAX > 1) {
-               wchar_t *wstr;
+       pos = gtk_text_iter_get_offset(iter);
 
 
-               wstr = g_new(wchar_t, new_text_length + 1);
-               wlen = mbstowcs(wstr, text_to_insert, new_text_length + 1);
-               g_free(wstr);
-               if (wlen < 0) return;
-       } else
-               wlen = new_text_length;
-
-       undo_add(text_to_insert, *position, *position + wlen,
+       Xstrndup_a(text_to_insert, new_text, new_text_length, return);
+       undo_add(text_to_insert, pos, pos + g_utf8_strlen(text_to_insert, -1),
                 UNDO_ACTION_INSERT, undostruct);
 }
 
                 UNDO_ACTION_INSERT, undostruct);
 }
 
-void undo_delete_text_cb(GtkEditable *editable, gint start_pos,
-                        gint end_pos, UndoMain *undostruct) 
+void undo_delete_text_cb(GtkTextBuffer *textbuf, GtkTextIter *start,
+                        GtkTextIter *end, UndoMain *undostruct) 
 {
        gchar *text_to_delete;
 {
        gchar *text_to_delete;
+       gint start_pos, end_pos;
 
        if (prefs_common.undolevels <= 0) return;
 
        if (prefs_common.undolevels <= 0) return;
-       if (start_pos == end_pos) return;
 
 
-       text_to_delete = gtk_editable_get_chars(GTK_EDITABLE(editable),
-                                               start_pos, end_pos);
+       text_to_delete = gtk_text_buffer_get_text(textbuf, start, end, FALSE);
+       if (!text_to_delete || !*text_to_delete) return;
+
+       start_pos = gtk_text_iter_get_offset(start);
+       end_pos   = gtk_text_iter_get_offset(end);
+
        undo_add(text_to_delete, start_pos, end_pos, UNDO_ACTION_DELETE,
                 undostruct);
        g_free(text_to_delete);
 }
 
        undo_add(text_to_delete, start_pos, end_pos, UNDO_ACTION_DELETE,
                 undostruct);
        g_free(text_to_delete);
 }
 
-void undo_paste_clipboard_cb(GtkEditable *editable, UndoMain *undostruct)
+void undo_paste_clipboard_cb(GtkTextView *textview, UndoMain *undostruct)
 {
 {
-       if (editable->clipboard_text == NULL) return;
-
        debug_print("before Paste: %d\n", undostruct->paste);
        if (prefs_common.undolevels > 0)
        debug_print("before Paste: %d\n", undostruct->paste);
        if (prefs_common.undolevels > 0)
-               if (undo_get_selection(editable, NULL, NULL))
+               if (undo_get_selection(textview, NULL, NULL))
                        undostruct->paste = TRUE;
        debug_print("after Paste: %d\n", undostruct->paste);
 }
                        undostruct->paste = TRUE;
        debug_print("after Paste: %d\n", undostruct->paste);
 }
@@ -571,12 +604,17 @@ void undo_paste_clipboard_cb(GtkEditable *editable, UndoMain *undostruct)
  *
  * Return Value: TRUE if there is a selection active, FALSE if not
  **/
  *
  * Return Value: TRUE if there is a selection active, FALSE if not
  **/
-static gint undo_get_selection(GtkEditable *text, guint *start, guint *end) 
+static gint undo_get_selection(GtkTextView *textview, guint *start, guint *end) 
 {
 {
+       GtkTextBuffer *buffer;
+       GtkTextIter start_iter, end_iter;
        guint start_pos, end_pos;
 
        guint start_pos, end_pos;
 
-       start_pos = text->selection_start_pos;
-       end_pos   = text->selection_end_pos;
+       buffer = gtk_text_view_get_buffer(textview);
+       gtk_text_buffer_get_selection_bounds(buffer, &start_iter, &end_iter);
+
+       start_pos = gtk_text_iter_get_offset(&start_iter);
+       end_pos   = gtk_text_iter_get_offset(&end_iter);
 
        /* The user can select from end to start too. If so, swap it*/
        if (end_pos < start_pos) {
 
        /* The user can select from end to start too. If so, swap it*/
        if (end_pos < start_pos) {
index 007519a559f364786fef3ac1625b6ad2bd511703..5f50c8b6e7e57135d6645e592800c4e282041c51 100644 (file)
@@ -23,7 +23,7 @@
 #define __UNDO_H__
 
 #include <glib.h>
 #define __UNDO_H__
 
 #include <glib.h>
-#include <gtk/gtkwidget.h>
+#include <gtk/gtktextview.h>
 #include <gtk/gtkitemfactory.h>
 
 typedef enum 
 #include <gtk/gtkitemfactory.h>
 
 typedef enum 
@@ -51,7 +51,7 @@ typedef void (*UndoChangeStateFunc)   (UndoMain       *undostruct,
 
 struct _UndoMain 
 {
 
 struct _UndoMain 
 {
-       GtkWidget *text;
+       GtkTextView *textview;
 
        GList *undo;
        GList *redo;
 
        GList *undo;
        GList *redo;
@@ -74,5 +74,7 @@ void undo_set_change_state_func       (UndoMain               *undostruct,
 
 void undo_undo                 (UndoMain               *undostruct); 
 void undo_redo                 (UndoMain               *undostruct); 
 
 void undo_undo                 (UndoMain               *undostruct); 
 void undo_redo                 (UndoMain               *undostruct); 
+void undo_block                        (UndoMain               *undostruct);
+void undo_unblock              (UndoMain               *undostruct);
 
 #endif /* __UNDO_H__ */
 
 #endif /* __UNDO_H__ */
index dc2b4f4704d2fa47f87c283f00cf1ab0534240d4..b4fff287e491c00c6c30c39f0b416d2016189657 100644 (file)
@@ -112,7 +112,7 @@ void unmime_header(gchar *out, const gchar *str)
                }
 
                /* convert to locale encoding */
                }
 
                /* convert to locale encoding */
-               conv_str = conv_codeset_strdup(decoded_text, charset, NULL);
+               conv_str = conv_codeset_strdup(decoded_text, charset, CS_UTF_8);
                if (conv_str) {
                        len = strlen(conv_str);
                        memcpy(outp, conv_str, len);
                if (conv_str) {
                        len = strlen(conv_str);
                        memcpy(outp, conv_str, len);
index 4407f816863d9f58e86bcf06308aeacdf185bc97..fe3ee5b19456d5a9ead852cb31bf4d36fcb60d3c 100644 (file)
@@ -626,7 +626,7 @@ gboolean vcard_validate( const VCardFile *cardFile ) {
 *      be g_free() when done.
 */
 gchar *vcard_find_gnomecard( void ) {
 *      be g_free() when done.
 */
 gchar *vcard_find_gnomecard( void ) {
-       gchar *homedir;
+       const gchar *homedir;
        gchar buf[ WORK_BUFLEN ];
        gchar str[ WORK_BUFLEN ];
        gchar *fileSpec;
        gchar buf[ WORK_BUFLEN ];
        gchar str[ WORK_BUFLEN ];
        gchar *fileSpec;