From e76bd70e30b62cdcdff39587d19009811fb4e48d Mon Sep 17 00:00:00 2001 From: "blakeross%telocity.com" Date: Wed, 20 Jun 2001 02:02:57 +0000 Subject: [PATCH] Add command() method to nsIDOMXULElement, fixes bug 56137 and some other accessibility bugs (83614). r=kerz sr=ben a=asa git-svn-id: svn://10.0.0.236/trunk@97531 18797224-902f-48f8-a5cc-f745e15eee43 --- .../content/xul/content/src/nsXULElement.cpp | 42 +++++++++++-------- .../dom/public/idl/xul/nsIDOMXULElement.idl | 2 +- .../resources/content/bindings/checkbox.xml | 9 +++- .../resources/content/bindings/radio.xml | 3 +- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/mozilla/content/xul/content/src/nsXULElement.cpp b/mozilla/content/xul/content/src/nsXULElement.cpp index cb6b3a90fe7..2951111a50a 100644 --- a/mozilla/content/xul/content/src/nsXULElement.cpp +++ b/mozilla/content/xul/content/src/nsXULElement.cpp @@ -3727,14 +3727,6 @@ nsXULElement::GetRangeList(nsVoidArray*& aResult) const //---------------------------------------------------------------------- -// nsIDOMXULElement interface - -NS_IMETHODIMP -nsXULElement::DoCommand() -{ - return NS_OK; -} - NS_IMETHODIMP nsXULElement::AddBroadcastListener(const nsAReadableString& attr, nsIDOMElement* anElement) @@ -4439,8 +4431,6 @@ nsXULElement::Click() PRInt32 numShells = doc->GetNumberOfShells(); nsCOMPtr shell; // Strong nsCOMPtr context; - nsAutoString tagName; - PRBool isButton = NodeInfo()->Equals(NS_LITERAL_STRING("button")); for (PRInt32 i=0; iGetShellAt(i)); @@ -4457,14 +4447,32 @@ nsXULElement::Click() event.clickCount = 0; event.widget = nsnull; HandleDOMEvent(context, &event, nsnull, NS_EVENT_FLAG_INIT, &status); + } + } + + return NS_OK; +} - if (isButton) { - nsMouseEvent evt; - evt.eventStructType = NS_EVENT; - evt.message = NS_MENU_ACTION; - nsEventStatus sts = nsEventStatus_eIgnore; - HandleDOMEvent(context, &evt, nsnull, NS_EVENT_FLAG_INIT, &sts); - } +NS_IMETHODIMP +nsXULElement::Command() +{ + nsCOMPtr doc; + GetDocument(*getter_AddRefs(doc)); + if (doc) { + PRInt32 numShells = doc->GetNumberOfShells(); + nsCOMPtr shell; + nsCOMPtr context; + PRBool isButton = NodeInfo()->Equals(NS_LITERAL_STRING("button")); + + for (PRInt32 i=0; iGetShellAt(i)); + shell->GetPresContext(getter_AddRefs(context)); + + nsEventStatus status = nsEventStatus_eIgnore; + nsMouseEvent event; + event.eventStructType = NS_EVENT; + event.message = NS_MENU_ACTION; + HandleDOMEvent(context, &event, nsnull, NS_EVENT_FLAG_INIT, &status); } } diff --git a/mozilla/dom/public/idl/xul/nsIDOMXULElement.idl b/mozilla/dom/public/idl/xul/nsIDOMXULElement.idl index 53c7419a7d9..6de5223f864 100644 --- a/mozilla/dom/public/idl/xul/nsIDOMXULElement.idl +++ b/mozilla/dom/public/idl/xul/nsIDOMXULElement.idl @@ -50,11 +50,11 @@ interface nsIDOMXULElement : nsIDOMElement in nsIDOMElement element); void removeBroadcastListener(in DOMString attr, in nsIDOMElement element); - void doCommand(); void focus(); void blur(); void click(); + void command(); nsIDOMNodeList getElementsByAttribute(in DOMString name, in DOMString value); diff --git a/mozilla/xpfe/global/resources/content/bindings/checkbox.xml b/mozilla/xpfe/global/resources/content/bindings/checkbox.xml index 727f571c72d..38d4504614e 100644 --- a/mozilla/xpfe/global/resources/content/bindings/checkbox.xml +++ b/mozilla/xpfe/global/resources/content/bindings/checkbox.xml @@ -33,7 +33,14 @@ - + + + diff --git a/mozilla/xpfe/global/resources/content/bindings/radio.xml b/mozilla/xpfe/global/resources/content/bindings/radio.xml index ef02ca4e186..6f7af07c33b 100644 --- a/mozilla/xpfe/global/resources/content/bindings/radio.xml +++ b/mozilla/xpfe/global/resources/content/bindings/radio.xml @@ -120,6 +120,7 @@ break; } } + this.selectedItem.command(); ]]> @@ -133,7 +134,7 @@ ]]> - +