Closed Bug 57139 Opened 24 years ago Closed 24 years ago

Subject list scrolls undesirably while reading messages

Categories

(SeaMonkey :: MailNews: Message Display, defect, P3)

x86
Windows NT

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: jar, Assigned: hyatt)

References

Details

(Whiteboard: [rtm++])

Attachments

(4 files)

a) Go into non-threaded view for inbox
b) Select reverse chronological order (re: most recent messages at top of
subject list)
c) Scroll down one or two pages of subjects from the top of your inbox
d) Select a message (as though reading messages sequentially)
e) Have a message arrive in your inbox

Expected result: No change in scrolling position of messsage subject list

Undesired result: Message list scrolls to top of list so that you can see the
new subject header.  This is nice 'cause you get to see the new mail... but evil
because you loose your position in the subject list and must scroll your way
back down to continue your reading :-(

I thought this was filed... but now I'm told it is was not.

Side possibility: It *might* be that the thumb in the elevator bar for the
subject pane remains at the "lower level," even though the actual visible list
of subjects "scrolls" to the top of the list.
Since mail folks were pretty alarmed about this bug (relative to other
usabiliity bugs they have addressed), I'm nominating this for rtm.

Note that unless this had a Really Small fix, I don't believe there is much
justification for repairing this at this late date.
Adding Jar's RTM keyword.  Jar, are you also experiencing form submit problems ?-)

Scott, do we agree the behavior is incorrect?  What does 4.x do?  What's your
estimate of the change required?
Assignee: selmer → putterman
Keywords: rtm
Whiteboard: [need info]
reassigning to hyatt.

I don't know the answer to this.  I'm pretty sure that we're just telling RDF we
have a new item and when it gets put in the top, it's scrolling there.  The
opposite doesn't happen when you are adding to the bottom.
Assignee: putterman → hyatt
QA Contact: esther → laurel
Clearing need info, copying trudelle. Peter, can you evaluate for RTM?
Whiteboard: [need info]
This doesn't sound like it fits the profile for RTM, since the inconvenience is
so slight, and presumably affects very few users. However, on Win98 this scrolls
seemingly without updating the srcollbar, so they get out of whack, and
subsequent attempts to scroll up just smear the new message.  Possibly worth
some investigation for RTM, so setting rtm need info.  Still a P3 though.
Whiteboard: [rtm need info]
Target Milestone: --- → M18
Just for the record... the inconvenience is very great, assuming you have a 
large inbox, and have automated checking for email (every n minutes).  Simply 
put, you can be in the middle of your inbox reading a message, and the entire 
message list will "scroll away."  You have *no* way to get back where you were 
reading messages prior to the auto-scroll.  In nav 4.x, you could just re-sort 
the list, and the "current" message would appear in the visible area.  This is 
not true in Netscape 6. There is, IMO, no way to just continue reading your 
email.  

The closest you get is to turn off automatic checking of email... but I consider 
that a very nice feature, and a shame to loose because of this bug :-/.
This is a bug in the RDF sort service.  The sort service is actually removing
and re-inserting the outermost tree children when new messages come in.  The
sort service should only ever do this when the sort being imposed on the tree
changes.

It cannot do this just because new messages have come in.  Maybe this was a
perceived performance optimization to avoid multiple notifications, but it
should be undone if so.  Even if I enhanced the treechildren so that it could
save and restore its scroll position, new messages are being inserted, so I
wouldn't be able to restore correctly anyway if yanked.

We should patch the sort service to behave more nicely.  I'm smart about not
wasting time if the insertion happens offscreen, so I don't need the sort
service to be yanking my outermost row group (treechildren) out of the tree and
putting it back in unless a resort has actually occurred.

Reassigning to waterson.
Assignee: hyatt → waterson
Note that if this is fixed, then bug #57483 will become more important, since
instead of scrolling up to the top, you'll end up staying where you are, but the
scrollbar will end up out of sync with the tree.

I'm going to connect these two bugs with a dependency.
Depends on: 57483
hyatt says I'm off the hook.
Assignee: waterson → hyatt
I have a one-line patch that fixes this problem... however, note that 57483 
then becomes the issue.  Given that with the jumping you're also out of sync, 
fixing this bug alone does put you in a better situation, i.e., you're still 
out of sync, but at least you didn't jump.

Status: NEW → ASSIGNED
Attached patch Part 1 of 3 — — Splinter Review
Attached patch Part 2 of 3 — — Splinter Review
Attached patch Part 3 of 3 — — Splinter Review
Blocks: 57280
Jeepers... what happened to the one-line-fix that would get me most of the way
back to Kansas??
These three patches don't look especially safe at this point in the RTM cycle
:-( :-(.
Any chance you'll fess up with the one liner???
The one-liner didn't work. :(  It was much more involved than I thought.
Basically the tree widget gets totally screwed whenever content is removed,
inserted, or appended above you offscreen.

It also gets screwed on async appends (which is what FTP was doing).  This patch
fixes all of those problems, but yeah, it's bigger.
The code we currently have in these areas is *known* to be very *unsafe*. Rather
than just the usual r=/a=, I suggest we get a team of software proctologists to
examine every token of these patches, land them on the trunk, and have QA run
every test known to man.  We *need* these problems fixed.  cc bryner, alecf for
starters.  Who else?
(this is Jar with his PDT hat off)
hmmm... just for the record... other folks were not especially sympathetic to
this bug of mine.  It sounds like you now understand the issue well enough that
you *might* be able to illuminate even more evil scenarios, and gather some
support...
Please do so if you can (i.e., describe evil side effects in all their glory).

As Peter noted (and I paraphrase here) "the patch is big." I'm sure the PDT
would need a very crisp understanding of the problem, and a concise explanation
of why the fix works, and won't break any other working parts of the universe,
before even contemplating such a landing.

Bottom line: In addition to the patch, a double plus would require a strong
benefit statement, and a compelling exposition that risk was closer to zarro
than Peter's (and my) observation would suggest.

Thanks,
Jim (who personally wishes this bug gets fixed... but won't hold breath or N6)
Jim, this patch does have more broad benefits than fixing the issue you reported
here.  It looks like hyatt's patches address all sorts of tree manipulation
problems.  This goes beyond this bug as it would also affect the FTP and file
system views in Mozilla.  Currently, those views are broken in a way which
amounts to data loss (bug 57280, which depends on this).

Having a tree view which actually works (the current tree widget simply does not
work in many mainstream cases) will significantly increase the appearance of
Mozilla as a quality product.  Shipping NS6 with the current tree widget will
give the appearance of a very shoddy product, as the users will not be able to
browse FTP sites or their own local disks, and as you note there are also UI
nuisances.

Hope that helps.
were these made against the branch or the trunk? they're not patching cleanly
against the branch.
I had problems on both trees, partly due to embedded ctrl-Ms but one of the
files seems to have changed enough that I don't think I can do a confident job
hand editing like I had to with the rest. David, could you attach
nsCSSFrameConstructor.cpp verbatim or mail to me? Branch would be preferrable,
but I will take whatever you have.
adding self to cc list. If we could get clean patches for the branch, I'd be
happy to try them out.
Patching nsCSSFrameConstructor.cpp on the branch to account for these changes is
nontrivial.  I'm not going to waste time doing it until I know these bugs will
actually be approved on the branch.  You should just test on the trunk.  if they
approve the bugs, then the tree widget on the trunk will become exactly
equivalent to the one on the branch when they are landed.
Blocks: 56979
No longer depends on: 57483
Blocks: 57483
I hate to say this, but I still see problems in the thread pane on the trunk.
They are mostly paint type problems (e.g., the wrong message looks selected, or
selection looks multiple when it's only single) and the problem where the thread
pane stops painting, I think caused by expanding a large thread at the bottom of
the thread pane or at the top.
Was this checked into the trunk?
hmm, maybe not. I thought they were, for some reason.
No, this isn't checked in yet.  I need an r= and an a= please.
I see the stop-painting problem and the message-looks-selected problem on the
branch all the time... most of the time on linux, but occasionally on windows too
This patch seems like a huge improvement for the mail/news thread pane. Things
like multiple deletes are a lot smoother, expanding a large thread is much
faster (is it possible that these changes would speed that up?), I haven't seen
the selection get weird yet, or had things jump around like crazy. And, when I
create a new local folder, it shows up w/o having to collapse and expand the
server. So far, so good.
Yes, open/close will be faster with this patch, because the parent is no longer 
reframed (only the kids).
I see something like a 3x speedup on expanding a thread of 30 messages - it's
more or less instantaneous, whereas before, there was a big pause. waterson or
alec, can we get an r=? I'd review it, but it wouldn't be meaningful since I
don't know the code :-)
hyatt and I were looking at one failure mode last night, where biff arrival
of messages into a threaded view of the threadPane could confuse the tree.
However, I do agree that most operations are more stable, and even when I 
could get it "confused", it was relatively easier to recover (and I haven't 
made it crash at all). 
Ok, I've tried to look this over and I just don't know enough about the tree
anymore...(it's changed alot since I poked at it) I wish I could confidently say
r=alecf, but I just can't :(
yes, I've seen that too - what happens is after deleting the newly arrived mail,
the selection gets a bit confused (the deleted line doesn't go away, and the
selection looks multiple). It might have to do with the newly arrived mail
getting added to the end of the thread pane, but I'm not positive. That happened
without the patch too.
bienvenu, did you see this in unthreaded mode or threaded mode? 
always threaded, *but* the newly arrived message was not part of another thread,
i.e., it was its own thread, as was the message that was selected after the
newly arrived message was deleted. This makes me suspect that it might happen in
non-threaded mode too, but most of my folders are threaded.
Do you sort by date, and if so, do your new messages come in at the top or
bottom?  I want to start running with your setup so I can debug these glitches.
yes, sorted by date, and new msgs come in at the bottom (or sometimes right
before the bottom). I'll try to see if I notice a pattern as to when it happens.
Dave, I've noticed that this bug happens coincidentally with the message headers
not showing up bug, and that when I read a message, the unread count in the
folder pane is not updated either - it's as if all layout changes are blocked
until I move the splitter. Don't know if this helps...
to be clear, here's what happens:

1. I open a folder with unread messages in it.
2. Scroll to the bottom
3. Select the last message (which is unread)

The message header area does not appear. The message does not noticeably get
marked read, nor does the folder unread count in the folder pane go down. I can
mark other messages read or unread by clicking on the green diamond, but the
state change is not reflected in the UI until I move the folder/thread pane
splitter. Very odd.
Got some nice clear steps to reproduce?
D'oh.  You just answered me.
jrgm, could this be one of those "magic height" kinda things, i.e., if you set 
the splitter to certain heights, the tree gets messed up?
it seems to happen when we had to download new headers for an imap folder. I'm
not sure why that should matter since we download the headers before we tell rdf
about any of the headers. I'll look into it a little more.
Possibly. I just tried bienvenu's steps, and didn't get this behaviour (opt.
win2k with your patch). I'll try varying the size of the threadPane.

One question though: when you say "The message header area" are you referring 
to the "Subject:, From:, Date:" toolbar? 
Yes, that's what I'm referring to. But I now think those not appearing is
orthogonal to the other bugs - the headers can disappear when the other
layout/repaint bugs don't happen. I haven't seen it the other way around (the
headers appear but the other bugs happen) but that could be because the headers
almost always disappear when I open a folder. Hope that makes sense!
I saw what you described (where the message headers didn't come in, and the 
Read count was not changed in the UI, plus when I scrolled I began to get 
blank lines), but haven't quite been able to do it again. I think that this
must be on a newly visited folder (no message selected, and the last message
at the bottom must be partially covered by the splitter. 
looks good to me, although it would be nice to get this problem bienvenu is
seeing fixed.

r=bryner
But that problem is not caused by this patch, is it?
No, that bug existed before this patch. I think bryner is just saying that it
would be good to nail all the problems we know about at once. I've been running
with this patch for a few days and it seems great. Aim is working fine as well
(I heard there were some tree problems with AIM as well)
Yeah, that's what I figured, but I want to ensure that everything is explicit
and clear for PDT triage.  We may only have one more chance at triage, so I want
to get ++ on Monday, not 'need info'.  I don't think that adding to this patch
to address more cases would be a good idea at this point, because it would mean
less testing time, but if we get a second chance, fixing that may be worthwhile.
Here's another clue - when I'm in this mode, if I cause a repaint to happen (by
bringing another window forward and then bringing the mail window back to the
top), the folder pane repaints correctly, and the thread pane mostly repaints
correctly, so it looks like reflow is happening, but lines in the tree aren't
getting invalidated. I say "mostly repaints correctly" because I did get one of
the lines painted blank.
a=ben@netscape.com
I inflicted the a= process on ben.  Thanks for taking the time to listen to the 
brain dump, ben!
Whiteboard: [rtm need info] → [rtm+]
that a=ben@netscape.com was from me, but posted from hyatt's machine.
Whiteboard: [rtm+] → [rtm+] FIXED ON TRUNK
PDT: This fixes about 6 or 7 filed rtm bugs on the threadpane, and it makes
everything feel MUCH better when dealing with trees.

Although the patch is large, the effects are a definate winner for RTM.
This bug is in candidate limbo.  We will reconsider this fix once we have a 
candidate in hand, but we can't take this fix before then.  Please check into 
the trunk ASAP.
Marking RTM double plus.
Per discussion at PDT, we would like this checked into the BRANCH this evening
(Tuesday eve, 10/30).  We have a tag of the build done earlier in the evening,
and would like to have tomorrow morning's build include this checkin.
As discussed, this is something of a "carpool" for a larger than average limbo bug.
Thanks,
Jim (for PDT, with fingers crossed... shooting the limbo moon) Roskind
Whiteboard: [rtm+] FIXED ON TRUNK → [rtm++] FIXED ON TRUNK
fixed
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Whiteboard: [rtm++] FIXED ON TRUNK → [rtm++]
jar - do you see this bug any longer with the limbo builds?
Looks OK to me using nov02 (limbo2) mn6 commercial branch build with win98,
linux rh6.0 and mac OS 9.0

Keywords: vtrunk
This bug is fixed as far as I can see.  I no longer see the strange scrolling
behaviour.

There is one tiny artifact left, but it might be similar to what happens in 4.x.
 If I'm reading email, and the scroll bar in the subject pane is at the very top
(i.e., I can see the subject line for the most recent message), but I'm reading
(for example) the fourth message down (and hence it is highlighted), and a new
message arrives.... then the message pane scrolls when a new message arrives.
IMO, the arrival of a new message should cause the creation of a new subject
line *above* the top of the header window, and out of view. (Recall that my
messages are in reverse chronoligical order, so new messages go to the TOP of
the list).  Note that if I can't see the first message, then arrival of new
messages *don't* cause scrolling of the subject pane.

Oh well... subtle point... but the basic bug I hit is Very Fixed now.
Thanks,
Jim
The original problem is OK using commercial trunk builds, dec6, linux rh6.0,
Win98 and Mac OS 9.0.

I'll log the remaining issue jar mentions (I see the problem) as a separate bug.
Status: RESOLVED → VERIFIED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: