From 1871e81671061dcd00ee5d87ce9c11422f5f6798 Mon Sep 17 00:00:00 2001 From: "aaronleventhal%moonset.net" Date: Mon, 3 Oct 2005 19:29:52 +0000 Subject: [PATCH] Bug 310626. Flash text input broken. r+sr=bryner git-svn-id: svn://10.0.0.236/trunk@181485 18797224-902f-48f8-a5cc-f745e15eee43 --- .../html/content/src/nsHTMLAppletElement.cpp | 3 +++ .../html/content/src/nsHTMLObjectElement.cpp | 18 ++++++++++++++++++ .../html/content/src/nsHTMLSharedElement.cpp | 3 +++ .../content/src/nsHTMLSharedObjectElement.cpp | 5 +++++ 4 files changed, 29 insertions(+) diff --git a/mozilla/content/html/content/src/nsHTMLAppletElement.cpp b/mozilla/content/html/content/src/nsHTMLAppletElement.cpp index 505ed87519f..5c21a580867 100644 --- a/mozilla/content/html/content/src/nsHTMLAppletElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLAppletElement.cpp @@ -83,6 +83,9 @@ public: // Have to override tabindex for to act right NS_IMETHOD GetTabIndex(PRInt32* aTabIndex); NS_IMETHOD SetTabIndex(PRInt32 aTabIndex); + // Let applet decide whether it wants focus from mouse clicks + virtual PRBool IsFocusable(PRInt32 *aTabIndex = nsnull) + { if (aTabIndex) GetTabIndex(aTabIndex); return PR_TRUE; } virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent, nsIContent* aBindingParent, diff --git a/mozilla/content/html/content/src/nsHTMLObjectElement.cpp b/mozilla/content/html/content/src/nsHTMLObjectElement.cpp index 488446ebaeb..3ed3a66e02b 100644 --- a/mozilla/content/html/content/src/nsHTMLObjectElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLObjectElement.cpp @@ -84,6 +84,7 @@ public: nsIAtom* aPrefix, const nsAString& aValue, PRBool aNotify); + virtual PRBool IsFocusable(PRInt32 *aTabIndex = nsnull); // Overriden nsIFormControl methods NS_IMETHOD_(PRInt32) GetType() const { return NS_FORM_OBJECT; } @@ -180,6 +181,8 @@ nsHTMLObjectElement::GetForm(nsIDOMHTMLFormElement** aForm) return nsGenericHTMLFormElement::GetForm(aForm); } +// nsIContent + nsresult nsHTMLObjectElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent, @@ -236,6 +239,21 @@ nsHTMLObjectElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName, aValue, aNotify); } +PRBool nsHTMLObjectElement::IsFocusable(PRInt32 *aTabIndex) +{ + if (aTabIndex) { + GetTabIndex(aTabIndex); + } + + if (Type() == eType_Plugin) { + // Has plugin content: let the plugin decide what to do in terms of + // internal focus from mouse clicks + return PR_TRUE; + } + + return HasAttr(kNameSpaceID_None, nsHTMLAtoms::tabindex); +} + // nsIFormControl diff --git a/mozilla/content/html/content/src/nsHTMLSharedElement.cpp b/mozilla/content/html/content/src/nsHTMLSharedElement.cpp index 361491302cc..81b622533bb 100644 --- a/mozilla/content/html/content/src/nsHTMLSharedElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLSharedElement.cpp @@ -130,6 +130,9 @@ public: // Have to override tabindex for to act right NS_IMETHOD GetTabIndex(PRInt32* aTabIndex); NS_IMETHOD SetTabIndex(PRInt32 aTabIndex); + // Let plugin decide whether it wants focus from mouse clicks + virtual PRBool IsFocusable(PRInt32 *aTabIndex = nsnull) + { if (aTabIndex) GetTabIndex(aTabIndex); return PR_TRUE; } virtual PRBool ParseAttribute(nsIAtom* aAttribute, const nsAString& aValue, diff --git a/mozilla/content/html/content/src/nsHTMLSharedObjectElement.cpp b/mozilla/content/html/content/src/nsHTMLSharedObjectElement.cpp index d1f028c86f1..d9588a1196e 100644 --- a/mozilla/content/html/content/src/nsHTMLSharedObjectElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLSharedObjectElement.cpp @@ -73,6 +73,11 @@ public: // nsIDOMHTMLObjectElement NS_DECL_NSIDOMHTMLOBJECTELEMENT + + // nsIContent + // Let plugin decide whether it wants focus from mouse clicks + virtual PRBool IsFocusable(PRInt32 *aTabIndex = nsnull) + { if (aTabIndex) GetTabIndex(aTabIndex); return PR_TRUE; } // Overriden nsIFormControl methods NS_IMETHOD_(PRInt32) GetType()