From b67b0ab7a197c5bbe31c6a175c3523c9fc42eb90 Mon Sep 17 00:00:00 2001 From: "allan%beaufour.dk" Date: Thu, 6 Apr 2006 08:12:46 +0000 Subject: [PATCH] [XForms] Expose switch-state to script. Bug 332127, r=aaronr+doronr git-svn-id: svn://10.0.0.236/trunk@193676 18797224-902f-48f8-a5cc-f745e15eee43 --- .../extensions/xforms/nsIXFormsSwitchElement.idl | 15 ++++++++++----- .../extensions/xforms/nsXFormsSwitchElement.cpp | 15 +++++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/mozilla/extensions/xforms/nsIXFormsSwitchElement.idl b/mozilla/extensions/xforms/nsIXFormsSwitchElement.idl index 005532f7ccb..21ff8f8f744 100644 --- a/mozilla/extensions/xforms/nsIXFormsSwitchElement.idl +++ b/mozilla/extensions/xforms/nsIXFormsSwitchElement.idl @@ -43,16 +43,21 @@ interface nsIDOMElement; /** * Interface implemented by the switch element. */ -[uuid(edeb1e48-5d5c-4091-8021-5975310caa66)] +[scriptable, uuid(42af102c-4c96-4534-9ea7-20a23fddbf60)] interface nsIXFormsSwitchElement : nsISupports { /** - * Used by case elements to select or deselect themselves. + * Select or deselect a given case element. * - * @param aCase The case element - * @param aValue The value of the selected attribute. + * @param caseEl The case element + * @param value Select (true) or deselect (false) */ - void setSelected(in nsIDOMElement aCase, in boolean aValue); + void setSelected(in nsIDOMElement caseEl, in boolean value); + + /** + * Retrieve the currently selected case element. + */ + readonly attribute nsIDOMElement selected; }; diff --git a/mozilla/extensions/xforms/nsXFormsSwitchElement.cpp b/mozilla/extensions/xforms/nsXFormsSwitchElement.cpp index 61349995859..2d845cfa941 100644 --- a/mozilla/extensions/xforms/nsXFormsSwitchElement.cpp +++ b/mozilla/extensions/xforms/nsXFormsSwitchElement.cpp @@ -232,6 +232,17 @@ nsXFormsSwitchElement::FindFirstSelectedCase(nsIDOMElement* aDeselected) return result; } +// nsIXFormsSwitchElement + +NS_IMETHODIMP +nsXFormsSwitchElement::GetSelected(nsIDOMElement **aCase) +{ + NS_ENSURE_ARG_POINTER(aCase); + NS_IF_ADDREF(*aCase = mSelected); + return NS_OK; +} + + NS_IMETHODIMP nsXFormsSwitchElement::SetSelected(nsIDOMElement *aCase, PRBool aValue) { @@ -292,6 +303,8 @@ nsXFormsSwitchElement::SetSelected(nsIDOMElement *aCase, PRBool aValue) return NS_OK; } +// nsXFormsSwitchElement + void nsXFormsSwitchElement::SetFocus(nsIDOMElement* aDeselected, nsIDOMElement* aSelected) @@ -380,6 +393,8 @@ nsXFormsSwitchElement::CaseChanged(nsIDOMNode* aCase, PRBool aRemoved) } } +// nsIXFormsControl + NS_IMETHODIMP nsXFormsSwitchElement::IsEventTarget(PRBool *aOK) {