(elmo-msgdb-get-message-id-from-buffer): Use
[elisp/wanderlust.git] / elmo / elmo-filter.el
index 1aef7fc..9a6c3ce 100644 (file)
   (elmo-folder-close-flag-table (elmo-filter-folder-target-internal folder)))
 
 (luna-define-method elmo-folder-count-flags ((folder elmo-filter-folder))
-  (let* ((flag-count (elmo-filter-folder-flag-count folder))
-        (new (or (cdr (assq 'new flag-count)) 0))
-        (unread (or (cdr (assq 'unread flag-count)) 0))
-        (answered(or (cdr (assq 'answered flag-count)) 0)))
-    (list new (- unread new) answered)))
+  (elmo-filter-folder-flag-count folder))
 
 (luna-define-method elmo-folder-set-flag ((folder elmo-filter-folder)
                                          numbers
                                             &optional
                                             disable-killed
                                             ignore-msgdb
-                                            no-check)
-  (when (elmo-folder-synchronize
-        (elmo-filter-folder-target-internal folder)
-        'disable-killed
-        ignore-msgdb
-        no-check)
-    (let ((killed-list (elmo-folder-killed-list-internal folder))
-         (numbers (elmo-folder-list-messages folder (not disable-killed))))
-      (when (and disable-killed ignore-msgdb)
-       (elmo-folder-set-killed-list-internal folder nil))
-      (elmo-filter-folder-set-number-list-internal folder numbers)
-      (elmo-filter-folder-set-flag-count-internal folder nil)
-      0)))
+                                            no-check
+                                            mask)
+  (let ((killed-list (elmo-folder-killed-list-internal folder))
+       numbers)
+    (unless no-check
+      (when (elmo-filter-folder-require-msgdb-internal folder)
+       (elmo-folder-synchronize (elmo-filter-folder-target-internal folder)
+                                disable-killed
+                                ignore-msgdb
+                                no-check
+                                mask)))
+    (setq numbers (elmo-folder-list-messages folder (not disable-killed)))
+    (when (and numbers
+              (not (elmo-filter-folder-require-msgdb-internal folder)))
+      (elmo-folder-synchronize (elmo-filter-folder-target-internal folder)
+                              'disable-killed
+                              ignore-msgdb
+                              no-check
+                              (if mask
+                                  (elmo-list-filter mask numbers)
+                                numbers)))
+    (when (and disable-killed ignore-msgdb)
+      (elmo-folder-set-killed-list-internal folder nil))
+    (elmo-filter-folder-set-number-list-internal folder numbers)
+    (elmo-filter-folder-set-flag-count-internal folder nil)
+    0))
 
 (luna-define-method elmo-folder-detach-messages ((folder elmo-filter-folder)
                                                 numbers)