diff --git a/mozilla/accessible/src/html/nsHTMLFormControlAccessible.cpp b/mozilla/accessible/src/html/nsHTMLFormControlAccessible.cpp index cd3fa551722..08d8a388364 100644 --- a/mozilla/accessible/src/html/nsHTMLFormControlAccessible.cpp +++ b/mozilla/accessible/src/html/nsHTMLFormControlAccessible.cpp @@ -41,6 +41,7 @@ #include "nsAccessibilityAtoms.h" #include "nsHTMLFormControlAccessible.h" #include "nsIDOMHTMLInputElement.h" +#include "nsIDOMNSEditableElement.h" #include "nsIDOMNSHTMLButtonElement.h" #include "nsIDOMHTMLLegendElement.h" #include "nsIDOMHTMLTextAreaElement.h" @@ -417,15 +418,15 @@ void nsHTMLTextFieldAccessible::SetEditor(nsIEditor* aEditor) void nsHTMLTextFieldAccessible::CheckForEditor() { - nsIFrame *frame = GetFrame(); - if (frame) { - nsITextControlFrame *textFrame; - frame->QueryInterface(NS_GET_IID(nsITextControlFrame), (void**)&textFrame); - if (textFrame) { - nsCOMPtr editor; - textFrame->GetEditor(getter_AddRefs(editor)); - SetEditor(editor); - } + nsCOMPtr editableElt(do_QueryInterface(mDOMNode)); + if (!editableElt) { + return; + } + + nsCOMPtr editor; + nsresult rv = editableElt->GetEditor(getter_AddRefs(editor)); + if (NS_SUCCEEDED(rv)) { + SetEditor(editor); } } diff --git a/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp b/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp index 7dc6aca5f3a..ba3c940a35a 100644 --- a/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp +++ b/mozilla/accessible/src/xul/nsXULFormControlAccessible.cpp @@ -43,6 +43,7 @@ #include "nsAccessibilityAtoms.h" #include "nsAccessibleTreeWalker.h" #include "nsIDOMHTMLInputElement.h" +#include "nsIDOMNSEditableElement.h" #include "nsIDOMXULButtonElement.h" #include "nsIDOMXULCheckboxElement.h" #include "nsIDOMXULMenuListElement.h" @@ -797,23 +798,18 @@ void nsXULTextFieldAccessible::CheckForEditor() nsCOMPtr inputField; textBox->GetInputField(getter_AddRefs(inputField)); - nsCOMPtr inputContent = do_QueryInterface(inputField); - if (!inputContent) { + if (!inputField) { return; } - - nsCOMPtr presShell = GetPresShell(); - nsIFrame *inputFrame = presShell->GetPrimaryFrameFor(inputContent); - if (!inputFrame) { + + nsCOMPtr editableElt(do_QueryInterface(inputField)); + if (!editableElt) { return; } - - nsITextControlFrame *textFrame; - inputFrame->QueryInterface(NS_GET_IID(nsITextControlFrame), (void**)&textFrame); - if (textFrame) { - nsCOMPtr editor; - textFrame->GetEditor(getter_AddRefs(editor)); + + nsCOMPtr editor; + nsresult rv = editableElt->GetEditor(getter_AddRefs(editor)); + if (NS_SUCCEEDED(rv)) { SetEditor(editor); } } -