Closed Bug 121336 Opened 23 years ago Closed 23 years ago

sometimes selection in threadpane (and folderpane) not cleared when selecting a new message

Categories

(SeaMonkey :: MailNews: Message Display, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED
mozilla0.9.9

People

(Reporter: asa, Assigned: janv)

References

Details

(Whiteboard: [driver:dbaron])

Attachments

(2 files, 1 obsolete file)

seen for at least the last 5 or 6 builds and this morning on mozilla windows build 2002012203. I don't have good steps to reproduce but others are seeing this too so I'm logging this bug. Summary: after some activity in the threadpane the previously selected messages do not repaint as unselected. I end up with many blue highlighted messages. Closing mail and opening it again seems to fix the problem. Additional info: this may or may not be relevant. I usually only see this first thing in the morning after I delete my spam. I delete spam by expanding the threadpane completely. Then I ctrl click to select all the messages that look like spam and hit delete. Then I contract the trheadpane (expand the message pane) and soon after I start to see this behavior. These may not be the complete steps to reproduce and they may even not include any of the steps to repro, just a guess based on when I notice the problem.
I have seen the same with folder-pane of late, with many folders in blue. I guess this has to do with outliner.
I see it consistently, am easily able to get into this state. I've found it's not always related to deleting. Since this report has a longer cc list, will duplicate my bug to this one.
QA Contact: esther → laurel
*** Bug 120648 has been marked as a duplicate of this bug. ***
Keywords: nsbeta1
I just saw this with the thread pane in a debug build. after it happened, I started seeing asserts in the view manager I don't normally see. NTDLL! 77f9f9df() nsDebug::Assertion(const char * 0x0240bc4c, const char * 0x0240bc34, const char * 0x0240bc00, int 617) line 290 + 13 bytes nsViewManager::Refresh(nsView * 0x062cd110, nsIRenderingContext * 0x05a57130, nsIRegion * 0x05a61580, unsigned int 1) line 617 + 38 bytes nsViewManager::DispatchEvent(nsViewManager * const 0x05104df0, nsGUIEvent * 0x0012b968, nsEventStatus * 0x0012b874) line 1762 HandleEvent(nsGUIEvent * 0x0012b968) line 83 nsWindow::DispatchEvent(nsWindow * const 0x062ceef4, nsGUIEvent * 0x0012b968, nsEventStatus & nsEventStatus_eIgnore) line 850 + 10 bytes nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012b968, nsEventStatus & nsEventStatus_eIgnore) line 876 nsWindow::OnPaint() line 4324 + 28 bytes nsWindow::ProcessMessage(unsigned int 15, unsigned int 0, long 0, long * 0x0012bd88) line 3246 + 17 bytes nsWindow::WindowProc(HWND__ * 0x001600c8, unsigned int 15, unsigned int 0, long 0) line 1115 + 27 bytes USER32! 77e13eb0() USER32! 77e1591b() USER32! 77e1595d() NTDLL! 77f9fb83() nsViewManager::Composite(nsViewManager * const 0x05104df0) line 1470 nsViewManager::UpdateView(nsViewManager * const 0x05104df0, nsIView * 0x062cd110, const nsRect & {...}, unsigned int 2) line 1673 nsFrame::Invalidate(nsIPresContext * 0x051016e0, const nsRect & {...}, int 1) line 2151 nsOutlinerBodyFrame::InvalidateCell(nsOutlinerBodyFrame * const 0x056c0464, int 201, const unsigned short * 0x05a57490) line 794 nsOutlinerBoxObject::InvalidateCell(nsOutlinerBoxObject * const 0x062b6090, int 201, const unsigned short * 0x05a57490) line 333 + 20 bytes nsOutlinerImageListener::Invalidate(nsOutlinerImageListener * const 0x05a57914) line 3228 nsOutlinerImageListener::OnDataAvailable(nsOutlinerImageListener * const 0x05a57910, imgIRequest * 0x05a58ae0, nsISupports * 0x051016e0, gfxIImageFrame * 0x067b30e0, const nsRect * 0x0012bffc) line 3185 imgRequestProxy::OnDataAvailable(gfxIImageFrame * 0x067b30e0, const nsRect * 0x0012bffc) line 332 imgRequest::NotifyProxyListener(imgRequestProxy * 0x05a58ae0) line 205 imgLoader::LoadImage(imgLoader * const 0x049ebd30, nsIURI * 0x05a57c70, nsILoadGroup * 0x00000000, imgIDecoderObserver * 0x05a57910, nsISupports * 0x051016e0, unsigned int 0, nsISupports * 0x00000000, imgIRequest * 0x00000000, imgIRequest * * 0x0012c3f4) line 391 nsOutlinerBodyFrame::GetImage(int 201, const unsigned short * 0x00536760, nsIStyleContext * 0x056c3808, imgIContainer * * 0x0012c488) line 1664 + 90 bytes nsOutlinerBodyFrame::GetImageSize(int 201, const unsigned short * 0x00536760, nsIStyleContext * 0x056c3808) line 1730 + 44 bytes nsOutlinerBodyFrame::PaintImage(nsOutlinerBodyFrame * const 0x056c0428, int 201, nsOutlinerColumn * 0x005367c0, const nsRect & {...}, nsIPresContext * 0x051016e0, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay, int & 270, int & 8902) line 2351 + 48 bytes nsOutlinerBodyFrame::PaintCell(nsOutlinerBodyFrame * const 0x056c0428, int 201, nsOutlinerColumn * 0x005367c0, const nsRect & {...}, nsIPresContext * 0x051016e0, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 2225 nsOutlinerBodyFrame::PaintRow(nsOutlinerBodyFrame * const 0x056c0428, int 201, const nsRect & {...}, nsIPresContext * 0x051016e0, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 2051 nsOutlinerBodyFrame::Paint(nsOutlinerBodyFrame * const 0x056c0428, nsIPresContext * 0x051016e0, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay, unsigned int 0) line 1914 PresShell::Paint(PresShell * const 0x05100384, nsIView * 0x062cd110, nsIRenderingContext & {...}, const nsRect & {...}) line 5707 + 36 bytes nsView::Paint(nsView * const 0x062cd110, nsIRenderingContext & {...}, const nsRect & {...}, unsigned int 0, int & 268486052) line 272 nsViewManager::RenderDisplayListElement(DisplayListElement2 * 0x05a59360, nsIRenderingContext & {...}) line 1240 nsViewManager::RenderViews(nsView * 0x062cd110, nsIRenderingContext & {...}, const nsRect & {...}, int & 0) line 1164 nsViewManager::Refresh(nsView * 0x062cd110, nsIRenderingContext * 0x05a59030, nsIRegion * 0x05a58050, unsigned int 1) line 703 nsViewManager::DispatchEvent(nsViewManager * const 0x05104df0, nsGUIEvent * 0x0012ccdc, nsEventStatus * 0x0012cbe8) line 1762 HandleEvent(nsGUIEvent * 0x0012ccdc) line 83 nsWindow::DispatchEvent(nsWindow * const 0x062ceef4, nsGUIEvent * 0x0012ccdc, nsEventStatus & nsEventStatus_eIgnore) line 850 + 10 bytes nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012ccdc, nsEventStatus & nsEventStatus_eIgnore) line 876 nsWindow::OnPaint() line 4324 + 28 bytes nsWindow::ProcessMessage(unsigned int 15, unsigned int 0, long 0, long * 0x0012d0fc) line 3246 + 17 bytes nsWindow::WindowProc(HWND__ * 0x001600c8, unsigned int 15, unsigned int 0, long 0) line 1115 + 27 bytes USER32! 77e13eb0() USER32! 77e1591b() USER32! 77e1595d() NTDLL! 77f9fb83() nsViewManager::Composite(nsViewManager * const 0x05104df0) line 1470 nsViewManager::UpdateView(nsViewManager * const 0x05104df0, nsIView * 0x062cd110, const nsRect & {...}, unsigned int 2) line 1673 nsFrame::Invalidate(nsIPresContext * 0x051016e0, const nsRect & {...}, int 1) line 2151 nsOutlinerBodyFrame::InvalidateRow(nsOutlinerBodyFrame * const 0x056c0464, int 201) line 778 nsOutlinerBoxObject::InvalidateRow(nsOutlinerBoxObject * const 0x062b6090, int 201) line 325 + 16 bytes nsOutlinerSelection::SetCurrentIndex(nsOutlinerSelection * const 0x0652f690, int 201) line 593 nsOutlinerSelection::Select(nsOutlinerSelection * const 0x0652f690, int 201) line 345 XPTC_InvokeByIndex(nsISupports * 0x0652f690, unsigned int 7, unsigned int 1, nsXPTCVariant * 0x0012d480) line 106 XPCWrappedNative::CallMethod(XPCCallContext & {...}, XPCWrappedNative::CallMode CALL_METHOD) line 1998 + 42 bytes XPC_WN_CallMethod(JSContext * 0x0507fd20, JSObject * 0x03f3bc40, unsigned int 1, long * 0x040b6d30, long * 0x0012d760) line 1266 + 14 bytes js_Invoke(JSContext * 0x0507fd20, unsigned int 1, unsigned int 0) line 832 + 23 bytes js_Interpret(JSContext * 0x0507fd20, long * 0x0012e550) line 2798 + 15 bytes js_Invoke(JSContext * 0x0507fd20, unsigned int 1, unsigned int 2) line 849 + 13 bytes js_InternalInvoke(JSContext * 0x0507fd20, JSObject * 0x040b20a8, long 66303688, unsigned int 0, unsigned int 1, long * 0x0012e7c0, long * 0x0012e678) line 924 + 20 bytes JS_CallFunctionValue(JSContext * 0x0507fd20, JSObject * 0x040b20a8, long 66303688, unsigned int 1, long * 0x0012e7c0, long * 0x0012e678) line 3405 + 31 bytes nsJSContext::CallEventHandler(nsJSContext * const 0x05079c90, void * 0x040b20a8, void * 0x03f3b6c8, unsigned int 1, void * 0x0012e7c0, int * 0x0012e7c4, int 0) line 1011 + 33 bytes nsJSEventListener::HandleEvent(nsJSEventListener * const 0x05a584d0, nsIDOMEvent * 0x05a5df98) line 180 + 77 bytes nsXBLPrototypeHandler::ExecuteHandler(nsXBLPrototypeHandler * const 0x05145040, nsIDOMEventReceiver * 0x05fb0fb8, nsIDOMEvent * 0x05a5df98) line 442 DoMouse(nsIAtom * 0x0419c560, nsIXBLPrototypeHandler * 0x05145040, nsIDOMEvent * 0x05a5df98, nsIDOMEventReceiver * 0x05fb0fb8) line 118 nsXBLMouseHandler::MouseDown(nsXBLMouseHandler * const 0x062cd680, nsIDOMEvent * 0x05a5df98) line 123 + 40 bytes nsEventListenerManager::HandleEvent(nsEventListenerManager * const 0x061ecfc0, nsIPresContext * 0x051016e0, nsEvent * 0x0012f92c, nsIDOMEvent * * 0x0012f614, nsIDOMEventTarget * 0x05fb0fb8, unsigned int 7, nsEventStatus * 0x0012f824) line 1294 + 41 bytes nsXULElement::HandleDOMEvent(nsXULElement * const 0x05fb0fb0, nsIPresContext * 0x051016e0, nsEvent * 0x0012f92c, nsIDOMEvent * * 0x0012f614, unsigned int 1, nsEventStatus * 0x0012f824) line 3359 PresShell::HandleEventInternal(nsEvent * 0x0012f92c, nsIView * 0x062cd110, unsigned int 1, nsEventStatus * 0x0012f824) line 5992 + 38 bytes PresShell::HandleEvent(PresShell * const 0x05100384, nsIView * 0x062cd110, nsGUIEvent * 0x0012f92c, nsEventStatus * 0x0012f824, int 0, int & 1) line 5909 + 25 bytes nsView::HandleEvent(nsView * const 0x062cd110, nsGUIEvent * 0x0012f92c, unsigned int 0, nsEventStatus * 0x0012f824, int 0, int & 1) line 387 nsView::HandleEvent(nsView * const 0x051060a0, nsGUIEvent * 0x0012f92c, unsigned int 0, nsEventStatus * 0x0012f824, int 1, int & 1) line 344 nsViewManager::DispatchEvent(nsViewManager * const 0x05104df0, nsGUIEvent * 0x0012f92c, nsEventStatus * 0x0012f824) line 1909 HandleEvent(nsGUIEvent * 0x0012f92c) line 83 nsWindow::DispatchEvent(nsWindow * const 0x062ceef4, nsGUIEvent * 0x0012f92c, nsEventStatus & nsEventStatus_eIgnore) line 850 + 10 bytes nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f92c) line 871 nsWindow::DispatchMouseEvent(unsigned int 302, nsPoint * 0x00000000) line 4527 + 21 bytes ChildWindow::DispatchMouseEvent(unsigned int 302, nsPoint * 0x00000000) line 4779 nsWindow::ProcessMessage(unsigned int 513, unsigned int 1, long 8913085, long * 0x0012fd20) line 3414 + 24 bytes nsWindow::WindowProc(HWND__ * 0x001600c8, unsigned int 513, unsigned int 1, long 8913085) line 1115 + 27 bytes USER32! 77e13eb0() USER32! 77e1401a() USER32! 77e192da() nsAppShellService::Run(nsAppShellService * const 0x04133250) line 303 main1(int 2, char * * 0x00444b90, nsISupports * 0x00000000) line 1285 + 32 bytes main(int 2, char * * 0x00444b90) line 1625 + 37 bytes mainCRTStartup() line 338 + 17 bytes KERNEL32! 77e87903()
putting in 0.9.9 (and marking normal) to get this on the radar.
Severity: minor → normal
Target Milestone: --- → mozilla0.9.9
*** Bug 121656 has been marked as a duplicate of this bug. ***
I noticed that if I drag another mozilla window (like the JS Console) over the threadpane it clears the false selection highlight for the area that was obscured by the other window. I also noticed that I was able to move to a different mail folder and the behavior continued there.
*** Bug 121687 has been marked as a duplicate of this bug. ***
Possible clue. I was able to trigger this behavior twice by setting a label. After I set the lable with a context menu click on the message in the threadpane I got the sticky highlight color problem. I am no longer able to repro with that step so it may have been some strange coincidence. Possibly it had to do with biff firing at just the same time or something like that.
I noticed (and so did ji@netscape) that this happens when I have the last message in the threadpane selected (and maybe a new message came into that folder). Since I was labeling the last message in the threadpane when I thought I had a label triggered failure it could not be labels. from bug 120648 "Basically it always starts to happen when I'm viewing the last mail on the thread and a new mail comes in."
mscott just saw it in the folder pane. those assertions in the view manager (http://bugzilla.mozilla.org/show_bug.cgi?id=121336#c4) and the fact that forcing a paint fixes the problem make me think it isn't mailnews code. who would get this bug? hyatt, jan, hewitt, roc?
Summary: sometimes selection in threadpane not cleared when selecting a new message → sometimes selection in threadpane (and folderpane) not cleared when selecting a new message
I think this should start with hyatt, but since I don't have a reproducable test case yet, it might sit on his list.
Assignee: sspitzer → hyatt
I'm not able to reproduce it, still trying ...
Summary of the stack trace: While the outliner was painting, it called LoadImage(), which fired some event which invalidated some cells and tried to synchronously repaint. The view manager doesn't support starting a new repaint while it's already painting.
It's probably best to avoid firing events while painting.
I guess, my machines are too slow to see this problem. That patch should help.
*** Bug 122349 has been marked as a duplicate of this bug. ***
http://bugzilla.mozilla.org/attachment.cgi?id=66865&action=view Screenshot of threadpane with false selections, grey selections and partly selections, modern theme.
taking
Assignee: hyatt → varga
This should be fixed along with 120299. Feel free to reopen in other case.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
This problem still exists using commercial trunk build 2002-02-04-09, win 98. It is still fairly easy to get into the false selection state in either the folder pane or thread pane. All I need to do is select individual folders/messages going upward in the pane then reverse the direction and select downward. Reopening.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
I just saw this when I dropped an item in bookmarks. I had to drop another item to get correct state. I can't reproduce it again though.
This is definitely not fixed. I'm seeing it regularly in nightly builds.
Hey, I found a really easy way to reproduce this. All you have to do is click some folders *quickly* one after another. You need to select them quickly after each other.
Seeing a lot of this in 2002-02-14 (Win98se). Doesn't seem to need much of a trigger condition: start clicking things in message list (summary pane) and all the things I click are highlighted. They seem not to be actually selected because a command such as "Message->Label" does not label all of them. Looks like the UI code is not repainting where it should - in the *old* selection boundingbox. FWIW, right-click somewhere in the pane clears all except the latest (correct) highlight.
*** Bug 125714 has been marked as a duplicate of this bug. ***
I think I explained what the problem is. You can't try to paint during a paint operation, and you probably shouldn't be firing events during a paint operation in the outliner.
Blocks: 122050
*** Bug 125989 has been marked as a duplicate of this bug. ***
*** Bug 123243 has been marked as a duplicate of this bug. ***
Status: REOPENED → ASSIGNED
Easy way to reproduce (build 20020222 Win2K): - select multiple messages (ctrl-click) - start dragging them - abort dragging by keeping the mouse cursor on one of the selected headers - try clicking on other headers I suppose this is the same problem?
Yeah, actually I can reproduce it only with dragging and I think this is the case. I noticed that onDragExit is firing twice and with combination of sync invalidating ... what Robert said. I'll try to fix it.
Whiteboard: [driver:dbaron]
Attached patch fix (obsolete) — Splinter Review
this fix was tested on Linux and Windows
Attached patch alternative fixSplinter Review
alternative fix, in case that the first one doesn't work well on Mac.
Need reviews and Mac testing.
Keywords: patch, review
nsbeta1+
Keywords: nsbeta1nsbeta1+
I'll test the fix on Mac late tonight or early tomorrow...
Using a debug build from last Sunday with couple patches for mime and nsIWidget, I am not able to reproduce the selection problem under MacOS 9. With the first patch, when I drag a message over a folder, the folder doesn't hilite anymore! I removed the patch and it start working again. Still need to test the second patch...
try "alternative fix" please that should work
I've been able to reproduce it by not simple clicking, but clicking and short moving after mouse down (dragging) on row by row
I tested the second patch on my Mac using a tree pulled late last night and it works fine.
Attachment #71615 - Attachment is obsolete: true
thanks for testing, I'll try to get reviews.
*** Bug 128506 has been marked as a duplicate of this bug. ***
Comment on attachment 71616 [details] [diff] [review] alternative fix r=bryner
Attachment #71616 - Flags: review+
Comment on attachment 71616 [details] [diff] [review] alternative fix a=asa (on behalf of drivers) for checkin to the 0.9.9 branch and the 1.0 trunk
Attachment #71616 - Flags: approval+
checked in on the trunk and branch.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago23 years ago
Resolution: --- → FIXED
OK for me using mar05 commercial trunk build win98.
Verified on the trunk again with mar06 commercial build, win98. Need verification on branch.
Keywords: vbranch
*** Bug 125164 has been marked as a duplicate of this bug. ***
*** Bug 132210 has been marked as a duplicate of this bug. ***
marking verified per my comment #49, someone removed vbranch and since we're close on another milestone it may be a moot branch verification anyway.
Status: RESOLVED → VERIFIED
Keywords: vbranch
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: