Hello Kevin, That makes sense, I completely misunderstood those few lines of code. What really should happen then is that all messages in every thread should be checked and if a !old message is found, then the thread it belongs to should be uncollapsed.
I'm also interested in hearing what other devs/users have to say about this. It may be because I'm relatively new to mutt but I don't really understand the purpose of uncollapsing all threads when flags have been externally modified. Thanks! Yoshiki. On (Feb-19-15|12:39), Kevin J. McCarthy wrote: > Yoshiki Vazquez Baeza wrote: > > I think I found the reason why this happens, there's a block of code > > that uncollapses *all* the threads in the current mailbox when it is > > reopened. The comments around that block of code seem to indicate that > > only new emails should be uncollapsed, so I've added an if statement > > (see attached patch) checking for new mails that are unread. This fixes > > the problem that I was having (all threads would uncollapse when flags > > were externally modified). > > > > Not sure if this is really a bug or the intended behaviour, any feedback > > is greatly appreciated! > > Hi Yoshiki, > > I haven't looked at the threading code in mutt at all (so it's possible > I'm wrong), but the patch doesn't look quite right to me: > > > for (h = ctx->tree; h; h = h->next) > > { > > - for (j = h; !j->message; j = j->child) > > - ; > > - mutt_uncollapse_thread (ctx, j->message); > > + for (j = h; !j->message; j = j->child) > > + ; > > Here, we've located the first message in the thread. > > > + if (!j->message->old && !j->message->read) > > + mutt_uncollapse_thread (ctx, j->message); > > So, here you're only looking at that one message and checking its > old/read flags. > > I think the "reopen" occurs when messages disappear from the mailbox. > The comment about uncollapsing "new" messages means messages that have > appeared in the index, not necessarily those with !read. > > The sudden uncollapse is certainly not friendly, and there's some room > for improvement here. It would be great if one of the more experienced > committers would comment about the behavior and ways it could be > improved. > > -Kevin