24
24
#include "../pith/headers.h"
25
25
#include "../pith/flag.h"
26
#include "../pith/pineelt.h"
26
27
#include "../pith/icache.h"
27
28
#include "../pith/mailindx.h"
28
29
#include "../pith/mailcmd.h"
538
540
mc = mail_elt(stream, rawno);
539
return((!mc) ? 0 : (!f)
540
? !(mc->spare || mc->spare2 || mc->spare3 ||
541
mc->spare4 || mc->spare5)
542
: (((f & MN_HIDE) ? mc->spare : 0)
543
|| ((f & MN_EXLD) ? mc->spare2 : 0)
544
|| ((f & MN_SLCT) ? mc->spare3 : 0)
545
|| ((f & MN_STMP) ? mc->spare6 : 0)
546
|| ((f & MN_USOR) ? mc->spare7 : 0)
547
|| ((f & MN_COLL) ? mc->spare5 : 0)
548
|| ((f & MN_CHID) ? mc->spare4 : 0)
549
|| ((f & MN_CHID2) ? mc->spare8 : 0)));
541
if(!mc || (pelt = (PINELT_S *) mc->sparep) == NULL)
545
? !(pelt->hidden || pelt->excluded || pelt->selected ||
546
pelt->colhid || pelt->collapsed || pelt->searched)
547
: (((f & MN_HIDE) ? pelt->hidden : 0)
548
|| ((f & MN_EXLD) ? pelt->excluded : 0)
549
|| ((f & MN_SLCT) ? pelt->selected : 0)
550
|| ((f & MN_STMP) ? pelt->tmp : 0)
551
|| ((f & MN_USOR) ? pelt->unsorted : 0)
552
|| ((f & MN_COLL) ? pelt->collapsed : 0)
553
|| ((f & MN_CHID) ? pelt->colhid : 0)
554
|| ((f & MN_CHID2) ? pelt->colhid2 : 0)
555
|| ((f & MN_SRCH) ? pelt->searched : 0)));
577
584
int was_invisible, is_invisible;
578
585
int chk_thrd_cnt = 0, thrd_was_visible, was_hidden, is_hidden;
580
was_invisible = (mc->spare || mc->spare4) ? 1 : 0;
587
if((*(peltp = (PINELT_S **) &mc->sparep) == NULL)){
588
*peltp = (PINELT_S *) fs_get(sizeof(PINELT_S));
589
memset(*peltp, 0, sizeof(PINELT_S));
594
was_invisible = (pelt->hidden || pelt->colhid) ? 1 : 0;
582
596
if((chk_thrd_cnt = ((msgs->visible_threads >= 0L)
583
&& THRD_INDX_ENABLED() && (f & MN_HIDE) && (mc->spare != v))) != 0){
597
&& THRD_INDX_ENABLED() && (f & MN_HIDE) && (pelt->hidden != v))) != 0){
584
598
thrd = fetch_thread(stream, rawno);
585
599
if(thrd && thrd->top){
586
600
if(thrd->top == thrd->rawno)
593
607
thrd_was_visible = thread_has_some_visible(stream, topthrd);
594
was_hidden = mc->spare ? 1 : 0;
608
was_hidden = pelt->hidden ? 1 : 0;
598
if((f & MN_HIDE) && mc->spare != v){
612
if((f & MN_HIDE) && pelt->hidden != v){
600
614
msgs->flagged_hid += (v) ? 1L : -1L;
602
if(mc->spare && THREADING() && !THRD_INDX()
616
if(pelt->hidden && THREADING() && !THRD_INDX()
603
617
&& stream == ps_global->mail_stream
604
618
&& ps_global->thread_disp_style == THREAD_MUTTLIKE)
605
619
clear_index_cache_for_thread(stream, fetch_thread(stream, rawno),
606
620
sp_msgmap(stream));
609
if((f & MN_CHID) && mc->spare4 != v){
623
if((f & MN_CHID) && pelt->colhid != v){
611
625
msgs->flagged_chid += (v) ? 1L : -1L;
614
if((f & MN_CHID2) && mc->spare8 != v){
628
if((f & MN_CHID2) && pelt->colhid2 != v){
616
630
msgs->flagged_chid2 += (v) ? 1L : -1L;
619
if((f & MN_COLL) && mc->spare5 != v){
633
if((f & MN_COLL) && pelt->collapsed != v){
621
635
msgs->flagged_coll += (v) ? 1L : -1L;
624
if((f & MN_USOR) && mc->spare7 != v){
638
if((f & MN_USOR) && pelt->unsorted != v){
626
640
msgs->flagged_usor += (v) ? 1L : -1L;
629
if((f & MN_EXLD) && mc->spare2 != v){
643
if((f & MN_EXLD) && pelt->excluded != v){
631
645
msgs->flagged_exld += (v) ? 1L : -1L;
634
if((f & MN_SLCT) && mc->spare3 != v){
648
if((f & MN_SLCT) && pelt->selected != v){
636
650
msgs->flagged_tmp += (v) ? 1L : -1L;
639
if((f & MN_STMP) && mc->spare6 != v){
653
if((f & MN_SRCH) && pelt->searched != v){
655
msgs->flagged_srch += (v) ? 1L : -1L;
658
if((f & MN_STMP) && pelt->tmp != v){
641
660
msgs->flagged_stmp += (v) ? 1L : -1L;
644
is_invisible = (mc->spare || mc->spare4) ? 1 : 0;
663
is_invisible = (pelt->hidden || pelt->colhid) ? 1 : 0;
646
665
if(was_invisible != is_invisible)
647
666
msgs->flagged_invisible += (v) ? 1L : -1L;
651
670
* are visible and how many are MN_HIDE-hidden.
653
672
if(chk_thrd_cnt && topthrd
654
&& (was_hidden != (is_hidden = mc->spare ? 1 : 0))){
673
&& (was_hidden != (is_hidden = pelt->hidden ? 1 : 0))){
655
674
if(!thrd_was_visible && !is_hidden){
656
675
/* it is visible now, increase count by one */
657
676
msgs->visible_threads++;
724
743
return(!(msgs->flagged_hid || msgs->flagged_exld || msgs->flagged_tmp ||
725
msgs->flagged_coll || msgs->flagged_chid));
744
msgs->flagged_coll || msgs->flagged_chid || msgs->flagged_srch));
726
745
else if(f == (MN_HIDE | MN_CHID))
727
746
return(msgs->flagged_invisible); /* special non-bogus case */
729
748
return(((f & MN_HIDE) ? msgs->flagged_hid : 0L)
730
749
+ ((f & MN_EXLD) ? msgs->flagged_exld : 0L)
731
750
+ ((f & MN_SLCT) ? msgs->flagged_tmp : 0L)
751
+ ((f & MN_SRCH) ? msgs->flagged_srch : 0L)
732
752
+ ((f & MN_STMP) ? msgs->flagged_stmp : 0L)
733
753
+ ((f & MN_COLL) ? msgs->flagged_coll : 0L)
734
754
+ ((f & MN_USOR) ? msgs->flagged_usor : 0L)