diff --git a/mozilla/editor/libeditor/text/nsEditorEventListeners.cpp b/mozilla/editor/libeditor/text/nsEditorEventListeners.cpp index 3eb19faf36d..ec2b4c56466 100644 --- a/mozilla/editor/libeditor/text/nsEditorEventListeners.cpp +++ b/mozilla/editor/libeditor/text/nsEditorEventListeners.cpp @@ -1130,11 +1130,14 @@ nsTextEditorFocusListener::Focus(nsIDOMEvent* aEvent) getter_AddRefs(selection)); nsCOMPtr presShell = do_QueryReferent(mPresShell); - if (presShell && selection) { - nsCOMPtr caret; - presShell->GetCaret(getter_AddRefs(caret)); - if (caret) { - caret->SetCaretDOMSelection(selection); + if (presShell) { + nsCOMPtr caret; + presShell->GetCaret(getter_AddRefs(caret)); + if (caret) { + caret->SetIgnoreUserModify(PR_FALSE); + if (selection) { + caret->SetCaretDOMSelection(selection); + } } } @@ -1199,6 +1202,15 @@ nsTextEditorFocusListener::Blur(nsIDOMEvent* aEvent) selectionPrivate->SetAncestorLimiter(nsnull); } + nsCOMPtr presShell = do_QueryReferent(mPresShell); + if (presShell) { + nsCOMPtr caret; + presShell->GetCaret(getter_AddRefs(caret)); + if (caret) { + caret->SetIgnoreUserModify(PR_TRUE); + } + } + selCon->SetCaretEnabled(PR_FALSE); PRUint32 flags; diff --git a/mozilla/layout/base/nsCaret.cpp b/mozilla/layout/base/nsCaret.cpp index b75f5fc794e..32651e23e5a 100644 --- a/mozilla/layout/base/nsCaret.cpp +++ b/mozilla/layout/base/nsCaret.cpp @@ -91,7 +91,7 @@ nsCaret::nsCaret() , mShowDuringSelection(PR_FALSE) , mLastContentOffset(0) , mLastHint(nsFrameSelection::HINTLEFT) -, mIgnoreUserModify(PR_FALSE) +, mIgnoreUserModify(PR_TRUE) #ifdef IBMBIDI , mLastBidiLevel(0) , mKeyboardRTL(PR_FALSE)