From 8c3c65783f02a059b784899a8dc172ee54536ec5 Mon Sep 17 00:00:00 2001 From: "Olli.Pettay@helsinki.fi" Date: Wed, 4 Jul 2007 11:20:00 -0700 Subject: [PATCH] Bug 386820, Gmail, compose mail, cursor missing in (rich formatting) textfield, r+sr=peterv --- editor/libeditor/base/nsEditor.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/editor/libeditor/base/nsEditor.cpp b/editor/libeditor/base/nsEditor.cpp index 8c2ad83963d..08c3dc82b82 100644 --- a/editor/libeditor/base/nsEditor.cpp +++ b/editor/libeditor/base/nsEditor.cpp @@ -351,8 +351,13 @@ nsEditor::InstallEventListeners() rv |= piTarget->AddEventListenerByIID(mMouseListenerP, NS_GET_IID(nsIDOMMouseListener)); - rv |= piTarget->AddEventListenerByIID(mFocusListenerP, - NS_GET_IID(nsIDOMFocusListener)); + if (elmP) { + // Focus event doesn't bubble so adding the listener to capturing phase. + // Make sure this works after bug 235441 gets fixed. + rv |= elmP->AddEventListenerByIID(mFocusListenerP, + NS_GET_IID(nsIDOMFocusListener), + NS_EVENT_FLAG_CAPTURE); + } rv |= piTarget->AddEventListenerByIID(mTextListenerP, NS_GET_IID(nsIDOMTextListener)); @@ -385,14 +390,13 @@ nsEditor::RemoveEventListeners() if (piTarget) { - // unregister the event listeners with the DOM event reveiver - + // unregister the event listeners with the DOM event target + nsCOMPtr elmP; + piTarget->GetListenerManager(PR_TRUE, getter_AddRefs(elmP)); if (mKeyListenerP) { nsCOMPtr sysGroup; piTarget->GetSystemEventGroup(getter_AddRefs(sysGroup)); - nsCOMPtr elmP; - piTarget->GetListenerManager(PR_TRUE, getter_AddRefs(elmP)); if (sysGroup && elmP) { elmP->RemoveEventListenerByType(mKeyListenerP, @@ -409,10 +413,11 @@ nsEditor::RemoveEventListeners() NS_GET_IID(nsIDOMMouseListener)); } - if (mFocusListenerP) + if (mFocusListenerP && elmP) { - piTarget->RemoveEventListenerByIID(mFocusListenerP, - NS_GET_IID(nsIDOMFocusListener)); + elmP->RemoveEventListenerByIID(mFocusListenerP, + NS_GET_IID(nsIDOMFocusListener), + NS_EVENT_FLAG_CAPTURE); } if (mTextListenerP)