diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 5e53a75e5..d1850d6cf 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -551,12 +551,16 @@ function rcmail_get_mailbox_name_text() } -function rcmail_send_unread_count($mbox_name, $force=false) +function rcmail_send_unread_count($mbox_name, $force=false, $count=null) { global $RCMAIL; $old_unseen = $_SESSION['unseen_count'][$mbox_name]; - $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force); + + if ($count === null) + $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force); + else + $unseen = $count; if ($unseen != $old_unseen || ($mbox_name == 'INBOX')) $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX')); diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc index 85e71a1f7..cf3855169 100644 --- a/program/steps/mail/list.inc +++ b/program/steps/mail/list.inc @@ -70,8 +70,13 @@ if ($count = $IMAP->messagecount($mbox_name, $IMAP->threading ? 'THREADS' : 'ALL if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) $_SESSION['search'][$_REQUEST['_search']] = $IMAP->get_search_set(); +// empty result? we'll skip UNSEEN counting in rcmail_send_unread_count() +if (empty($search_request) && empty($a_headers)) { + $unseen = 0; +} + // update mailboxlist -rcmail_send_unread_count($mbox_name, !empty($_REQUEST['_refresh'])); +rcmail_send_unread_count($mbox_name, !empty($_REQUEST['_refresh']), $unseen); // update message count display $pages = ceil($count/$IMAP->page_size);