Closed Bug 303976 Opened 19 years ago Closed 19 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: 19 years ago
Keywords: fixed1.8
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.