Fix for bug #32587.

git-svn-id: svn://10.0.0.236/trunk@63522 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
hyatt%netscape.com
2000-03-21 02:05:15 +00:00
parent 6f2ba32ac7
commit fc694d48d6
22 changed files with 148 additions and 70 deletions

View File

@@ -945,6 +945,7 @@ enum nsDOMProp {
NS_DOM_PROP_XULMENULISTELEMENT_CROP,
NS_DOM_PROP_XULMENULISTELEMENT_DATA,
NS_DOM_PROP_XULMENULISTELEMENT_DISABLED,
NS_DOM_PROP_XULMENULISTELEMENT_SELECTEDINDEX,
NS_DOM_PROP_XULMENULISTELEMENT_SELECTEDITEM,
NS_DOM_PROP_XULMENULISTELEMENT_SRC,
NS_DOM_PROP_XULMENULISTELEMENT_VALUE,

View File

@@ -944,6 +944,7 @@
"xulmenulistelement.crop", \
"xulmenulistelement.data", \
"xulmenulistelement.disabled", \
"xulmenulistelement.selectedindex", \
"xulmenulistelement.selecteditem", \
"xulmenulistelement.src", \
"xulmenulistelement.value", \

View File

@@ -74,7 +74,7 @@ GetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -157,7 +157,7 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -76,7 +76,7 @@ GetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -161,7 +161,7 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -80,7 +80,7 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -189,7 +189,7 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -70,7 +70,7 @@ GetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -155,7 +155,7 @@ SetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -4,6 +4,7 @@ interface XULMenuListElement : XULElement {
attribute DOMString value;
attribute DOMString data;
attribute Element selectedItem;
attribute int selectedIndex;
attribute DOMString crop;
attribute boolean disabled;
attribute DOMString src;

View File

@@ -48,6 +48,9 @@ public:
NS_IMETHOD GetSelectedItem(nsIDOMElement** aSelectedItem)=0;
NS_IMETHOD SetSelectedItem(nsIDOMElement* aSelectedItem)=0;
NS_IMETHOD GetSelectedIndex(PRInt32* aSelectedIndex)=0;
NS_IMETHOD SetSelectedIndex(PRInt32 aSelectedIndex)=0;
NS_IMETHOD GetCrop(nsString& aCrop)=0;
NS_IMETHOD SetCrop(const nsString& aCrop)=0;
@@ -66,6 +69,8 @@ public:
NS_IMETHOD SetData(const nsString& aData); \
NS_IMETHOD GetSelectedItem(nsIDOMElement** aSelectedItem); \
NS_IMETHOD SetSelectedItem(nsIDOMElement* aSelectedItem); \
NS_IMETHOD GetSelectedIndex(PRInt32* aSelectedIndex); \
NS_IMETHOD SetSelectedIndex(PRInt32 aSelectedIndex); \
NS_IMETHOD GetCrop(nsString& aCrop); \
NS_IMETHOD SetCrop(const nsString& aCrop); \
NS_IMETHOD GetDisabled(PRBool* aDisabled); \
@@ -82,6 +87,8 @@ public:
NS_IMETHOD SetData(const nsString& aData) { return _to SetData(aData); } \
NS_IMETHOD GetSelectedItem(nsIDOMElement** aSelectedItem) { return _to GetSelectedItem(aSelectedItem); } \
NS_IMETHOD SetSelectedItem(nsIDOMElement* aSelectedItem) { return _to SetSelectedItem(aSelectedItem); } \
NS_IMETHOD GetSelectedIndex(PRInt32* aSelectedIndex) { return _to GetSelectedIndex(aSelectedIndex); } \
NS_IMETHOD SetSelectedIndex(PRInt32 aSelectedIndex) { return _to SetSelectedIndex(aSelectedIndex); } \
NS_IMETHOD GetCrop(nsString& aCrop) { return _to GetCrop(aCrop); } \
NS_IMETHOD SetCrop(const nsString& aCrop) { return _to SetCrop(aCrop); } \
NS_IMETHOD GetDisabled(PRBool* aDisabled) { return _to GetDisabled(aDisabled); } \

View File

@@ -65,7 +65,7 @@ GetXULBrowserElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -111,7 +111,7 @@ SetXULBrowserElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -69,7 +69,7 @@ GetXULCheckboxElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -186,7 +186,7 @@ SetXULCheckboxElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -74,7 +74,7 @@ GetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -157,7 +157,7 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -76,7 +76,7 @@ GetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -161,7 +161,7 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -65,7 +65,7 @@ GetXULEditorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -111,7 +111,7 @@ SetXULEditorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -80,7 +80,7 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -189,7 +189,7 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -65,7 +65,7 @@ GetXULIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -111,7 +111,7 @@ SetXULIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -51,9 +51,10 @@ enum XULMenuListElement_slots {
XULMENULISTELEMENT_VALUE = -1,
XULMENULISTELEMENT_DATA = -2,
XULMENULISTELEMENT_SELECTEDITEM = -3,
XULMENULISTELEMENT_CROP = -4,
XULMENULISTELEMENT_DISABLED = -5,
XULMENULISTELEMENT_SRC = -6
XULMENULISTELEMENT_SELECTEDINDEX = -4,
XULMENULISTELEMENT_CROP = -5,
XULMENULISTELEMENT_DISABLED = -6,
XULMENULISTELEMENT_SRC = -7
};
/***********************************************************************/
@@ -70,7 +71,7 @@ GetXULMenuListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -113,6 +114,18 @@ GetXULMenuListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
}
break;
}
case XULMENULISTELEMENT_SELECTEDINDEX:
{
rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULMENULISTELEMENT_SELECTEDINDEX, PR_FALSE);
if (NS_SUCCEEDED(rv)) {
PRInt32 prop;
rv = a->GetSelectedIndex(&prop);
if (NS_SUCCEEDED(rv)) {
*vp = INT_TO_JSVAL(prop);
}
}
break;
}
case XULMENULISTELEMENT_CROP:
{
rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULMENULISTELEMENT_CROP, PR_FALSE);
@@ -176,7 +189,7 @@ SetXULMenuListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -222,6 +235,24 @@ SetXULMenuListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
}
break;
}
case XULMENULISTELEMENT_SELECTEDINDEX:
{
rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULMENULISTELEMENT_SELECTEDINDEX, PR_TRUE);
if (NS_SUCCEEDED(rv)) {
PRInt32 prop;
int32 temp;
if (JSVAL_IS_NUMBER(*vp) && JS_ValueToInt32(cx, *vp, &temp)) {
prop = (PRInt32)temp;
}
else {
rv = NS_ERROR_DOM_NOT_NUMBER_ERR;
}
rv = a->SetSelectedIndex(prop);
}
break;
}
case XULMENULISTELEMENT_CROP:
{
rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULMENULISTELEMENT_CROP, PR_TRUE);
@@ -332,6 +363,7 @@ static JSPropertySpec XULMenuListElementProperties[] =
{"value", XULMENULISTELEMENT_VALUE, JSPROP_ENUMERATE},
{"data", XULMENULISTELEMENT_DATA, JSPROP_ENUMERATE},
{"selectedItem", XULMENULISTELEMENT_SELECTEDITEM, JSPROP_ENUMERATE},
{"selectedIndex", XULMENULISTELEMENT_SELECTEDINDEX, JSPROP_ENUMERATE},
{"crop", XULMENULISTELEMENT_CROP, JSPROP_ENUMERATE},
{"disabled", XULMENULISTELEMENT_DISABLED, JSPROP_ENUMERATE},
{"src", XULMENULISTELEMENT_SRC, JSPROP_ENUMERATE},

View File

@@ -59,7 +59,7 @@ GetXULPopupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -93,7 +93,7 @@ SetXULPopupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -69,7 +69,7 @@ GetXULRadioElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -186,7 +186,7 @@ SetXULRadioElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -65,29 +65,22 @@ GetXULRadioGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v
return JS_TRUE;
}
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsresult rv;
NS_WITH_SERVICE(nsIScriptSecurityManager, secMan,
NS_SCRIPTSECURITYMANAGER_PROGID, &rv);
if (NS_FAILED(rv)) {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR);
}
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
return PR_FALSE;
switch(JSVAL_TO_INT(id)) {
case XULRADIOGROUPELEMENT_SELECTEDITEM:
{
rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULRADIOGROUPELEMENT_SELECTEDITEM, PR_FALSE);
if (NS_FAILED(rv)) {
return nsJSUtils::nsReportError(cx, obj, rv);
}
nsIDOMXULRadioElement* prop;
nsresult result = NS_OK;
result = a->GetSelectedItem(&prop);
if (NS_SUCCEEDED(result)) {
// get the js object
nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp);
}
else {
return nsJSUtils::nsReportError(cx, obj, result);
if (NS_SUCCEEDED(rv)) {
nsIDOMXULRadioElement* prop;
rv = a->GetSelectedItem(&prop);
if (NS_SUCCEEDED(rv)) {
// get the js object
nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp);
}
}
break;
}
@@ -99,6 +92,8 @@ GetXULRadioGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v
return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp);
}
if (NS_FAILED(rv))
return nsJSUtils::nsReportError(cx, obj, rv);
return PR_TRUE;
}
@@ -116,29 +111,26 @@ SetXULRadioGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v
return JS_TRUE;
}
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsresult rv;
NS_WITH_SERVICE(nsIScriptSecurityManager, secMan,
NS_SCRIPTSECURITYMANAGER_PROGID, &rv);
if (NS_FAILED(rv)) {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR);
}
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
return PR_FALSE;
switch(JSVAL_TO_INT(id)) {
case XULRADIOGROUPELEMENT_SELECTEDITEM:
{
rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULRADIOGROUPELEMENT_SELECTEDITEM, PR_TRUE);
if (NS_FAILED(rv)) {
return nsJSUtils::nsReportError(cx, obj, rv);
}
nsIDOMXULRadioElement* prop;
if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop,
kIXULRadioElementIID, "XULRadioElement",
cx, *vp)) {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR);
}
if (NS_SUCCEEDED(rv)) {
nsIDOMXULRadioElement* prop;
if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop,
kIXULRadioElementIID, "XULRadioElement",
cx, *vp)) {
rv = NS_ERROR_DOM_NOT_OBJECT_ERR;
}
a->SetSelectedItem(prop);
NS_IF_RELEASE(prop);
rv = a->SetSelectedItem(prop);
NS_IF_RELEASE(prop);
}
break;
}
default:
@@ -149,6 +141,8 @@ SetXULRadioGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v
return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp);
}
if (NS_FAILED(rv))
return nsJSUtils::nsReportError(cx, obj, rv);
return PR_TRUE;
}

View File

@@ -68,7 +68,7 @@ GetXULTitledButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -173,7 +173,7 @@ SetXULTitledButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -70,7 +70,7 @@ GetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)
@@ -155,7 +155,7 @@ SetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return JS_TRUE;
}
nsresult rv;
nsresult rv = NS_OK;
if (JSVAL_IS_INT(id)) {
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
if (!secMan)

View File

@@ -163,6 +163,48 @@ GetMenuChildrenElement(nsIContent* aParent, nsIContent** aResult)
}
}
NS_IMETHODIMP
nsXULMenuListElement::GetSelectedIndex(PRInt32* aResult)
{
// XXX Quick and dirty. Doesn't work with hierarchies, or
// when other things are put in the <menupopup>.
*aResult = -1;
if (mSelectedItem) {
nsCOMPtr<nsIContent> parent;
nsCOMPtr<nsIContent> child(do_QueryInterface(mSelectedItem));
child->GetParent(*getter_AddRefs(parent));
parent->IndexOf(child, *aResult);
}
return NS_OK;
}
NS_IMETHODIMP
nsXULMenuListElement::SetSelectedIndex(PRInt32 anIndex)
{
// XXX Quick and dirty. Doesn't work with hierarchies, or
// when other things are put in the <menupopup>.
if (anIndex == -1)
SetSelectedItem(nsnull);
if (anIndex < 0)
return NS_OK;
nsCOMPtr<nsIContent> child;
nsCOMPtr<nsIContent> parent(do_QueryInterface(mOuter));
GetMenuChildrenElement(parent, getter_AddRefs(child));
if (child) {
PRInt32 count;
child->ChildCount(count);
if (anIndex >= count)
return NS_OK;
nsCOMPtr<nsIContent> item;
child->ChildAt(anIndex, *getter_AddRefs(item));
nsCOMPtr<nsIDOMElement> element(do_QueryInterface(item));
SetSelectedItem(element);
}
return NS_OK;
}
NS_IMETHODIMP
nsXULMenuListElement::GetSelectedItem(nsIDOMElement** aResult)