Closed Bug 303976 Opened 20 years ago Closed 20 years ago

2 caret cursors in compose window, inability to use arrow keys

Categories

(Thunderbird :: Message Compose Window, defect)

x86
Windows XP
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
Thunderbird1.1

People

(Reporter: mscott, Assigned: mscott)

References

Details

(Keywords: fixed1.8)

Present in the 08/02 builds (probably around earlier than that) 1) Start up thunderbird 2) In a browser window, click on a mailto url 3) In the compose window that comes up, note that there are two blinking cursors, one in the body and one in the subject field. Furthermore, you cannot use the arrow keys to move around either the subject field or the message body.
Status: NEW → ASSIGNED
Target Milestone: --- → Thunderbird1.1
oddly enough, moving focus out of the window and then back into the window enables the arrow keys again.
also see Bug 304060 which I think is a dupe of this. Just another symptom --> pasting doesn't work in the compose window either until focus is moved away and then back into the compose window.
Blocks: 304060
7/30 build works fine 08/01 build shows the problem
I filed a bug on this a few days ago. I'll just dup it here.
*** Bug 303682 has been marked as a duplicate of this bug. ***
Bug #296639 could be the culprit.
Here's another scenario that might help us figure out which part of the split window changes is causing this problem. If you try to paste text into the broken compose window, I see that we use the wrong command controller for handling the event. As a result, editor never sees the paste event, instead it gets sent to nsControllerCommandTable::DoCommand which ends up asserting in DocumentViewerImpl::Paste which doesn't implement Paste. When the compose window is created from within the process, pasting text into the compose window goes through nsPasteCommand::DoCommand instead of the default controllerccommandtable. As a result, editor gets told to do the paste. Stack trace for the broken call: DocumentViewerImpl::Paste(DocumentViewerImpl * const 0x059bd014) line 2364 + 35 bytes nsClipboardPasteCommand::DoClipboardCommand(const char * 0x0012d780, nsIContentViewerEdit * 0x059bd014, nsICommandParams * 0x00000000) line 574 nsClipboardBaseCommand::DoCommand(nsClipboardBaseCommand * const 0x02c38918, const char * 0x0012d780, nsISupports * 0x043459c8) line 454 + 26 bytes nsControllerCommandTable::DoCommand(nsControllerCommandTable * const 0x02c3cb50, const char * 0x0012d780, nsISupports * 0x05ede938) line 182 nsBaseCommandController::DoCommand(nsBaseCommandController * const 0x0458b168, const char * 0x0012d780) line 132 nsXBLPrototypeHandler::ExecuteHandler(nsIDOMEventReceiver * 0x05ed7c58, nsIDOMEvent * 0x04422c18) line 356 nsXBLWindowHandler::WalkHandlersInternal(nsIDOMEvent * 0x04422c18, nsIAtom * 0x00b14ea0, nsXBLPrototypeHandler * 0x030291e8) line 305 + 24 bytes nsXBLWindowKeyHandler::WalkHandlers(nsXBLWindowKeyHandler * const 0x034b3240, nsIDOMEvent * 0x04422c18, nsIAtom * 0x00b14ea0) line 196 nsXBLWindowKeyHandler::KeyPress(nsXBLWindowKeyHandler * const 0x034b3240, nsIDOMEvent * 0x04422c18) line 249 DispatchToInterface(nsIDOMEvent * 0x04422c18, nsIDOMEventListener * 0x034b3240, unsigned int (nsIDOMEvent *)* 0x01ec62a0 `vcall'(nsIDOMEvent *), const nsID & {...}, int * 0x0012dc88) line 136 + 11 bytes nsEventListenerManager::HandleEvent(nsEventListenerManager * const 0x05b90340, nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, nsIDOMEventTarget * 0x05ed7c58, unsigned int 514, nsEventStatus * 0x0012f2e0) line 1691 + 35 bytes nsWindowRoot::HandleChromeEvent(nsWindowRoot * const 0x05ed7c64, nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 255 nsGlobalWindow::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 1269 nsXULDocument::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 1252 nsXULElement::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2226 + 63 bytes nsXULElement::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2220 + 57 bytes nsXULElement::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2220 + 57 bytes nsXULElement::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2220 + 57 bytes nsXULElement::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2220 + 57 bytes nsXULElement::HandleChromeEvent(nsXULElement * const 0x034bf38c, nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2881 + 35 bytes nsGlobalWindow::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 1269 nsDocument::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 4153 nsGenericElement::HandleDOMEvent(nsPresContext * 0x05eaf280, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 519, nsEventStatus * 0x0012f2e0) line 2167 + 46 bytes PresShell::HandleEventInternal(nsEvent * 0x0012f510, nsIView * 0x0323bc38, unsigned int 1, nsEventStatus * 0x0012f2e0) line 6388 + 67 bytes PresShell::HandleEvent(PresShell * const 0x034b7364, nsIView * 0x0323bc38, nsGUIEvent * 0x0012f510, nsEventStatus * 0x0012f2e0, int 1, int & 1) line 6199 + 25 bytes nsViewManager::HandleEvent(nsView * 0x0323bc38, nsGUIEvent * 0x0012f510, int 0) line 2514 nsViewManager::DispatchEvent(nsViewManager * const 0x035a59d0, nsGUIEvent * 0x0012f510, nsEventStatus * 0x0012f460) line 2246 + 20 bytes HandleEvent(nsGUIEvent * 0x0012f510) line 174 nsWindow::DispatchEvent(nsWindow * const 0x058116ec, nsGUIEvent * 0x0012f510, nsEventStatus & nsEventStatus_eIgnore) line 1252 + 10 bytes n Stack trace for the working call: nsPasteCommand::DoCommand nsControllerCommandTable::DoCommand nsBaseCommandController::DoCommand nsXBLPrototypeHandler::ExecuteHandle nsXBLWindowHandler::WalkHandlersInternal nsXBLWindowKeyHandler::WalkHandlers nsXBLWindowKeyHandler::KeyPress DispatchToInterface(nsIDOMEvent * 0x05a27d60, nsIDOMEventListener * 0x05891cd8, unsigned int (nsIDOMEvent *)* 0x01ec62a0 `vcall'(nsIDOMEvent *), const nsID & {...}, int * 0x0012dc88) line 136 + 11 bytes nsEventListenerManager::HandleEvent(nsEventListenerManager * const 0x0588b3a8, nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, nsIDOMEventTarget * 0x0588b2c8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 1691 + 35 bytes nsWindowRoot::HandleChromeEvent(nsWindowRoot * const 0x0588b2d4, nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 255 nsGlobalWindow::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 1269 nsXULDocument::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 1252 nsXULElement::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2226 + 63 bytes nsXULElement::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2220 + 57 bytes nsXULElement::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2220 + 57 bytes nsXULElement::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2220 + 57 bytes nsXULElement::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2220 + 57 bytes nsXULElement::HandleChromeEvent(nsXULElement * const 0x058e1f34, nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 2881 + 35 bytes nsGlobalWindow::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 1269 nsDocument::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 514, nsEventStatus * 0x0012f2e0) line 4153 nsGenericElement::HandleDOMEvent(nsPresContext * 0x05a377d8, nsEvent * 0x0012f510, nsIDOMEvent * * 0x0012f0b8, unsigned int 519, nsEventStatus * 0x0012f2e0) line 2167 + 46 bytes PresShell::HandleEventInternal(nsEvent * 0x0012f510, nsIView * 0x05a3e090, unsigned int 1, nsEventStatus * 0x0012f2e0) line 6388 + 67 bytes PresShell::HandleEvent(PresShell * const 0x05b0893c, nsIView * 0x05a3e090, nsGUIEvent * 0x0012f510, nsEventStatus * 0x0012f2e0, int 1, int & 1) line 6199 + 25 bytes nsViewManager::HandleEvent(nsView * 0x05a3e090, nsGUIEvent * 0x0012f510, int 0) line 2514 nsViewManager::DispatchEvent(nsViewManager * const 0x05a3dfd8, nsGUIEvent * 0x0012f510, nsEventStatus * 0x0012f460) line 2246 + 20 bytes HandleEvent(nsGUIEvent * 0x0012f510) line 174 nsWindow::DispatchEvent(nsWindow * const 0x05894fa4, nsGUIEvent * 0x0012f510, nsEventStatus & nsEventStatus_eIgnore) line 1252 + 10 bytes nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f510) line 1273 nsWindow::DispatchKeyEvent(unsigned int 131, unsigned short 118, unsigned int 0, long 0, unsigned int 0) line 3443 + 15 bytes nsWindow::OnChar(unsigned int 0, unsigned int 0) line 3688 + 31 bytes nsWindow::OnKeyDown(unsigned int 86, unsigned int 47, long 3080193) line 3535 + 16 bytes nsWindow::ProcessMessage(unsigned int 256, unsigned int 86, long 3080193, long * 0x0012faac) line 4482 + 38 bytes nsWindow::WindowProc(HWND__ * 0x00340d06, unsigned int 256, unsigned int 86, long 3080193) line 1429 + 27 bytes
I think this issue effects Firefox too. I've gotten several Firefox browser windows with broken keyboard navigation in the URL bar and more noticeably, in web pages with text fields (like mozillazine posts). Same trick of refocusing the window seems to work there too.
this is now working for me using a 08/19 build on the branch and the trunk! I don't know what would have fixed this. Can anyone else verify as well?
Yes, it's fixed now. Looks like it's been working already in the 20050817 build.
seems to be fixed on both the branch and the trunk now.
Status: ASSIGNED → RESOLVED
Closed: 20 years ago
Keywords: fixed1.8
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.