2006-09-02 [colin] 2.4.0cvs129
authorColin Leroy <colin@colino.net>
Sat, 2 Sep 2006 13:44:12 +0000 (13:44 +0000)
committerColin Leroy <colin@colino.net>
Sat, 2 Sep 2006 13:44:12 +0000 (13:44 +0000)
* src/folder.c
Make sure account-specific rules can't
be used in {pre-,post-,}processing
* src/mainwindow.c
* src/gtk/logwindow.c
* src/gtk/logwindow.h
Jump to last error when clicking on the
warning icon

ChangeLog
PATCHSETS
configure.ac
src/folder.c
src/gtk/logwindow.c
src/gtk/logwindow.h
src/mainwindow.c

index 23176c8aaa4492b6147c0964f69a37f210b99b70..585422a3c0d2425d6f2607743e815db9d4506dc9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-09-02 [colin]     2.4.0cvs129
+
+       * src/folder.c
+               Make sure account-specific rules can't
+               be used in {pre-,post-,}processing
+       * src/mainwindow.c
+       * src/gtk/logwindow.c
+       * src/gtk/logwindow.h
+               Jump to last error when clicking on the
+               warning icon
+
 2006-09-02 [colin]     2.4.0cvs128
 
        * src/imap.c
index 66d4057c3f3a53827df95fbc4b89f457027380a4..5bc05217ddd3ec826d8fa71575b0e5a58e7f332c 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.1.2.5 -r 1.1.2.6 manual/fr/account.xml;  ) > 2.4.0cvs126.patchset
 ( cvs diff -u -r 1.17.2.26 -r 1.17.2.27 src/alertpanel.c;  cvs diff -u -r 1.65.2.48 -r 1.65.2.49 src/codeconv.c;  cvs diff -u -r 1.149.2.56 -r 1.149.2.57 src/inc.c;  cvs diff -u -r 1.274.2.142 -r 1.274.2.143 src/mainwindow.c;  cvs diff -u -r 1.39.2.21 -r 1.39.2.22 src/mainwindow.h;  cvs diff -u -r 1.1.4.48 -r 1.1.4.49 src/etpan/imap-thread.c;  cvs diff -u -r 1.1.4.17 -r 1.1.4.18 src/gtk/logwindow.c;  cvs diff -u -r 1.1.4.4 -r 1.1.4.5 src/gtk/logwindow.h;  ) > 2.4.0cvs127.patchset
 ( cvs diff -u -r 1.179.2.130 -r 1.179.2.131 src/imap.c;  cvs diff -u -r 1.13.2.17 -r 1.13.2.18 src/import.c;  cvs diff -u -r 1.149.2.57 -r 1.149.2.58 src/inc.c;  cvs diff -u -r 1.274.2.143 -r 1.274.2.144 src/mainwindow.c;  cvs diff -u -r 1.39.2.22 -r 1.39.2.23 src/mainwindow.h;  cvs diff -u -r 1.28.2.25 -r 1.28.2.26 src/mbox.c;  cvs diff -u -r 1.3.2.6 -r 1.3.2.7 src/mbox.h;  ) > 2.4.0cvs128.patchset
+( cvs diff -u -r 1.213.2.112 -r 1.213.2.113 src/folder.c;  cvs diff -u -r 1.274.2.144 -r 1.274.2.145 src/mainwindow.c;  cvs diff -u -r 1.1.4.18 -r 1.1.4.19 src/gtk/logwindow.c;  cvs diff -u -r 1.1.4.5 -r 1.1.4.6 src/gtk/logwindow.h;  ) > 2.4.0cvs129.patchset
index 0052f9e1be08c606bd7c6f4ee4ddf6f4332d3c9d..fa5799e4fd72371b4470acba121399edc9694ff5 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=4
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=128
+EXTRA_VERSION=129
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index 2ff4c77130400eced1d1c34db8d6506632adbab8..0d18ba0f3b54b4a99cb4fa95d2cc144a0e644ed2 100644 (file)
@@ -3750,6 +3750,7 @@ void folder_item_apply_processing(FolderItem *item)
        GSList *processing_list;
        GSList *mlist, *cur;
        guint total = 0, curmsg = 0;
+       gint last_apply_per_account;
 
        g_return_if_fail(item != NULL);
 
@@ -3767,6 +3768,10 @@ void folder_item_apply_processing(FolderItem *item)
        mlist = folder_item_get_msg_list(item);
        total = g_slist_length(mlist);
        statusbar_print_all(_("Processing messages..."));
+
+       last_apply_per_account = prefs_common.apply_per_account_filtering_rules;
+       prefs_common.apply_per_account_filtering_rules = FILTERING_ACCOUNT_RULES_SKIP;
+
        for (cur = mlist ; cur != NULL ; cur = cur->next) {
                MsgInfo * msginfo;
 
@@ -3788,6 +3793,8 @@ void folder_item_apply_processing(FolderItem *item)
                filter_message_by_msginfo(post_global_processing, msginfo, NULL);
                 
        }
+       prefs_common.apply_per_account_filtering_rules = last_apply_per_account;
+
        if (pre_global_processing || processing_list
            || post_global_processing)
                filtering_move_and_copy_msgs(mlist);
index 28aa814410c6c19d733aa96ad5d1a217bc0a8506..d22d951544cdc70ca9988dd1fa5d37e8f5e30b05 100644 (file)
@@ -178,7 +178,7 @@ void log_window_init(LogWindow *logwin)
        gtk_text_buffer_create_tag(buffer, "warn",
                                   "foreground-gdk", &logwin->warn_color,
                                   NULL);
-       gtk_text_buffer_create_tag(buffer, "error",
+       logwin->error_tag = gtk_text_buffer_create_tag(buffer, "error",
                                   "foreground-gdk", &logwin->error_color,
                                   NULL);
        gtk_text_buffer_create_tag(buffer, "input",
@@ -208,6 +208,23 @@ void log_window_show(LogWindow *logwin)
        gtk_widget_show(logwin->window);
 }
 
+static void log_window_jump_to_error(LogWindow *logwin)
+{
+       GtkTextIter iter;
+       gtk_text_buffer_get_end_iter(logwin->buffer, &iter);
+       if (!gtk_text_iter_backward_to_tag_toggle(&iter, logwin->error_tag))
+               return;
+
+       gtk_text_iter_backward_line(&iter);
+       gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(logwin->text), &iter, 0, TRUE, 0, 0);
+}
+
+void log_window_show_error(LogWindow *logwin)
+{
+       log_window_show(logwin);
+       log_window_jump_to_error(logwin);
+}
+
 void log_window_set_clipping(LogWindow *logwin, gboolean clip, guint clip_length)
 {
        g_return_if_fail(logwin != NULL);
index 07a6cf49b6c646596f3880b9509713c6479c7003..33959594f562007c85d71505ff858b9aaebcd599 100644 (file)
@@ -41,12 +41,14 @@ struct _LogWindow
        guint    clip_length;
        guint    hook_id;
        GtkTextBuffer *buffer;
+       GtkTextTag *error_tag;
        gboolean hidden;
 };
 
 LogWindow *log_window_create(void);
 void log_window_init(LogWindow *logwin);
 void log_window_show(LogWindow *logwin);
+void log_window_show_error(LogWindow *logwin);
 void log_window_set_clipping(LogWindow *logwin, gboolean clip, guint clip_length);
 
 #endif /* __LOGWINDOW_H__ */
index 4cf433594d6c93b0e2fbe38442f7930c73a125a9..a25da149e9a1319d874e9cfaa3c53ab1bb371fd8 100644 (file)
@@ -1026,7 +1026,7 @@ static gboolean warning_icon_pressed(GtkWidget *widget, GdkEventButton *evt,
                                    MainWindow *mainwindow)
 {
        if (evt && evt->button == 1) {
-               log_window_show(mainwindow->logwin);
+               log_window_show_error(mainwindow->logwin);
                gtk_widget_hide(mainwindow->warning_btn);
        }
        return FALSE;