* wl-vars.el (wl-summary-persistent-mark-priority-list): Add `killed'.
[elisp/wanderlust.git] / elmo / elmo-filter.el
index 632b095..05d8b5a 100644 (file)
@@ -50,7 +50,7 @@
     (if (string-match "^ */\\(.*\\)$" (cdr pair))
        (elmo-filter-folder-set-target-internal
         folder
-        (elmo-make-folder (elmo-match-string 1 (cdr pair))))
+        (elmo-get-folder (elmo-match-string 1 (cdr pair))))
       (error "Folder syntax error `%s'" (elmo-folder-name-internal folder)))
     (elmo-filter-folder-set-require-msgdb-internal
      folder
@@ -66,8 +66,8 @@
   (elmo-connect-signal
    target 'flag-changing folder
    (elmo-define-signal-handler (folder target number old-flags new-flags)
-     (elmo-filter-add-flag-count folder number old-flags -1)
-     (elmo-filter-add-flag-count folder number new-flags)
+     (elmo-filter-add-flag-count folder old-flags -1)
+     (elmo-filter-add-flag-count folder new-flags)
      (elmo-emit-signal 'flag-changing folder number old-flags new-flags))
    (elmo-define-signal-filter (folder target number)
      (memq number (elmo-folder-list-messages folder nil t))))
        (when filterd
         (elmo-emit-signal 'flag-changed folder filterd)))))
   (elmo-connect-signal
-   target 'cache-changed folder
+   target 'status-changed folder
+   (elmo-define-signal-handler (folder target numbers)
+     (let ((filterd (elmo-list-filter
+                    (elmo-folder-list-messages folder nil t)
+                    numbers)))
+       (when filterd
+        (elmo-emit-signal 'status-changed folder filterd)))))
+  (elmo-connect-signal
+   target 'update-overview folder
    (elmo-define-signal-handler (folder target number)
-     (elmo-emit-signal 'cache-changed folder number))
+     (elmo-emit-signal 'update-overview folder number))
    (elmo-define-signal-filter (folder target number)
      (memq number (elmo-folder-list-messages folder nil t)))))
 
          (setq flag-count (cons (cons flag delta) flag-count)))))
     (elmo-filter-folder-set-flag-count-internal folder flag-count)))
 
-(defun elmo-filter-add-flag-count (folder number flags &optional delta)
+(defun elmo-filter-add-flag-count (folder flags &optional delta)
   (let ((flag-count (elmo-filter-folder-flag-count-internal folder))
        (delta (or delta 1))
        elem)
 (luna-define-method elmo-folder-close-internal ((folder elmo-filter-folder))
   (elmo-folder-close-internal (elmo-filter-folder-target-internal folder)))
 
-(luna-define-method elmo-folder-close :after ((folder elmo-filter-folder))
+(luna-define-method elmo-folder-close ((folder elmo-filter-folder))
+  (elmo-generic-folder-close folder)
   (elmo-filter-folder-set-number-list-internal folder nil)
   (elmo-filter-folder-set-flag-count-internal folder nil)
-  (elmo-folder-set-msgdb-internal
-   (elmo-filter-folder-target-internal folder) nil))
+  (elmo-folder-close (elmo-filter-folder-target-internal folder)))
 
 (luna-define-method elmo-folder-commit ((folder elmo-filter-folder))
   (elmo-folder-commit (elmo-filter-folder-target-internal folder))
   (elmo-message-folder (elmo-filter-folder-target-internal folder) number))
 
 (luna-define-method elmo-message-field ((folder elmo-filter-folder)
-                                       number field)
+                                       number field &optional type)
   (elmo-message-field
-   (elmo-filter-folder-target-internal folder) number field))
+   (elmo-filter-folder-target-internal folder) number field type))
 
 (luna-define-method elmo-message-set-field ((folder elmo-filter-folder)
                                            number field value)