diff --git a/editor/base/nsEditorEventListeners.cpp b/editor/base/nsEditorEventListeners.cpp index a280e5a66fe4..70675019803d 100644 --- a/editor/base/nsEditorEventListeners.cpp +++ b/editor/base/nsEditorEventListeners.cpp @@ -1431,35 +1431,43 @@ nsTextEditorFocusListener::Focus(nsIDOMEvent* aEvent) // turn on selection and caret if (mEditor) { - nsCOMPtreditor = do_QueryInterface(mEditor); - if (editor) - { - nsCOMPtrps; - editor->GetPresShell(getter_AddRefs(ps)); - if (ps) + PRUint32 flags; + mEditor->GetFlags(&flags); + if (! (flags & TEXT_EDITOR_FLAG_DISABLED)) + { // only enable caret and selection if the editor is not disabled + nsCOMPtreditor = do_QueryInterface(mEditor); + if (editor) { - ps->SetCaretEnabled(PR_TRUE); - - nsCOMPtrdomDoc; - editor->GetDocument(getter_AddRefs(domDoc)); - if (domDoc) + nsCOMPtrps; + editor->GetPresShell(getter_AddRefs(ps)); + if (ps) { - nsCOMPtrdoc = do_QueryInterface(domDoc); - if (doc) + if (! (flags & TEXT_EDITOR_FLAG_READONLY)) + { // only enable caret if the editor is not readonly + ps->SetCaretEnabled(PR_TRUE); + } + + nsCOMPtrdomDoc; + editor->GetDocument(getter_AddRefs(domDoc)); + if (domDoc) { - doc->SetDisplaySelection(PR_TRUE); + nsCOMPtrdoc = do_QueryInterface(domDoc); + if (doc) + { + doc->SetDisplaySelection(PR_TRUE); + } } - } -// begin hack repaint - nsCOMPtr viewmgr; - ps->GetViewManager(getter_AddRefs(viewmgr)); - if (viewmgr) { - nsIView* view; - viewmgr->GetRootView(view); // views are not refCounted - if (view) { - viewmgr->UpdateView(view,nsnull,NS_VMREFRESH_IMMEDIATE); + // begin hack repaint + nsCOMPtr viewmgr; + ps->GetViewManager(getter_AddRefs(viewmgr)); + if (viewmgr) { + nsIView* view; + viewmgr->GetRootView(view); // views are not refCounted + if (view) { + viewmgr->UpdateView(view,nsnull,NS_VMREFRESH_IMMEDIATE); + } + // end hack repaint } -// end hack repaint } } } diff --git a/editor/libeditor/text/nsEditorEventListeners.cpp b/editor/libeditor/text/nsEditorEventListeners.cpp index a280e5a66fe4..70675019803d 100644 --- a/editor/libeditor/text/nsEditorEventListeners.cpp +++ b/editor/libeditor/text/nsEditorEventListeners.cpp @@ -1431,35 +1431,43 @@ nsTextEditorFocusListener::Focus(nsIDOMEvent* aEvent) // turn on selection and caret if (mEditor) { - nsCOMPtreditor = do_QueryInterface(mEditor); - if (editor) - { - nsCOMPtrps; - editor->GetPresShell(getter_AddRefs(ps)); - if (ps) + PRUint32 flags; + mEditor->GetFlags(&flags); + if (! (flags & TEXT_EDITOR_FLAG_DISABLED)) + { // only enable caret and selection if the editor is not disabled + nsCOMPtreditor = do_QueryInterface(mEditor); + if (editor) { - ps->SetCaretEnabled(PR_TRUE); - - nsCOMPtrdomDoc; - editor->GetDocument(getter_AddRefs(domDoc)); - if (domDoc) + nsCOMPtrps; + editor->GetPresShell(getter_AddRefs(ps)); + if (ps) { - nsCOMPtrdoc = do_QueryInterface(domDoc); - if (doc) + if (! (flags & TEXT_EDITOR_FLAG_READONLY)) + { // only enable caret if the editor is not readonly + ps->SetCaretEnabled(PR_TRUE); + } + + nsCOMPtrdomDoc; + editor->GetDocument(getter_AddRefs(domDoc)); + if (domDoc) { - doc->SetDisplaySelection(PR_TRUE); + nsCOMPtrdoc = do_QueryInterface(domDoc); + if (doc) + { + doc->SetDisplaySelection(PR_TRUE); + } } - } -// begin hack repaint - nsCOMPtr viewmgr; - ps->GetViewManager(getter_AddRefs(viewmgr)); - if (viewmgr) { - nsIView* view; - viewmgr->GetRootView(view); // views are not refCounted - if (view) { - viewmgr->UpdateView(view,nsnull,NS_VMREFRESH_IMMEDIATE); + // begin hack repaint + nsCOMPtr viewmgr; + ps->GetViewManager(getter_AddRefs(viewmgr)); + if (viewmgr) { + nsIView* view; + viewmgr->GetRootView(view); // views are not refCounted + if (view) { + viewmgr->UpdateView(view,nsnull,NS_VMREFRESH_IMMEDIATE); + } + // end hack repaint } -// end hack repaint } } }