2004-11-12 [paul] 0.9.12cvs146.1
* ChangeLog * ChangeLog.claws * ChangeLog.jp * NEWS * configure.ac * src/account.c * src/folderview.c * src/folderview.h * src/imap.c * src/imap_gtk.c * src/inc.c * src/mainwindow.c * src/mh_gtk.c * src/news_gtk.c * src/pop.c * src/prefs_account.c * src/prefs_account.h * src/prefs_ext_prog.c * src/procmime.c * src/procmime.h * src/procmsg.c * src/procmsg.h * src/summary_search.c * src/summaryview.c * src/textview.c * src/common/defs.h * src/common/utils.c * src/common/utils.h * src/gtk/menu.c * src/gtk/menu.h sync with HEAD
This commit is contained in:
parent
4ce85ee3a0
commit
ebd4fca572
32 changed files with 720 additions and 169 deletions
174
ChangeLog
174
ChangeLog
|
@ -1,3 +1,177 @@
|
|||
2004-11-11
|
||||
|
||||
* src/pixmaps/complete.xpm
|
||||
src/pixmaps/continue.xpm: made them smaller size to fit CList
|
||||
row.
|
||||
|
||||
2004-11-11
|
||||
|
||||
* src/statusbar.c: statusbar_create(): set the width of widget to 1
|
||||
not to expand automatically.
|
||||
* src/utils.[ch]: trim_string_before(): trim beginning characters
|
||||
longer than the specified length and add "...".
|
||||
* src/folderview.c
|
||||
src/summaryview.c: use trim_string_before() to display folder name.
|
||||
|
||||
2004-11-10
|
||||
|
||||
* src/defs.h
|
||||
src/prefs_common.c: made mozilla-firefox as default browser.
|
||||
|
||||
2004-11-09
|
||||
|
||||
* src/summaryview.c: summary_key_pressed()
|
||||
src/textview.c: textview_key_pressed(): back scroll when Shift or
|
||||
Alt and Space key is pressed. Also back scroll when Shift and Enter
|
||||
key is pressed.
|
||||
|
||||
2004-11-09
|
||||
|
||||
* src/foldersel.c: foldersel_new_folder(): select newly created
|
||||
folder.
|
||||
|
||||
2004-11-08
|
||||
|
||||
* version 1.0.0beta2
|
||||
|
||||
2004-11-08
|
||||
|
||||
* src/account.c
|
||||
src/imap.c
|
||||
src/inc.c
|
||||
src/pop.c
|
||||
src/prefs_account.[ch]: obsoleted RecvProtocol::A_APOP and made an
|
||||
option for APOP.
|
||||
prefs_account_protocol_set_optmenu(): refactored.
|
||||
|
||||
2004-11-07
|
||||
|
||||
* src/folderview.c: folderview_empty_trash_cb(): removed unused
|
||||
variables.
|
||||
|
||||
2004-11-05
|
||||
|
||||
* src/summary_search.c: use C string instead of wide character string.
|
||||
Enabled AND/OR matching.
|
||||
|
||||
2004-11-05
|
||||
|
||||
* src/folderview.[ch]
|
||||
src/mainwindow.c: change menu sensitivity of File/Folder and
|
||||
File/Mailbox according to selected folder.
|
||||
Enabled newsgroups subscription from 'File/Folder/Create new folder'.
|
||||
|
||||
2004-11-04
|
||||
|
||||
* src/folderview.[ch]
|
||||
src/mainwindow.c: reorganized folder/mailbox menus.
|
||||
Enabled 'Remove mailbox', 'Check for new messages' and
|
||||
'Rebuild folder tree' on main menu.
|
||||
Removed 'Remove mailbox' from the folder context menu.
|
||||
|
||||
2004-11-04
|
||||
|
||||
* src/folderview.c
|
||||
src/mainwindow.c
|
||||
src/procmsg.[ch]: added 'Empty trash' to the folder context menu.
|
||||
|
||||
2004-11-01
|
||||
|
||||
* src/filter.[ch]
|
||||
src/summaryview.c: don't move/delete immediately when
|
||||
immediate_execution is off.
|
||||
|
||||
2004-10-29
|
||||
|
||||
* version 1.0.0beta1
|
||||
|
||||
2004-10-29
|
||||
|
||||
* upgraded to gettext-0.14.1.
|
||||
|
||||
2004-10-28
|
||||
|
||||
* src/compose.c: reorganized the menu.
|
||||
* src/mh.c: removed g_print() for debug.
|
||||
|
||||
2004-10-27
|
||||
|
||||
* src/compose.c
|
||||
src/prefs_template.c
|
||||
src/template.[ch]: added Cc: to template parameter.
|
||||
|
||||
2004-10-26
|
||||
|
||||
* src/prefs_filter_edit.c: fixed condition menu switching problem
|
||||
on editing existing rules.
|
||||
|
||||
2004-10-25
|
||||
|
||||
* src/filter.c: filter_action_exec(): update counters of FolderItem
|
||||
on local filtering (fixes wrong folderview message count).
|
||||
|
||||
2004-10-25
|
||||
|
||||
* src/mbox.c: proc_mbox(): check if folder_table is NULL (fix
|
||||
warnings).
|
||||
|
||||
2004-10-21
|
||||
|
||||
* src/pixmaps/stock_add_16.xpm
|
||||
src/pixmaps/stock_remove_16.xpm: converted from stock icons in
|
||||
gtk-2.4.
|
||||
* src/prefs_filter_edit.c: use icons for add/remove button.
|
||||
* src/stock_pixmap.[ch]: added add/remove icons.
|
||||
|
||||
2004-10-21
|
||||
|
||||
* src/pixmaps/stock_dialog_error_48.xpm
|
||||
src/pixmaps/stock_dialog_info_48.xpm
|
||||
src/pixmaps/stock_dialog_question_48.xpm
|
||||
src/pixmaps/stock_dialog_warning_48.xpm: converted dialog icons from
|
||||
stock icons in gtk-2.4.
|
||||
* src/alertpanel.[ch]: added icons to the alert dialog.
|
||||
alertpanel_message(): Added AlertType.
|
||||
* src/stock_pixmaps.[ch]: added dialog icons.
|
||||
|
||||
|
||||
2004-10-08
|
||||
|
||||
* src/procmsg.c: removed verbose debug prints.
|
||||
|
||||
2004-10-07
|
||||
|
||||
* version 0.9.99
|
||||
|
||||
2004-10-07
|
||||
|
||||
* src/procmsg.c: procmsg_send_queue()
|
||||
src/send_message.c: send_queue_info_free(): fixed segmentation fault
|
||||
when trying to send an invalid queued message.
|
||||
|
||||
2004-10-06
|
||||
|
||||
* src/mainwindow.c: added separators to the File menu.
|
||||
* src/prefs_filter_edit.c: removed some debug prints.
|
||||
|
||||
2004-10-05
|
||||
|
||||
* src/inputdialog.c: input_dialog_open(): don't start auto-checking
|
||||
mail while opening the input dialog.
|
||||
|
||||
2004-10-04
|
||||
|
||||
* src/mh.c: mh_remove_all_msg()
|
||||
src/procmsg.c: procmsg_empty_trash(): fixed wrong message count
|
||||
after emptying trash.
|
||||
|
||||
2004-10-01
|
||||
|
||||
* src/prefs_filter.c: fixed a bug that didn't add an auto-created
|
||||
rule.
|
||||
* src/prefs_filter_edit.c: prefs_filter_edit_dialog_to_rule(): check
|
||||
if rule name exists.
|
||||
|
||||
2004-09-30
|
||||
|
||||
* src/filter.c: filter_apply_msginfo(): don't apply filter if
|
||||
|
|
|
@ -1,3 +1,37 @@
|
|||
2004-11-12 [paul] 0.9.12cvs146.1
|
||||
|
||||
* ChangeLog
|
||||
* ChangeLog.claws
|
||||
* ChangeLog.jp
|
||||
* NEWS
|
||||
* configure.ac
|
||||
* src/account.c
|
||||
* src/folderview.c
|
||||
* src/folderview.h
|
||||
* src/imap.c
|
||||
* src/imap_gtk.c
|
||||
* src/inc.c
|
||||
* src/mainwindow.c
|
||||
* src/mh_gtk.c
|
||||
* src/news_gtk.c
|
||||
* src/pop.c
|
||||
* src/prefs_account.c
|
||||
* src/prefs_account.h
|
||||
* src/prefs_ext_prog.c
|
||||
* src/procmime.c
|
||||
* src/procmime.h
|
||||
* src/procmsg.c
|
||||
* src/procmsg.h
|
||||
* src/summary_search.c
|
||||
* src/summaryview.c
|
||||
* src/textview.c
|
||||
* src/common/defs.h
|
||||
* src/common/utils.c
|
||||
* src/common/utils.h
|
||||
* src/gtk/menu.c
|
||||
* src/gtk/menu.h
|
||||
sync with HEAD
|
||||
|
||||
2004-11-11 [colin] 0.9.12cvs144.2
|
||||
|
||||
* src/textview.c
|
||||
|
|
|
@ -1,3 +1,45 @@
|
|||
2004-11-12 [paul] 0.9.12cvs146
|
||||
|
||||
* src/prefs_account.c
|
||||
* src/procmime.c
|
||||
* src/procmime.h
|
||||
fix sync breakage
|
||||
|
||||
2004-11-12 [paul]
|
||||
|
||||
* src/pixmaps/complete.xpm
|
||||
* src/pixmaps/continue.xpm
|
||||
small sync with main, see ChangeLog 2004-11-11
|
||||
|
||||
2004-11-11 [paul] 0.9.12cvs145
|
||||
|
||||
* ChangeLog
|
||||
* ChangeLog.jp
|
||||
* src/account.c
|
||||
* src/folderview.c
|
||||
* src/folderview.h
|
||||
* src/imap.c
|
||||
* src/imap_gtk.c
|
||||
* src/inc.c
|
||||
* src/mainwindow.c
|
||||
* src/mh_gtk.c
|
||||
* src/news_gtk.c
|
||||
* src/pop.c
|
||||
* src/prefs_account.c
|
||||
* src/prefs_account.h
|
||||
* src/prefs_ext_prog.c
|
||||
* src/procmsg.c
|
||||
* src/procmsg.h
|
||||
* src/summary_search.c
|
||||
* src/summaryview.c
|
||||
* src/textview.c
|
||||
* src/common/defs.h
|
||||
* src/common/utils.c
|
||||
* src/common/utils.h
|
||||
* src/gtk/menu.c
|
||||
* src/gtk/menu.h
|
||||
sync with main 1.0.0beta2 (plus 4)
|
||||
|
||||
2004-11-09 [christoph] 0.9.12cvs144
|
||||
|
||||
* src/compose.c
|
||||
|
|
176
ChangeLog.jp
176
ChangeLog.jp
|
@ -1,3 +1,179 @@
|
|||
2004-11-11
|
||||
|
||||
* src/pixmaps/complete.xpm
|
||||
src/pixmaps/continue.xpm: CList の行に合うようにより小さなサイズ
|
||||
にした。
|
||||
|
||||
2004-11-11
|
||||
|
||||
* src/statusbar.c: statusbar_create(): 自動的に伸長しないように
|
||||
ウィジェットの幅を1に指定。
|
||||
* src/utils.[ch]: trim_string_before(): 指定した長さを超える先頭の
|
||||
文字を切り詰め、 "..." を追加。
|
||||
* src/folderview.c
|
||||
src/summaryview.c: trim_string_before() を使ってフォルダ名を表示
|
||||
するようにした。
|
||||
|
||||
2004-11-10
|
||||
|
||||
* src/defs.h
|
||||
src/prefs_common.c: mozilla-firefox をデフォルトのブラウザにした。
|
||||
|
||||
2004-11-09
|
||||
|
||||
* src/summaryview.c: summary_key_pressed()
|
||||
src/textview.c: textview_key_pressed(): Shift または Alt とスペース
|
||||
キーが押された場合バックスクロールするようにした。 Shift と Enter
|
||||
キーが押された場合もバックスクロールするようにした。
|
||||
|
||||
2004-11-09
|
||||
|
||||
* src/foldersel.c: foldersel_new_folder(): 新規に作成されたフォルダを
|
||||
選択するようにした。
|
||||
|
||||
2004-11-08
|
||||
|
||||
* version 1.0.0beta2
|
||||
|
||||
2004-11-08
|
||||
|
||||
* src/account.c
|
||||
src/imap.c
|
||||
src/inc.c
|
||||
src/pop.c
|
||||
src/prefs_account.[ch]: RecvProtocol::A_APOP を廃止し、 APOP の
|
||||
オプションを追加。
|
||||
prefs_account_protocol_set_optmenu(): リファクタリング。
|
||||
|
||||
2004-11-07
|
||||
|
||||
* src/folderview.c: folderview_empty_trash_cb(): 未使用の変数を削除。
|
||||
|
||||
2004-11-05
|
||||
|
||||
* src/summary_search.c: ワイドキャラクタ文字列の代わりに C 文字列
|
||||
を使用。 AND/OR マッチができるようにした。
|
||||
|
||||
2004-11-05
|
||||
|
||||
* src/folderview.[ch]
|
||||
src/mainwindow.c: 選択フォルダに応じてファイル/フォルダ と
|
||||
ファイル/メールボックス のメニューのセンシティビティを変更する
|
||||
ようにした。
|
||||
「ファイル/フォルダ/新規フォルダを作成」からニュースグループの
|
||||
購読が行えるようにした。
|
||||
|
||||
2004-11-04
|
||||
|
||||
* src/folderview.[ch]
|
||||
src/mainwindow.c: フォルダ/メールボックスのメニューを再構成。
|
||||
メインメニューで「メールボックスを削除」、「新着メッセージを
|
||||
チェック」、「フォルダツリーを再構築」を有効にした。
|
||||
フォルダのコンテキストメニューから「メールボックスを削除」を
|
||||
削除。
|
||||
|
||||
2004-11-04
|
||||
|
||||
* src/folderview.c
|
||||
src/mainwindow.c
|
||||
src/procmsg.[ch]: フォルダのコンテキストメニューに「ごみ箱を
|
||||
空にする」を追加。
|
||||
|
||||
2004-11-01
|
||||
|
||||
* src/filter.[ch]
|
||||
src/summaryview.c: immediate_execution が off の場合は即座に移動
|
||||
または削除しないようにした。
|
||||
|
||||
2004-10-29
|
||||
|
||||
* version 1.0.0beta1
|
||||
|
||||
2004-10-29
|
||||
|
||||
* gettext-0.14.1 に更新。
|
||||
|
||||
2004-10-28
|
||||
|
||||
* src/compose.c: メニューを再構成。
|
||||
* src/mh.c: デバッグ用の g_print() を削除。
|
||||
|
||||
2004-10-27
|
||||
|
||||
* src/compose.c
|
||||
src/prefs_template.c
|
||||
src/template.[ch]: テンプレートのパラメータに Cc: を追加。
|
||||
|
||||
2004-10-26
|
||||
|
||||
* src/prefs_filter_edit.c: 既存のルールの編集中の条件メニュー切替え
|
||||
の問題を修正。
|
||||
|
||||
2004-10-25
|
||||
|
||||
* src/filter.c: filter_action_exec(): ローカルフィルタリング時
|
||||
FolderItem のカウンタを更新するようにした(フォルダビューの
|
||||
メッセージカウントがおかしくなるのを修正)。
|
||||
|
||||
2004-10-25
|
||||
|
||||
* src/mbox.c: proc_mbox(): folder_table が NULL かどうかをチェック
|
||||
(警告を修正)。
|
||||
|
||||
2004-10-21
|
||||
|
||||
* src/pixmaps/stock_add_16.xpm
|
||||
src/pixmaps/stock_remove_16.xpm: gtk-2.4 のストックアイコンから変換。
|
||||
* src/prefs_filter_edit.c: 追加/削除ボタンにアイコンを使用。
|
||||
* src/stock_pixmap.[ch]: 追加/削除のアイコンを追加。
|
||||
|
||||
2004-10-21
|
||||
|
||||
* src/pixmaps/stock_dialog_error_48.xpm
|
||||
src/pixmaps/stock_dialog_info_48.xpm
|
||||
src/pixmaps/stock_dialog_question_48.xpm
|
||||
src/pixmaps/stock_dialog_warning_48.xpm: gtk-2.4 のストックアイコン
|
||||
からダイアログアイコンを変換。
|
||||
* src/alertpanel.[ch]: 警告ダイアログにアイコンを追加。
|
||||
alertpanel_message(): AlertType を追加。
|
||||
* src/stock_pixmaps.[ch]: ダイアログアイコンを追加。
|
||||
|
||||
2004-10-08
|
||||
|
||||
* src/procmsg.c: 冗長なデバッグ出力を削除。
|
||||
|
||||
2004-10-07
|
||||
|
||||
* version 0.9.99
|
||||
|
||||
2004-10-07
|
||||
|
||||
* src/procmsg.c: procmsg_send_queue()
|
||||
src/send_message.c: send_queue_info_free(): 不正なキューメッセージ
|
||||
を送信しようとしたときに segmentation fault になるバグを修正。
|
||||
|
||||
2004-10-06
|
||||
|
||||
* src/mainwindow.c: ファイルメニューにセパレータを追加。
|
||||
* src/prefs_filter_edit.c: いくつかのデバッグ出力を削除。
|
||||
|
||||
2004-10-05
|
||||
|
||||
* src/inputdialog.c: input_dialog_open(): 入力ダイアログが開いている
|
||||
間はメールの自動チェックを開始しないようにした。
|
||||
|
||||
2004-10-04
|
||||
|
||||
* src/mh.c: mh_remove_all_msg()
|
||||
src/procmsg.c: procmsg_empty_trash(): ごみ箱を空にした後メッセージ
|
||||
数のカウントがおかしくなるのを修正。
|
||||
|
||||
2004-10-01
|
||||
|
||||
* src/prefs_filter.c: 自動作成されたルールを追加できないバグを修正。
|
||||
* src/prefs_filter_edit.c: prefs_filter_edit_dialog_to_rule(): ルール
|
||||
名が存在するかどうかをチェック。
|
||||
|
||||
2004-09-30
|
||||
|
||||
* src/filter.c: filter_apply_msginfo(): FilterRule::enabled == FALSE
|
||||
|
|
27
NEWS
27
NEWS
|
@ -1,5 +1,32 @@
|
|||
Changes of Sylpheed
|
||||
|
||||
* 1.0beta2
|
||||
|
||||
* don't move or delete immediately at local filtering when immediate
|
||||
execution option is off.
|
||||
* 'Empty trash' has been added to the folder context menu.
|
||||
* 'Remove mailbox' has been removed from the folder context menu.
|
||||
* 'File' menu in the main menu has been reorganized.
|
||||
* AND/OR matching option has been added to the summary search dialog.
|
||||
* APOP setting became a separate option for POP3.
|
||||
|
||||
* 1.0beta1
|
||||
|
||||
* Icons are added to the alert dialog and filter edit dialog.
|
||||
* Cc is added for the parameter of templates.
|
||||
* The menu of composition window has been reorganized.
|
||||
* Gettext has been upgraded to 0.14.1.
|
||||
* Some minor bugs of filtering have been fixed.
|
||||
|
||||
* 0.9.99
|
||||
|
||||
* The new filtering system, which has many new features, has been
|
||||
implemented.
|
||||
* The handling of 'New' flags for messages has been modified.
|
||||
* The spool path setting can now take both file and directory.
|
||||
* Invalid URIs used by DnD has been fixed.
|
||||
* Other bugfixes have been made.
|
||||
|
||||
* 0.9.12
|
||||
|
||||
* A session timeout for POP3/SMTP has been implemented.
|
||||
|
|
|
@ -225,3 +225,4 @@
|
|||
( cvs diff -u -r 1.395.2.37 -r 1.395.2.38 src/summaryview.c; ) > 0.9.12cvs143.1.patchset
|
||||
( cvs diff -u -r 1.2504.2.30 -r 1.2504.2.31 ChangeLog.claws; cvs diff -u -r 1.382.2.61 -r 1.382.2.62 src/compose.c; cvs diff -u -r 1.213.2.19 -r 1.213.2.20 src/folder.c; cvs diff -u -r 1.2.2.3 -r 1.2.2.4 src/folder_item_prefs.c; cvs diff -u -r 1.105.2.10 -r 1.105.2.11 src/prefs_account.c; cvs diff -u -r 1.49.2.5 -r 1.49.2.6 src/prefs_account.h; cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/plugins/pgpmime/pgpmime.c; ) > 0.9.12cvs144.1.patchset
|
||||
( cvs diff -u -r 1.96.2.30 -r 1.96.2.31 src/textview.c; ) > 0.9.12cvs144.2.patchset
|
||||
( cvs diff -u -r 1.396.2.11 -r 1.396.2.12 ChangeLog; cvs diff -u -r 1.2504.2.31 -r 1.2504.2.32 ChangeLog.claws; cvs diff -u -r 1.391.2.11 -r 1.391.2.12 ChangeLog.jp; cvs diff -u -r 1.42.2.3 -r 1.42.2.4 NEWS; cvs diff -u -r 1.654.2.259 -r 1.654.2.260 configure.ac; cvs diff -u -r 1.61.2.14 -r 1.61.2.15 src/account.c; cvs diff -u -r 1.207.2.20 -r 1.207.2.21 src/folderview.c; cvs diff -u -r 1.20.2.2 -r 1.20.2.3 src/folderview.h; cvs diff -u -r 1.179.2.10 -r 1.179.2.11 src/imap.c; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/imap_gtk.c; cvs diff -u -r 1.149.2.16 -r 1.149.2.17 src/inc.c; cvs diff -u -r 1.274.2.22 -r 1.274.2.23 src/mainwindow.c; cvs diff -u -r 1.2.2.2 -r 1.2.2.3 src/mh_gtk.c; cvs diff -u -r 1.2.2.2 -r 1.2.2.3 src/news_gtk.c; cvs diff -u -r 1.56.2.27 -r 1.56.2.28 src/pop.c; cvs diff -u -r 1.105.2.11 -r 1.105.2.12 src/prefs_account.c; cvs diff -u -r 1.49.2.6 -r 1.49.2.7 src/prefs_account.h; cvs diff -u -r 1.3.2.3 -r 1.3.2.4 src/prefs_ext_prog.c; cvs diff -u -r 1.49.2.18 -r 1.49.2.19 src/procmime.c; cvs diff -u -r 1.17.2.6 -r 1.17.2.7 src/procmime.h; cvs diff -u -r 1.150.2.11 -r 1.150.2.12 src/procmsg.c; cvs diff -u -r 1.60.2.8 -r 1.60.2.9 src/procmsg.h; cvs diff -u -r 1.15.2.10 -r 1.15.2.11 src/summary_search.c; cvs diff -u -r 1.395.2.38 -r 1.395.2.39 src/summaryview.c; cvs diff -u -r 1.96.2.31 -r 1.96.2.32 src/textview.c; cvs diff -u -r 1.9.2.7 -r 1.9.2.8 src/common/defs.h; cvs diff -u -r 1.36.2.13 -r 1.36.2.14 src/common/utils.c; cvs diff -u -r 1.20.2.9 -r 1.20.2.10 src/common/utils.h; cvs diff -u -r 1.5.2.12 -r 1.5.2.13 src/gtk/menu.c; cvs diff -u -r 1.4.2.5 -r 1.4.2.6 src/gtk/menu.h; ) > 0.9.12cvs146.1.patchset
|
||||
|
|
|
@ -11,9 +11,9 @@ MINOR_VERSION=9
|
|||
MICRO_VERSION=12
|
||||
INTERFACE_AGE=0
|
||||
BINARY_AGE=0
|
||||
EXTRA_VERSION=144
|
||||
EXTRA_VERSION=146
|
||||
EXTRA_RELEASE=
|
||||
EXTRA_GTK2_VERSION=.2
|
||||
EXTRA_GTK2_VERSION=.1
|
||||
|
||||
if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then
|
||||
VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}${EXTRA_RELEASE}${EXTRA_GTK2_VERSION}
|
||||
|
|
|
@ -1002,9 +1002,8 @@ static void account_selected(GtkCList *clist, gint row, gint column,
|
|||
PrefsAccount *ac;
|
||||
|
||||
ac = gtk_clist_get_row_data(clist, row);
|
||||
if (ac->protocol == A_POP3 || ac->protocol == A_APOP ||
|
||||
ac->protocol == A_IMAP4 || ac->protocol == A_NNTP ||
|
||||
ac->protocol == A_LOCAL) {
|
||||
if (ac->protocol == A_POP3 || ac->protocol == A_IMAP4 ||
|
||||
ac->protocol == A_NNTP || ac->protocol == A_LOCAL) {
|
||||
ac->recv_at_getall ^= TRUE;
|
||||
account_clist_set_row(ac, row);
|
||||
}
|
||||
|
@ -1043,11 +1042,6 @@ static gint account_clist_set_row(PrefsAccount *ac_prefs, gint row)
|
|||
"POP3 (SSL)" :
|
||||
ac_prefs->ssl_pop == SSL_STARTTLS ?
|
||||
"POP3 (TLS)" : "POP3") :
|
||||
ac_prefs->protocol == A_APOP ?
|
||||
(ac_prefs->ssl_pop == SSL_TUNNEL ?
|
||||
"POP3 (APOP, SSL)" :
|
||||
ac_prefs->ssl_pop == SSL_STARTTLS ?
|
||||
"POP3 (APOP, TLS)" : "POP3 (APOP)") :
|
||||
ac_prefs->protocol == A_IMAP4 ?
|
||||
(ac_prefs->ssl_imap == SSL_TUNNEL ?
|
||||
"IMAP4 (SSL)" :
|
||||
|
@ -1059,7 +1053,6 @@ static gint account_clist_set_row(PrefsAccount *ac_prefs, gint row)
|
|||
"";
|
||||
#else
|
||||
text[COL_PROTOCOL] = ac_prefs->protocol == A_POP3 ? "POP3" :
|
||||
ac_prefs->protocol == A_APOP ? "POP3 (APOP)" :
|
||||
ac_prefs->protocol == A_IMAP4 ? "IMAP4" :
|
||||
ac_prefs->protocol == A_LOCAL ? "Local" :
|
||||
ac_prefs->protocol == A_NNTP ? "NNTP" : "";
|
||||
|
@ -1078,7 +1071,6 @@ static gint account_clist_set_row(PrefsAccount *ac_prefs, gint row)
|
|||
}
|
||||
|
||||
has_getallbox = (ac_prefs->protocol == A_POP3 ||
|
||||
ac_prefs->protocol == A_APOP ||
|
||||
ac_prefs->protocol == A_IMAP4 ||
|
||||
ac_prefs->protocol == A_NNTP ||
|
||||
ac_prefs->protocol == A_LOCAL);
|
||||
|
|
|
@ -86,7 +86,7 @@
|
|||
/* #define DEFAULT_INC_PATH "/usr/bin/imget" */
|
||||
/* #define DEFAULT_INC_PROGRAM "imget" */
|
||||
#define DEFAULT_SENDMAIL_CMD "/usr/sbin/sendmail -t -i"
|
||||
#define DEFAULT_BROWSER_CMD "mozilla -remote 'openURL(%s, new-window)'"
|
||||
#define DEFAULT_BROWSER_CMD "mozilla-firefox -remote 'openURL(%s,new-window)'"
|
||||
|
||||
#ifdef _PATH_MAILDIR
|
||||
# define DEFAULT_SPOOL_PATH _PATH_MAILDIR
|
||||
|
|
|
@ -144,6 +144,26 @@ void ptr_array_free_strings(GPtrArray *array)
|
|||
}
|
||||
}
|
||||
|
||||
gboolean str_find(const gchar *haystack, const gchar *needle)
|
||||
{
|
||||
return strstr(haystack, needle) != NULL ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
gboolean str_case_find(const gchar *haystack, const gchar *needle)
|
||||
{
|
||||
return strcasestr(haystack, needle) != NULL ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
gboolean str_find_equal(const gchar *haystack, const gchar *needle)
|
||||
{
|
||||
return strcmp(haystack, needle) == 0;
|
||||
}
|
||||
|
||||
gboolean str_case_find_equal(const gchar *haystack, const gchar *needle)
|
||||
{
|
||||
return strcasecmp(haystack, needle) == 0;
|
||||
}
|
||||
|
||||
gint to_number(const gchar *nstr)
|
||||
{
|
||||
register const guchar *p;
|
||||
|
@ -2900,6 +2920,8 @@ FILE *my_tmpfile(void)
|
|||
tmpdir = get_tmp_dir();
|
||||
tmplen = strlen(tmpdir);
|
||||
progname = g_get_prgname();
|
||||
if (progname == NULL)
|
||||
progname = "sylpheed-claws";
|
||||
proglen = strlen(progname);
|
||||
Xalloca(fname, tmplen + 1 + proglen + sizeof(suffix),
|
||||
return tmpfile());
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2003 Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2004 Hiroyuki Yamamoto
|
||||
*
|
||||
* 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
|
||||
|
@ -175,6 +175,18 @@ guint str_case_hash (gconstpointer key);
|
|||
|
||||
void ptr_array_free_strings (GPtrArray *array);
|
||||
|
||||
typedef gboolean (*StrFindFunc) (const gchar *haystack,
|
||||
const gchar *needle);
|
||||
|
||||
gboolean str_find (const gchar *haystack,
|
||||
const gchar *needle);
|
||||
gboolean str_case_find (const gchar *haystack,
|
||||
const gchar *needle);
|
||||
gboolean str_find_equal (const gchar *haystack,
|
||||
const gchar *needle);
|
||||
gboolean str_case_find_equal (const gchar *haystack,
|
||||
const gchar *needle);
|
||||
|
||||
/* number-string conversion */
|
||||
gint to_number (const gchar *nstr);
|
||||
gchar *itos_buf (gchar *nstr,
|
||||
|
|
|
@ -586,7 +586,7 @@ static void mark_all_read_cb(FolderView *folderview, guint action,
|
|||
{
|
||||
FolderItem *item;
|
||||
|
||||
item = folderview_get_selected(folderview);
|
||||
item = folderview_get_selected_item(folderview);
|
||||
if (item == NULL)
|
||||
return;
|
||||
|
||||
|
@ -658,6 +658,14 @@ void folderview_select_next_unread(FolderView *folderview)
|
|||
folderview_select_node(folderview, node);
|
||||
}
|
||||
|
||||
FolderItem *folderview_get_selected_item(FolderView *folderview)
|
||||
{
|
||||
GtkCTree *ctree = GTK_CTREE(folderview->ctree);
|
||||
|
||||
if (!folderview->selected) return NULL;
|
||||
return gtk_ctree_node_get_row_data(ctree, folderview->selected);
|
||||
}
|
||||
|
||||
void folderview_update_msg_num(FolderView *folderview, GtkCTreeNode *row)
|
||||
{
|
||||
GtkCTree *ctree = GTK_CTREE(folderview->ctree);
|
||||
|
@ -2152,12 +2160,6 @@ static void folderview_drag_end_cb(GtkWidget *widget,
|
|||
folderview->nodes_to_recollapse = NULL;
|
||||
}
|
||||
|
||||
FolderItem *folderview_get_selected(FolderView *folderview)
|
||||
{
|
||||
return (FolderItem *) gtk_ctree_node_get_row_data(
|
||||
GTK_CTREE(folderview->ctree), folderview->selected);
|
||||
}
|
||||
|
||||
void folderview_register_popup(FolderViewPopup *fpopup)
|
||||
{
|
||||
GList *folderviews;
|
||||
|
|
|
@ -72,13 +72,17 @@ struct _FolderViewPopup
|
|||
void folderview_initialize (void);
|
||||
FolderView *folderview_create (void);
|
||||
void folderview_init (FolderView *folderview);
|
||||
|
||||
void folderview_set (FolderView *folderview);
|
||||
void folderview_set_all (void);
|
||||
|
||||
void folderview_select (FolderView *folderview,
|
||||
FolderItem *item);
|
||||
void folderview_unselect (FolderView *folderview);
|
||||
FolderItem *folderview_get_selected (FolderView *folderview);
|
||||
void folderview_select_next_unread (FolderView *folderview);
|
||||
|
||||
FolderItem *folderview_get_selected_item(FolderView *folderview);
|
||||
|
||||
void folderview_update_msg_num (FolderView *folderview,
|
||||
GtkCTreeNode *row);
|
||||
|
||||
|
|
|
@ -203,6 +203,17 @@ gint menu_find_option_menu_index(GtkOptionMenu *optmenu, gpointer data,
|
|||
return -1;
|
||||
}
|
||||
|
||||
gpointer menu_get_option_menu_active_user_data(GtkOptionMenu *optmenu)
|
||||
{
|
||||
GtkWidget *menu;
|
||||
GtkWidget *menuitem;
|
||||
|
||||
menu = gtk_option_menu_get_menu(optmenu);
|
||||
menuitem = gtk_menu_get_active(GTK_MENU(menu));
|
||||
|
||||
return g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID);
|
||||
}
|
||||
|
||||
/* call backs for accelerator changes on selected menu items */
|
||||
static void menu_item_add_accel( GtkWidget *widget, guint accel_signal_id, GtkAccelGroup *accel_group,
|
||||
guint accel_key, GdkModifierType accel_mods, GtkAccelFlags accel_flags,
|
||||
|
|
|
@ -84,6 +84,8 @@ gint menu_find_option_menu_index(GtkOptionMenu *optmenu,
|
|||
gpointer data,
|
||||
GCompareFunc func);
|
||||
|
||||
gpointer menu_get_option_menu_active_user_data
|
||||
(GtkOptionMenu *optmenu);
|
||||
void menu_connect_identical_items(void);
|
||||
|
||||
void menu_select_by_data (GtkMenu *menu,
|
||||
|
|
|
@ -333,7 +333,9 @@ static gint imap_cmd_login (IMAPSession *session,
|
|||
const gchar *pass);
|
||||
static gint imap_cmd_logout (IMAPSession *session);
|
||||
static gint imap_cmd_noop (IMAPSession *session);
|
||||
#if USE_OPENSSL
|
||||
static gint imap_cmd_starttls (IMAPSession *session);
|
||||
#endif
|
||||
static gint imap_cmd_namespace (IMAPSession *session,
|
||||
gchar **ns_str);
|
||||
static gint imap_cmd_list (IMAPSession *session,
|
||||
|
@ -2662,11 +2664,13 @@ static gint imap_cmd_noop(IMAPSession *session)
|
|||
return imap_cmd_ok(session, NULL);
|
||||
}
|
||||
|
||||
#if USE_OPENSSL
|
||||
static gint imap_cmd_starttls(IMAPSession *session)
|
||||
{
|
||||
imap_gen_send(session, "STARTTLS");
|
||||
return imap_cmd_ok(session, NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define THROW(err) { ok = err; goto catch; }
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@ static void rename_folder_cb(FolderView *folderview, guint action,
|
|||
gchar *old_id;
|
||||
gchar *new_id;
|
||||
|
||||
item = folderview_get_selected(folderview);
|
||||
item = folderview_get_selected_item(folderview);
|
||||
g_return_if_fail(item != NULL);
|
||||
g_return_if_fail(item->path != NULL);
|
||||
g_return_if_fail(item->folder != NULL);
|
||||
|
@ -220,7 +220,7 @@ static void move_folder_cb(FolderView *folderview, guint action, GtkWidget *widg
|
|||
{
|
||||
FolderItem *from_folder = NULL, *to_folder = NULL;
|
||||
|
||||
from_folder = folderview_get_selected(folderview);
|
||||
from_folder = folderview_get_selected_item(folderview);
|
||||
if (!from_folder || from_folder->folder->klass != imap_get_class())
|
||||
return;
|
||||
|
||||
|
@ -331,7 +331,7 @@ static void update_tree_cb(FolderView *folderview, guint action,
|
|||
{
|
||||
FolderItem *item;
|
||||
|
||||
item = folderview_get_selected(folderview);
|
||||
item = folderview_get_selected_item(folderview);
|
||||
g_return_if_fail(item != NULL);
|
||||
|
||||
summary_show(folderview->summaryview, NULL);
|
||||
|
|
|
@ -458,7 +458,7 @@ static IncSession *inc_session_new(PrefsAccount *account)
|
|||
|
||||
g_return_val_if_fail(account != NULL, NULL);
|
||||
|
||||
if (account->protocol != A_POP3 && account->protocol != A_APOP)
|
||||
if (account->protocol != A_POP3)
|
||||
return NULL;
|
||||
if (!account->recv_server || !account->userid)
|
||||
return NULL;
|
||||
|
|
|
@ -439,10 +439,13 @@ static GtkItemFactoryEntry mainwin_entries[] =
|
|||
{N_("/_File"), NULL, NULL, 0, "<Branch>"},
|
||||
{N_("/_File/_Add mailbox"), NULL, NULL, 0, "<Branch>"},
|
||||
{N_("/_File/_Add mailbox/MH..."), NULL, add_mailbox_cb, 0, NULL},
|
||||
{N_("/_File/---"), NULL, NULL, 0, "<Separator>"},
|
||||
{N_("/_File/Change folder order"), NULL, foldersort_cb, 0, NULL},
|
||||
{N_("/_File/---"), NULL, NULL, 0, "<Separator>"},
|
||||
{N_("/_File/_Import mbox file..."), NULL, import_mbox_cb, 0, NULL},
|
||||
{N_("/_File/_Export to mbox file..."), NULL, export_mbox_cb, 0, NULL},
|
||||
{N_("/_File/Empty all _Trash folders"), "<shift>D", empty_trash_cb, 0, NULL},
|
||||
{N_("/_File/---"), NULL, NULL, 0, "<Separator>"},
|
||||
{N_("/_File/Empty all _Trash folders"), "<shift>D", empty_trash_cb, 0, NULL},
|
||||
{N_("/_File/---"), NULL, NULL, 0, "<Separator>"},
|
||||
{N_("/_File/_Save as..."), "<control>S", save_as_cb, 0, NULL},
|
||||
{N_("/_File/_Print..."), NULL, print_cb, 0, NULL},
|
||||
|
@ -1610,7 +1613,7 @@ void main_window_empty_trash(MainWindow *mainwin, gboolean confirm)
|
|||
manage_window_focus_in(mainwin->window, NULL, NULL);
|
||||
}
|
||||
|
||||
procmsg_empty_trash();
|
||||
procmsg_empty_all_trash();
|
||||
|
||||
if (mainwin->summaryview->folder_item &&
|
||||
mainwin->summaryview->folder_item->stype == F_TRASH)
|
||||
|
@ -2749,7 +2752,7 @@ static void delete_duplicated_cb(MainWindow *mainwin, guint action,
|
|||
{
|
||||
FolderItem *item;
|
||||
|
||||
item = folderview_get_selected(mainwin->folderview);
|
||||
item = folderview_get_selected_item(mainwin->folderview);
|
||||
if (item) {
|
||||
main_window_cursor_wait(mainwin);
|
||||
STATUSBAR_PUSH(mainwin, _("Deleting duplicated messages..."));
|
||||
|
|
10
src/mh_gtk.c
10
src/mh_gtk.c
|
@ -156,7 +156,7 @@ static void delete_folder_cb(FolderView *folderview, guint action,
|
|||
gchar *old_path;
|
||||
gchar *old_id;
|
||||
|
||||
item = folderview_get_selected(folderview);
|
||||
item = folderview_get_selected_item(folderview);
|
||||
g_return_if_fail(item != NULL);
|
||||
g_return_if_fail(item->path != NULL);
|
||||
g_return_if_fail(item->folder != NULL);
|
||||
|
@ -207,7 +207,7 @@ static void rename_folder_cb(FolderView *folderview, guint action,
|
|||
gchar *old_id;
|
||||
gchar *new_id;
|
||||
|
||||
item = folderview_get_selected(folderview);
|
||||
item = folderview_get_selected_item(folderview);
|
||||
g_return_if_fail(item != NULL);
|
||||
g_return_if_fail(item->path != NULL);
|
||||
g_return_if_fail(item->folder != NULL);
|
||||
|
@ -261,7 +261,7 @@ static void move_folder_cb(FolderView *folderview, guint action, GtkWidget *widg
|
|||
{
|
||||
FolderItem *from_folder = NULL, *to_folder = NULL;
|
||||
|
||||
from_folder = folderview_get_selected(folderview);
|
||||
from_folder = folderview_get_selected_item(folderview);
|
||||
if (!from_folder || from_folder->folder->klass != mh_get_class())
|
||||
return;
|
||||
|
||||
|
@ -277,7 +277,7 @@ static void update_tree_cb(FolderView *folderview, guint action,
|
|||
{
|
||||
FolderItem *item;
|
||||
|
||||
item = folderview_get_selected(folderview);
|
||||
item = folderview_get_selected_item(folderview);
|
||||
g_return_if_fail(item != NULL);
|
||||
|
||||
summary_show(folderview->summaryview, NULL);
|
||||
|
@ -298,7 +298,7 @@ static void remove_mailbox_cb(FolderView *folderview, guint action,
|
|||
gchar *message;
|
||||
AlertValue avalue;
|
||||
|
||||
item = folderview_get_selected(folderview);
|
||||
item = folderview_get_selected_item(folderview);
|
||||
g_return_if_fail(item != NULL);
|
||||
g_return_if_fail(item->folder != NULL);
|
||||
if (folder_item_parent(item)) return;
|
||||
|
|
|
@ -268,7 +268,7 @@ static void update_tree_cb(FolderView *folderview, guint action,
|
|||
{
|
||||
FolderItem *item;
|
||||
|
||||
item = folderview_get_selected(folderview);
|
||||
item = folderview_get_selected_item(folderview);
|
||||
g_return_if_fail(item != NULL);
|
||||
|
||||
summary_show(folderview->summaryview, NULL);
|
||||
|
|
|
@ -207,7 +207,7 @@ static gint pop3_getrange_last_recv(Pop3Session *session, const gchar *msg)
|
|||
gint last;
|
||||
|
||||
if (sscanf(msg, "%d", &last) == 0) {
|
||||
log_error(_("POP3 protocol error\n"));
|
||||
log_warning(_("POP3 protocol error\n"));
|
||||
session->error_val = PS_PROTOCOL;
|
||||
return -1;
|
||||
} else {
|
||||
|
@ -271,6 +271,7 @@ static gint pop3_getrange_uidl_recv(Pop3Session *session, const gchar *data,
|
|||
session->msg[num].received =
|
||||
(partial_recv != POP3_MUST_COMPLETE_RECV);
|
||||
session->msg[num].partial_recv = partial_recv;
|
||||
|
||||
}
|
||||
if (!session->new_msg_exist &&
|
||||
(session->ac_prefs->getall || recv_time == RECV_TIME_NONE ||
|
||||
|
@ -872,7 +873,7 @@ static gint pop3_session_recv_msg(Session *session, const gchar *msg)
|
|||
pop3_stls_send(pop3_session);
|
||||
else
|
||||
#endif
|
||||
if (pop3_session->ac_prefs->protocol == A_APOP)
|
||||
if (pop3_session->ac_prefs->use_apop_auth)
|
||||
pop3_getauth_apop_send(pop3_session);
|
||||
else
|
||||
pop3_getauth_user_send(pop3_session);
|
||||
|
@ -881,7 +882,7 @@ static gint pop3_session_recv_msg(Session *session, const gchar *msg)
|
|||
case POP3_STLS:
|
||||
if (pop3_stls_recv(pop3_session) != PS_SUCCESS)
|
||||
return -1;
|
||||
if (pop3_session->ac_prefs->protocol == A_APOP)
|
||||
if (pop3_session->ac_prefs->use_apop_auth)
|
||||
pop3_getauth_apop_send(pop3_session);
|
||||
else
|
||||
pop3_getauth_user_send(pop3_session);
|
||||
|
|
|
@ -89,6 +89,7 @@ static struct Basic {
|
|||
|
||||
static struct Receive {
|
||||
GtkWidget *pop3_frame;
|
||||
GtkWidget *use_apop_chkbtn;
|
||||
GtkWidget *rmmail_chkbtn;
|
||||
GtkWidget *leave_time_entry;
|
||||
GtkWidget *getall_chkbtn;
|
||||
|
@ -282,6 +283,10 @@ static PrefParam param[] = {
|
|||
&receive.inbox_entry, prefs_set_data_from_entry, prefs_set_entry},
|
||||
|
||||
/* Receive */
|
||||
{"use_apop_auth", "FALSE", &tmp_ac_prefs.use_apop_auth, P_BOOL,
|
||||
&receive.use_apop_chkbtn,
|
||||
prefs_set_data_from_toggle, prefs_set_toggle},
|
||||
|
||||
{"remove_mail", "TRUE", &tmp_ac_prefs.rmmail, P_BOOL,
|
||||
&receive.rmmail_chkbtn,
|
||||
prefs_set_data_from_toggle, prefs_set_toggle},
|
||||
|
@ -574,6 +579,12 @@ void prefs_account_read_config(PrefsAccount *ac_prefs, const gchar *label)
|
|||
if (id < 0) g_warning("wrong account id: %d\n", id);
|
||||
ac_prefs->account_id = id;
|
||||
|
||||
if (ac_prefs->protocol == A_APOP) {
|
||||
debug_print("converting protocol A_APOP to new prefs.\n");
|
||||
ac_prefs->protocol = A_POP3;
|
||||
ac_prefs->use_apop_auth = TRUE;
|
||||
}
|
||||
|
||||
prefs_custom_header_read_config(ac_prefs);
|
||||
}
|
||||
|
||||
|
@ -642,6 +653,7 @@ void update_privacy_system_menu() {
|
|||
GSList *system_ids, *cur;
|
||||
|
||||
menu = gtk_menu_new();
|
||||
|
||||
menuitem = gtk_menu_item_new_with_label(_("None"));
|
||||
gtk_widget_show(menuitem);
|
||||
g_object_set_data(G_OBJECT(menuitem), MENU_VAL_ID, "");
|
||||
|
@ -939,9 +951,7 @@ static void prefs_account_basic_create(void)
|
|||
|
||||
optmenu_menu = gtk_menu_new ();
|
||||
|
||||
MENUITEM_ADD (optmenu_menu, menuitem, _("POP3 (normal)"), A_POP3);
|
||||
SET_ACTIVATE (menuitem);
|
||||
MENUITEM_ADD (optmenu_menu, menuitem, _("POP3 (APOP auth)"), A_APOP);
|
||||
MENUITEM_ADD (optmenu_menu, menuitem, _("POP3"), A_POP3);
|
||||
SET_ACTIVATE (menuitem);
|
||||
MENUITEM_ADD (optmenu_menu, menuitem, _("IMAP4"), A_IMAP4);
|
||||
SET_ACTIVATE (menuitem);
|
||||
|
@ -1115,6 +1125,7 @@ static void prefs_account_receive_create(void)
|
|||
GtkWidget *vbox1;
|
||||
GtkWidget *frame1;
|
||||
GtkWidget *vbox2;
|
||||
GtkWidget *use_apop_chkbtn;
|
||||
GtkWidget *rmmail_chkbtn;
|
||||
GtkWidget *hbox_spc;
|
||||
GtkWidget *leave_time_label;
|
||||
|
@ -1153,6 +1164,9 @@ static void prefs_account_receive_create(void)
|
|||
gtk_container_add (GTK_CONTAINER (frame1), vbox2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
|
||||
|
||||
PACK_CHECK_BUTTON (vbox2, use_apop_chkbtn,
|
||||
_("Use secure authentication (APOP)"));
|
||||
|
||||
PACK_CHECK_BUTTON (vbox2, rmmail_chkbtn,
|
||||
_("Remove messages on server when received"));
|
||||
|
||||
|
@ -1310,6 +1324,7 @@ static void prefs_account_receive_create(void)
|
|||
_("`Get all' checks for new messages on this account"));
|
||||
|
||||
receive.pop3_frame = frame1;
|
||||
receive.use_apop_chkbtn = use_apop_chkbtn;
|
||||
receive.rmmail_chkbtn = rmmail_chkbtn;
|
||||
receive.leave_time_entry = leave_time_entry;
|
||||
receive.getall_chkbtn = getall_chkbtn;
|
||||
|
@ -2170,19 +2185,18 @@ static gint prefs_account_apply(void)
|
|||
return -1;
|
||||
}
|
||||
if (((protocol == A_POP3) ||
|
||||
(protocol == A_APOP) ||
|
||||
(protocol == A_LOCAL && !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(basic.mailcmd_chkbtn))) ||
|
||||
(protocol == A_NONE)) &&
|
||||
*gtk_entry_get_text(GTK_ENTRY(basic.smtpserv_entry)) == '\0') {
|
||||
alertpanel_error(_("SMTP server is not entered."));
|
||||
return -1;
|
||||
}
|
||||
if ((protocol == A_POP3 || protocol == A_APOP || protocol == A_IMAP4) &&
|
||||
if ((protocol == A_POP3 || protocol == A_IMAP4) &&
|
||||
*gtk_entry_get_text(GTK_ENTRY(basic.uid_entry)) == '\0') {
|
||||
alertpanel_error(_("User ID is not entered."));
|
||||
return -1;
|
||||
}
|
||||
if ((protocol == A_POP3 || protocol == A_APOP) &&
|
||||
if (protocol == A_POP3 &&
|
||||
*gtk_entry_get_text(GTK_ENTRY(basic.recvserv_entry)) == '\0') {
|
||||
alertpanel_error(_("POP3 server is not entered."));
|
||||
return -1;
|
||||
|
@ -2301,43 +2315,19 @@ static void prefs_account_protocol_set_optmenu(PrefParam *pparam)
|
|||
GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
|
||||
GtkWidget *menu;
|
||||
GtkWidget *menuitem;
|
||||
GList *children;
|
||||
gint list_order[] = {
|
||||
0, /* A_POP3 */
|
||||
1, /* A_APOP */
|
||||
-1, /* A_RPOP */
|
||||
2, /* A_IMAP4 */
|
||||
3, /* A_NNTP */
|
||||
4, /* A_LOCAL */
|
||||
5, /* A_NONE */
|
||||
};
|
||||
gint index;
|
||||
|
||||
protocol = *((RecvProtocol *)pparam->data);
|
||||
if (protocol < 0 || protocol > A_NONE) return;
|
||||
if (list_order[protocol] < 0) return;
|
||||
gtk_option_menu_set_history(optmenu, list_order[protocol]);
|
||||
index = menu_find_option_menu_index
|
||||
(optmenu, GINT_TO_POINTER(protocol), NULL);
|
||||
if (index < 0) return;
|
||||
gtk_option_menu_set_history(optmenu, index);
|
||||
|
||||
menu = gtk_option_menu_get_menu(optmenu);
|
||||
menu_set_insensitive_all(GTK_MENU_SHELL(menu));
|
||||
|
||||
#define SET_NTH_SENSITIVE(proto) \
|
||||
{ \
|
||||
menuitem = g_list_nth_data(children, list_order[proto]); \
|
||||
if (menuitem) \
|
||||
gtk_widget_set_sensitive(menuitem, TRUE); \
|
||||
}
|
||||
|
||||
children = GTK_MENU_SHELL(menu)->children;
|
||||
SET_NTH_SENSITIVE(protocol);
|
||||
if (protocol == A_POP3) {
|
||||
SET_NTH_SENSITIVE(A_APOP);
|
||||
} else if (protocol == A_APOP) {
|
||||
SET_NTH_SENSITIVE(A_POP3);
|
||||
}
|
||||
|
||||
#undef SET_NTH_SENSITIVE
|
||||
|
||||
menuitem = gtk_menu_get_active(GTK_MENU(menu));
|
||||
gtk_widget_set_sensitive(menuitem, TRUE);
|
||||
gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
|
||||
}
|
||||
|
||||
|
|
|
@ -28,8 +28,8 @@ typedef struct _PrefsAccount PrefsAccount;
|
|||
|
||||
typedef enum {
|
||||
A_POP3,
|
||||
A_APOP,
|
||||
A_RPOP,
|
||||
A_APOP, /* deprecated */
|
||||
A_RPOP, /* deprecated */
|
||||
A_IMAP4,
|
||||
A_NNTP,
|
||||
A_LOCAL,
|
||||
|
@ -82,6 +82,7 @@ struct _PrefsAccount
|
|||
gchar *tmp_pass;
|
||||
|
||||
/* Receive */
|
||||
gboolean use_apop_auth;
|
||||
gboolean rmmail;
|
||||
gint msg_leave_time;
|
||||
gboolean getall;
|
||||
|
|
|
@ -138,8 +138,8 @@ void prefs_ext_prog_create_widget(PrefsPage *_page, GtkWindow *window,
|
|||
"gnome-moz-remote --newwin '%s'",
|
||||
"kfmclient openURL '%s'",
|
||||
"opera -newwindow '%s'",
|
||||
"kterm -e w3m '%s'",
|
||||
"kterm -e lynx '%s'",
|
||||
"rxvt -e w3m '%s'",
|
||||
"rxvt -e lynx '%s'",
|
||||
NULL);
|
||||
uri_entry = GTK_COMBO (uri_combo)->entry;
|
||||
gtk_entry_set_text(GTK_ENTRY(uri_entry), prefs_common.uri_cmd ? prefs_common.uri_cmd : "");
|
||||
|
|
|
@ -738,28 +738,24 @@ FILE *procmime_get_first_text_content(MsgInfo *msginfo)
|
|||
}
|
||||
|
||||
gboolean procmime_find_string_part(MimeInfo *mimeinfo, const gchar *filename,
|
||||
const gchar *str, gboolean case_sens)
|
||||
const gchar *str, StrFindFunc find_func)
|
||||
{
|
||||
FILE *outfp;
|
||||
gchar buf[BUFFSIZE];
|
||||
gchar *(* StrFindFunc) (const gchar *haystack, const gchar *needle);
|
||||
|
||||
g_return_val_if_fail(mimeinfo != NULL, FALSE);
|
||||
g_return_val_if_fail(mimeinfo->type == MIMETYPE_TEXT, FALSE);
|
||||
g_return_val_if_fail(str != NULL, FALSE);
|
||||
g_return_val_if_fail(find_func != NULL, FALSE);
|
||||
|
||||
outfp = procmime_get_text_content(mimeinfo);
|
||||
|
||||
if (!outfp)
|
||||
return FALSE;
|
||||
|
||||
if (case_sens)
|
||||
StrFindFunc = strstr;
|
||||
else
|
||||
StrFindFunc = strcasestr;
|
||||
|
||||
while (fgets(buf, sizeof(buf), outfp) != NULL) {
|
||||
if (StrFindFunc(buf, str) != NULL) {
|
||||
strretchomp(buf);
|
||||
if (find_func(buf, str)) {
|
||||
fclose(outfp);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -771,7 +767,7 @@ gboolean procmime_find_string_part(MimeInfo *mimeinfo, const gchar *filename,
|
|||
}
|
||||
|
||||
gboolean procmime_find_string(MsgInfo *msginfo, const gchar *str,
|
||||
gboolean case_sens)
|
||||
StrFindFunc find_func)
|
||||
{
|
||||
MimeInfo *mimeinfo;
|
||||
MimeInfo *partinfo;
|
||||
|
@ -780,6 +776,7 @@ gboolean procmime_find_string(MsgInfo *msginfo, const gchar *str,
|
|||
|
||||
g_return_val_if_fail(msginfo != NULL, FALSE);
|
||||
g_return_val_if_fail(str != NULL, FALSE);
|
||||
g_return_val_if_fail(find_func != NULL, FALSE);
|
||||
|
||||
filename = procmsg_get_message_file(msginfo);
|
||||
if (!filename) return FALSE;
|
||||
|
@ -789,7 +786,7 @@ gboolean procmime_find_string(MsgInfo *msginfo, const gchar *str,
|
|||
partinfo = procmime_mimeinfo_next(partinfo)) {
|
||||
if (partinfo->type == MIMETYPE_TEXT) {
|
||||
if (procmime_find_string_part
|
||||
(partinfo, filename, str, case_sens) == TRUE) {
|
||||
(partinfo, filename, str, find_func) == TRUE) {
|
||||
found = TRUE;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2001 Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2004 Hiroyuki Yamamoto
|
||||
*
|
||||
* 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
|
||||
|
@ -27,6 +27,9 @@
|
|||
typedef struct _MimeType MimeType;
|
||||
typedef struct _MimeInfo MimeInfo;
|
||||
|
||||
#include "procmsg.h"
|
||||
#include "utils.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ENC_7BIT,
|
||||
|
@ -189,10 +192,10 @@ FILE *procmime_get_first_text_content (MsgInfo *msginfo);
|
|||
gboolean procmime_find_string_part (MimeInfo *mimeinfo,
|
||||
const gchar *filename,
|
||||
const gchar *str,
|
||||
gboolean case_sens);
|
||||
StrFindFunc find_func);
|
||||
gboolean procmime_find_string (MsgInfo *msginfo,
|
||||
const gchar *str,
|
||||
gboolean case_sens);
|
||||
StrFindFunc find_func);
|
||||
|
||||
gchar *procmime_get_tmp_file_name (MimeInfo *mimeinfo);
|
||||
|
||||
|
|
|
@ -600,24 +600,31 @@ void procmsg_get_filter_keyword(MsgInfo *msginfo, gchar **header, gchar **key,
|
|||
}
|
||||
}
|
||||
|
||||
void procmsg_empty_trash(void)
|
||||
void procmsg_empty_trash(FolderItem *trash)
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
if (trash && trash->total_msgs > 0) {
|
||||
GSList *mlist = folder_item_get_msg_list(trash);
|
||||
GSList *cur;
|
||||
for (cur = mlist ; cur != NULL ; cur = cur->next) {
|
||||
MsgInfo * msginfo = (MsgInfo *) cur->data;
|
||||
partial_mark_for_delete(msginfo);
|
||||
procmsg_msginfo_free(msginfo);
|
||||
}
|
||||
|
||||
folder_item_remove_all_msg(trash);
|
||||
}
|
||||
}
|
||||
|
||||
void procmsg_empty_all_trash(void)
|
||||
{
|
||||
FolderItem *trash;
|
||||
GList *cur;
|
||||
|
||||
for (cur = folder_get_list(); cur != NULL; cur = cur->next) {
|
||||
trash = FOLDER(cur->data)->trash;
|
||||
if (trash && trash->total_msgs > 0) {
|
||||
GSList *mlist = folder_item_get_msg_list(trash);
|
||||
GSList *cur;
|
||||
for (cur = mlist ; cur != NULL ; cur = cur->next) {
|
||||
MsgInfo * msginfo = (MsgInfo *) cur->data;
|
||||
partial_mark_for_delete(msginfo);
|
||||
procmsg_msginfo_free(msginfo);
|
||||
}
|
||||
|
||||
folder_item_remove_all_msg(trash);
|
||||
}
|
||||
procmsg_empty_trash(trash);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -266,7 +266,9 @@ void procmsg_get_filter_keyword (MsgInfo *msginfo,
|
|||
gchar **key,
|
||||
PrefsFilterType type);
|
||||
|
||||
void procmsg_empty_trash (void);
|
||||
void procmsg_empty_trash (FolderItem *trash);
|
||||
void procmsg_empty_all_trash (void);
|
||||
|
||||
gint procmsg_send_queue (FolderItem *queue,
|
||||
gboolean save_msgs);
|
||||
gint procmsg_save_to_outbox (FolderItem *outbox,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2003 Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2004 Hiroyuki Yamamoto
|
||||
*
|
||||
* 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
|
||||
|
@ -29,6 +29,7 @@
|
|||
#include <gtk/gtkwindow.h>
|
||||
#include <gtk/gtkvbox.h>
|
||||
#include <gtk/gtktable.h>
|
||||
#include <gtk/gtkoptionmenu.h>
|
||||
#include <gtk/gtklabel.h>
|
||||
#include <gtk/gtkentry.h>
|
||||
#include <gtk/gtkhbox.h>
|
||||
|
@ -46,12 +47,14 @@
|
|||
#include "summaryview.h"
|
||||
#include "messageview.h"
|
||||
#include "mainwindow.h"
|
||||
#include "menu.h"
|
||||
#include "utils.h"
|
||||
#include "gtkutils.h"
|
||||
#include "manage_window.h"
|
||||
#include "alertpanel.h"
|
||||
|
||||
static GtkWidget *window;
|
||||
static GtkWidget *bool_optmenu;
|
||||
static GtkWidget *from_entry;
|
||||
static GtkWidget *to_entry;
|
||||
static GtkWidget *subject_entry;
|
||||
|
@ -89,6 +92,9 @@ void summary_search(SummaryView *summaryview)
|
|||
static void summary_search_create(SummaryView *summaryview)
|
||||
{
|
||||
GtkWidget *vbox1;
|
||||
GtkWidget *bool_hbox;
|
||||
GtkWidget *bool_menu;
|
||||
GtkWidget *menuitem;
|
||||
GtkWidget *table1;
|
||||
GtkWidget *from_label;
|
||||
GtkWidget *to_label;
|
||||
|
@ -112,6 +118,19 @@ static void summary_search_create(SummaryView *summaryview)
|
|||
gtk_widget_show (vbox1);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox1);
|
||||
|
||||
bool_hbox = gtk_hbox_new(FALSE, 4);
|
||||
gtk_widget_show(bool_hbox);
|
||||
gtk_box_pack_start(GTK_BOX(vbox1), bool_hbox, FALSE, FALSE, 0);
|
||||
|
||||
bool_optmenu = gtk_option_menu_new();
|
||||
gtk_widget_show(bool_optmenu);
|
||||
gtk_box_pack_start(GTK_BOX(bool_hbox), bool_optmenu, FALSE, FALSE, 0);
|
||||
|
||||
bool_menu = gtk_menu_new();
|
||||
MENUITEM_ADD(bool_menu, menuitem, _("Match any of the following"), 0);
|
||||
MENUITEM_ADD(bool_menu, menuitem, _("Match all of the following"), 1);
|
||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(bool_optmenu), bool_menu);
|
||||
|
||||
table1 = gtk_table_new (4, 3, FALSE);
|
||||
gtk_widget_show (table1);
|
||||
gtk_box_pack_start (GTK_BOX (vbox1), table1, TRUE, TRUE, 0);
|
||||
|
@ -200,12 +219,6 @@ static void summary_search_create(SummaryView *summaryview)
|
|||
g_signal_connect(G_OBJECT(all_checkbtn), "clicked",
|
||||
G_CALLBACK(all_clicked), summaryview);
|
||||
|
||||
and_checkbtn =
|
||||
gtk_check_button_new_with_label (_("AND search"));
|
||||
gtk_widget_show (and_checkbtn);
|
||||
gtk_box_pack_start (GTK_BOX (checkbtn_hbox), and_checkbtn,
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
gtkut_button_set_create(&confirm_area,
|
||||
&search_btn, _("Search"),
|
||||
&clear_btn, _("Clear"),
|
||||
|
@ -227,48 +240,44 @@ static void summary_search_create(SummaryView *summaryview)
|
|||
FALSE);
|
||||
}
|
||||
|
||||
#define GET_ENTRY(entry) gtk_entry_get_text(GTK_ENTRY(entry))
|
||||
|
||||
static void summary_search_execute(GtkButton *button, gpointer data)
|
||||
{
|
||||
SummaryView *summaryview = data;
|
||||
GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
|
||||
GtkCTreeNode *node;
|
||||
MsgInfo *msginfo;
|
||||
gboolean bool_and;
|
||||
gboolean case_sens;
|
||||
gboolean backward;
|
||||
gboolean search_all;
|
||||
gboolean search_and;
|
||||
gboolean all_searched = FALSE;
|
||||
gboolean all_matched = FALSE;
|
||||
gboolean from_matched;
|
||||
gboolean to_matched;
|
||||
gboolean subj_matched;
|
||||
gboolean matched;
|
||||
gboolean body_matched;
|
||||
const gchar *body_str, *from_str, *to_str, *subj_str;
|
||||
char *(*findfunc) (const char *haystack, const char *needle);
|
||||
const gchar *from_str, *to_str, *subject_str, *body_str;
|
||||
StrFindFunc str_find_func;
|
||||
|
||||
if (summary_is_locked(summaryview)) return;
|
||||
summary_lock(summaryview);
|
||||
|
||||
bool_and = GPOINTER_TO_INT
|
||||
(menu_get_option_menu_active_user_data
|
||||
(GTK_OPTION_MENU(bool_optmenu)));
|
||||
case_sens = gtk_toggle_button_get_active
|
||||
(GTK_TOGGLE_BUTTON(case_checkbtn));
|
||||
backward = gtk_toggle_button_get_active
|
||||
(GTK_TOGGLE_BUTTON(backward_checkbtn));
|
||||
search_all = gtk_toggle_button_get_active
|
||||
(GTK_TOGGLE_BUTTON(all_checkbtn));
|
||||
search_and = gtk_toggle_button_get_active
|
||||
(GTK_TOGGLE_BUTTON(and_checkbtn));
|
||||
|
||||
if (case_sens)
|
||||
findfunc = strstr;
|
||||
else
|
||||
findfunc = strcasestr;
|
||||
|
||||
from_str = GET_ENTRY(from_entry);
|
||||
to_str = GET_ENTRY(to_entry);
|
||||
subj_str = GET_ENTRY(subject_entry);
|
||||
body_str = GET_ENTRY(body_entry);
|
||||
if (case_sens)
|
||||
str_find_func = str_find;
|
||||
else
|
||||
str_find_func = str_case_find;
|
||||
|
||||
from_str = gtk_entry_get_text(GTK_ENTRY(from_entry));
|
||||
to_str = gtk_entry_get_text(GTK_ENTRY(to_entry));
|
||||
subject_str = gtk_entry_get_text(GTK_ENTRY(subject_entry));
|
||||
body_str = gtk_entry_get_text(GTK_ENTRY(body_entry));
|
||||
|
||||
if (search_all) {
|
||||
gtk_clist_freeze(GTK_CLIST(ctree));
|
||||
|
@ -335,38 +344,61 @@ static void summary_search_execute(GtkButton *button, gpointer data)
|
|||
break;
|
||||
}
|
||||
|
||||
from_matched = to_matched = subj_matched = body_matched = FALSE;
|
||||
all_matched = search_and;
|
||||
|
||||
msginfo = gtk_ctree_node_get_row_data(ctree, node);
|
||||
|
||||
if (from_str && *from_str && msginfo->from) {
|
||||
if (findfunc(msginfo->from, from_str) != NULL)
|
||||
from_matched = TRUE;
|
||||
else
|
||||
all_matched = FALSE;
|
||||
}
|
||||
if (to_str && *to_str && msginfo->to) {
|
||||
if (findfunc(msginfo->to, to_str) != NULL)
|
||||
to_matched = TRUE;
|
||||
else
|
||||
all_matched = FALSE;
|
||||
}
|
||||
if (subj_str && *subj_str && msginfo->subject) {
|
||||
if (findfunc(msginfo->subject, subj_str) != NULL)
|
||||
from_matched = TRUE;
|
||||
else
|
||||
all_matched = FALSE;
|
||||
}
|
||||
if (body_str && *body_str) {
|
||||
if (procmime_find_string(msginfo, body_str, case_sens))
|
||||
body_matched = TRUE;
|
||||
else
|
||||
all_matched = FALSE;
|
||||
msginfo = gtk_ctree_node_get_row_data(ctree, node);
|
||||
body_matched = FALSE;
|
||||
|
||||
if (bool_and) {
|
||||
matched = TRUE;
|
||||
if (*from_str) {
|
||||
if (!msginfo->from ||
|
||||
!str_find_func(msginfo->from, from_str))
|
||||
matched = FALSE;
|
||||
}
|
||||
if (matched && *to_str) {
|
||||
if (!msginfo->to ||
|
||||
!str_find_func(msginfo->to, to_str))
|
||||
matched = FALSE;
|
||||
}
|
||||
if (matched && *subject_str) {
|
||||
if (!msginfo->subject ||
|
||||
!str_find_func(msginfo->subject, subject_str))
|
||||
matched = FALSE;
|
||||
}
|
||||
if (matched && *body_str) {
|
||||
if (procmime_find_string(msginfo, body_str,
|
||||
str_find_func))
|
||||
body_matched = TRUE;
|
||||
else
|
||||
matched = FALSE;
|
||||
}
|
||||
if (matched && !*from_str && !*to_str &&
|
||||
!*subject_str && !*body_str)
|
||||
matched = FALSE;
|
||||
} else {
|
||||
matched = FALSE;
|
||||
if (*from_str && msginfo->from) {
|
||||
if (str_find_func(msginfo->from, from_str))
|
||||
matched = TRUE;
|
||||
}
|
||||
if (!matched && *to_str && msginfo->to) {
|
||||
if (str_find_func(msginfo->to, to_str))
|
||||
matched = TRUE;
|
||||
}
|
||||
if (!matched && *subject_str && msginfo->subject) {
|
||||
if (str_find_func(msginfo->subject, subject_str))
|
||||
matched = TRUE;
|
||||
}
|
||||
if (!matched && *body_str) {
|
||||
if (procmime_find_string(msginfo, body_str,
|
||||
str_find_func)) {
|
||||
matched = TRUE;
|
||||
body_matched = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((from_matched || to_matched || subj_matched || body_matched)
|
||||
&& (!search_and || all_matched)) {
|
||||
if (matched) {
|
||||
if (search_all)
|
||||
gtk_ctree_select(ctree, node);
|
||||
else {
|
||||
|
@ -388,6 +420,7 @@ static void summary_search_execute(GtkButton *button, gpointer data)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
node = backward ? gtkut_ctree_node_prev(ctree, node)
|
||||
: gtkut_ctree_node_next(ctree, node);
|
||||
}
|
||||
|
@ -398,8 +431,6 @@ static void summary_search_execute(GtkButton *button, gpointer data)
|
|||
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);
|
||||
|
|
|
@ -4373,6 +4373,7 @@ static gboolean summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
|
|||
MessageView *messageview;
|
||||
TextView *textview;
|
||||
GtkAdjustment *adj;
|
||||
gboolean mod_pressed;
|
||||
|
||||
if (summary_is_locked(summaryview)) return TRUE;
|
||||
if (!event) return TRUE;
|
||||
|
@ -4457,9 +4458,16 @@ static gboolean summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
|
|||
summaryview->selected);
|
||||
break;
|
||||
}
|
||||
if (!textview_scroll_page(textview, FALSE))
|
||||
summary_select_next_unread(summaryview);
|
||||
}
|
||||
mod_pressed = ((event->state &
|
||||
(GDK_SHIFT_MASK|GDK_MOD1_MASK)) != 0);
|
||||
if (mod_pressed) {
|
||||
if (!textview_scroll_page(textview, TRUE))
|
||||
summary_select_prev_unread(summaryview);
|
||||
} else {
|
||||
if (!textview_scroll_page(textview, FALSE))
|
||||
summary_select_next_unread(summaryview);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GDK_BackSpace: /* Page up */
|
||||
textview_scroll_page(textview, TRUE);
|
||||
|
@ -4471,7 +4479,8 @@ static gboolean summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
|
|||
break;
|
||||
}
|
||||
textview_scroll_one_line
|
||||
(textview, (event->state & GDK_MOD1_MASK) != 0);
|
||||
(textview, (event->state &
|
||||
(GDK_SHIFT_MASK|GDK_MOD1_MASK)) != 0);
|
||||
break;
|
||||
case GDK_Delete:
|
||||
BREAK_ON_MODIFIER_KEY();
|
||||
|
|
|
@ -1781,14 +1781,18 @@ static gint textview_key_pressed(GtkWidget *widget, GdkEventKey *event,
|
|||
if (summaryview)
|
||||
summary_pass_key_press_event(summaryview, event);
|
||||
else
|
||||
textview_scroll_page(textview, FALSE);
|
||||
textview_scroll_page
|
||||
(textview,
|
||||
(event->state &
|
||||
(GDK_SHIFT_MASK|GDK_MOD1_MASK)) != 0);
|
||||
break;
|
||||
case GDK_BackSpace:
|
||||
textview_scroll_page(textview, TRUE);
|
||||
break;
|
||||
case GDK_Return:
|
||||
textview_scroll_one_line(textview,
|
||||
(event->state & GDK_MOD1_MASK) != 0);
|
||||
textview_scroll_one_line
|
||||
(textview, (event->state &
|
||||
(GDK_SHIFT_MASK|GDK_MOD1_MASK)) != 0);
|
||||
break;
|
||||
case GDK_Delete:
|
||||
if (summaryview)
|
||||
|
|
Loading…
Reference in a new issue