зеркало из https://github.com/mozilla/pjs.git
[XForms] Fix selected attribute on case elements. Bug 332129, r=aaonr+doronr
This commit is contained in:
Родитель
53606b4af6
Коммит
635aa3c4fa
|
@ -60,6 +60,7 @@ public:
|
|||
|
||||
NS_IMETHOD OnCreated(nsIXTFBindableElementWrapper *aWrapper);
|
||||
NS_IMETHOD OnDestroyed();
|
||||
NS_IMETHOD DoneAddingChildren();
|
||||
|
||||
nsXFormsCaseElement()
|
||||
: mElement(nsnull), mSelected(PR_FALSE), mCachedSelectedAttr(PR_FALSE)
|
||||
|
@ -82,6 +83,8 @@ nsXFormsCaseElement::OnCreated(nsIXTFBindableElementWrapper *aWrapper)
|
|||
nsresult rv = nsXFormsBindableStub::OnCreated(aWrapper);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
aWrapper->SetNotificationMask(nsIXTFElement::NOTIFY_DONE_ADDING_CHILDREN);
|
||||
|
||||
nsCOMPtr<nsIDOMElement> node;
|
||||
aWrapper->GetElementNode(getter_AddRefs(node));
|
||||
|
||||
|
@ -101,6 +104,19 @@ nsXFormsCaseElement::OnDestroyed()
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXFormsCaseElement::DoneAddingChildren()
|
||||
{
|
||||
// cache the value of the "selected" attr
|
||||
nsAutoString value;
|
||||
mElement->GetAttribute(NS_LITERAL_STRING("selected"), value);
|
||||
if (value.EqualsLiteral("true") || value.EqualsLiteral("1")) {
|
||||
mCachedSelectedAttr = PR_TRUE;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXFormsCaseElement::GetInitialSelectedState(PRBool *aInitialSelectedState)
|
||||
{
|
||||
|
@ -114,24 +130,19 @@ nsXFormsCaseElement::SetSelected(PRBool aEnable)
|
|||
mSelected = aEnable;
|
||||
|
||||
nsCOMPtr<nsIXFormsCaseUIElement> caseUI(do_QueryInterface(mElement));
|
||||
if (caseUI) {
|
||||
caseUI->CaseSelected(mSelected);
|
||||
}
|
||||
if (!caseUI)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
caseUI->CaseSelected(mSelected);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXFormsCaseElement::WidgetAttached()
|
||||
{
|
||||
// cache the value of the "selected" attr
|
||||
nsAutoString value;
|
||||
mElement->GetAttribute(NS_LITERAL_STRING("selected"), value);
|
||||
if (value.EqualsLiteral("true") || value.EqualsLiteral("1")) {
|
||||
mCachedSelectedAttr = PR_TRUE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIXFormsCaseUIElement> caseUI(do_QueryInterface(mElement));
|
||||
NS_WARN_IF_FALSE(caseUI,
|
||||
"Case element not implementing nsIXFormCaseUIElement?");
|
||||
if (caseUI) {
|
||||
caseUI->CaseSelected(mSelected);
|
||||
}
|
||||
|
|
|
@ -192,8 +192,10 @@ nsXFormsSwitchElement::Init(nsIDOMElement* aDeselected)
|
|||
nsCOMPtr<nsIDOMElement> firstCase = FindFirstSelectedCase(aDeselected);
|
||||
mSelected = firstCase;
|
||||
nsCOMPtr<nsIXFormsCaseElement> selected(do_QueryInterface(mSelected));
|
||||
if (selected)
|
||||
selected->SetSelected(PR_TRUE);
|
||||
if (selected) {
|
||||
nsresult rv = selected->SetSelected(PR_TRUE);
|
||||
NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "Failed to select case");
|
||||
}
|
||||
}
|
||||
|
||||
already_AddRefed<nsIDOMElement>
|
||||
|
@ -204,7 +206,7 @@ nsXFormsSwitchElement::FindFirstSelectedCase(nsIDOMElement* aDeselected)
|
|||
nsCOMPtr<nsIDOMElement> firstCase;
|
||||
while (child) {
|
||||
nsCOMPtr<nsIDOMElement> childElement(do_QueryInterface(child));
|
||||
if (childElement && childElement != aDeselected) {
|
||||
if (childElement && childElement != aDeselected) {
|
||||
if (nsXFormsUtils::IsXFormsElement(child, NS_LITERAL_STRING("case"))) {
|
||||
if (!firstCase)
|
||||
firstCase = childElement;
|
||||
|
|
Загрузка…
Ссылка в новой задаче