mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Fix bug 572896 and bug 572897 bustage on embedding/test/test_bug293834.html; r=Smaug
This commit is contained in:
parent
e59d57ca10
commit
679de0ecc9
@ -340,7 +340,7 @@ nsHTMLInputElement::Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const
|
||||
if (GET_BOOLBIT(mBitField, BF_CHECKED_CHANGED)) {
|
||||
// We no longer have our original checked state. Set our
|
||||
// checked state on the clone.
|
||||
it->DoSetChecked(GetChecked(), PR_FALSE);
|
||||
it->DoSetChecked(GetChecked(), PR_FALSE, PR_TRUE);
|
||||
}
|
||||
break;
|
||||
case NS_FORM_INPUT_IMAGE:
|
||||
@ -428,7 +428,7 @@ nsHTMLInputElement::AfterSetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
|
||||
} else {
|
||||
PRBool defaultChecked;
|
||||
GetDefaultChecked(&defaultChecked);
|
||||
DoSetChecked(defaultChecked);
|
||||
DoSetChecked(defaultChecked, PR_TRUE, PR_TRUE);
|
||||
SetCheckedChanged(PR_FALSE);
|
||||
}
|
||||
}
|
||||
@ -1024,20 +1024,21 @@ nsHTMLInputElement::GetCheckedChanged()
|
||||
NS_IMETHODIMP
|
||||
nsHTMLInputElement::SetChecked(PRBool aChecked)
|
||||
{
|
||||
return DoSetChecked(aChecked);
|
||||
return DoSetChecked(aChecked, PR_TRUE, PR_TRUE);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsHTMLInputElement::DoSetChecked(PRBool aChecked, PRBool aNotify)
|
||||
nsHTMLInputElement::DoSetChecked(PRBool aChecked, PRBool aNotify,
|
||||
PRBool aSetValueChanged)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
//
|
||||
// If the user or JS attempts to set checked, whether it actually changes the
|
||||
// value or not, we say the value was changed so that defaultValue don't
|
||||
// affect it no more.
|
||||
//
|
||||
DoSetCheckedChanged(PR_TRUE, aNotify);
|
||||
if (aSetValueChanged) {
|
||||
DoSetCheckedChanged(PR_TRUE, aNotify);
|
||||
}
|
||||
|
||||
//
|
||||
// Don't do anything if we're not changing whether it's checked (it would
|
||||
@ -1493,7 +1494,7 @@ nsHTMLInputElement::PreHandleEvent(nsEventChainPreVisitor& aVisitor)
|
||||
}
|
||||
|
||||
GetChecked(&originalCheckedValue);
|
||||
DoSetChecked(!originalCheckedValue);
|
||||
DoSetChecked(!originalCheckedValue, PR_TRUE, PR_TRUE);
|
||||
SET_BOOLBIT(mBitField, BF_CHECKED_IS_TOGGLED, PR_TRUE);
|
||||
}
|
||||
break;
|
||||
@ -1513,7 +1514,7 @@ nsHTMLInputElement::PreHandleEvent(nsEventChainPreVisitor& aVisitor)
|
||||
|
||||
originalCheckedValue = GetChecked();
|
||||
if (!originalCheckedValue) {
|
||||
DoSetChecked(PR_TRUE);
|
||||
DoSetChecked(PR_TRUE, PR_TRUE, PR_TRUE);
|
||||
SET_BOOLBIT(mBitField, BF_CHECKED_IS_TOGGLED, PR_TRUE);
|
||||
}
|
||||
}
|
||||
@ -1674,13 +1675,13 @@ nsHTMLInputElement::PostHandleEvent(nsEventChainPostVisitor& aVisitor)
|
||||
// If this one is no longer a radio button we must reset it back to
|
||||
// false to cancel the action. See how the web of hack grows?
|
||||
if (mType != NS_FORM_INPUT_RADIO) {
|
||||
DoSetChecked(PR_FALSE);
|
||||
DoSetChecked(PR_FALSE, PR_TRUE, PR_TRUE);
|
||||
}
|
||||
} else if (oldType == NS_FORM_INPUT_CHECKBOX) {
|
||||
PRBool originalIndeterminateValue =
|
||||
!!(aVisitor.mItemFlags & NS_ORIGINAL_INDETERMINATE_VALUE);
|
||||
SetIndeterminateInternal(originalIndeterminateValue, PR_FALSE);
|
||||
DoSetChecked(originalCheckedValue);
|
||||
DoSetChecked(originalCheckedValue, PR_TRUE, PR_TRUE);
|
||||
}
|
||||
} else {
|
||||
FireOnChange();
|
||||
@ -2380,7 +2381,7 @@ nsHTMLInputElement::SetDefaultValueAsValue()
|
||||
{
|
||||
PRBool resetVal;
|
||||
GetDefaultChecked(&resetVal);
|
||||
return DoSetChecked(resetVal);
|
||||
return DoSetChecked(resetVal, PR_TRUE, PR_FALSE);
|
||||
}
|
||||
case NS_FORM_INPUT_SEARCH:
|
||||
case NS_FORM_INPUT_PASSWORD:
|
||||
@ -2664,7 +2665,7 @@ nsHTMLInputElement::DoneCreatingElement()
|
||||
GET_BOOLBIT(mBitField, BF_SHOULD_INIT_CHECKED)) {
|
||||
PRBool resetVal;
|
||||
GetDefaultChecked(&resetVal);
|
||||
DoSetChecked(resetVal, PR_FALSE);
|
||||
DoSetChecked(resetVal, PR_FALSE, PR_TRUE);
|
||||
DoSetCheckedChanged(PR_FALSE, PR_FALSE);
|
||||
}
|
||||
|
||||
@ -2719,7 +2720,7 @@ nsHTMLInputElement::RestoreState(nsPresState* aState)
|
||||
{
|
||||
if (inputState->IsCheckedSet()) {
|
||||
restoredCheckedState = PR_TRUE;
|
||||
DoSetChecked(inputState->GetChecked());
|
||||
DoSetChecked(inputState->GetChecked(), PR_TRUE, PR_TRUE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -280,7 +280,7 @@ protected:
|
||||
* Do all the work that |SetChecked| does (radio button handling, etc.), but
|
||||
* take an |aNotify| parameter.
|
||||
*/
|
||||
nsresult DoSetChecked(PRBool aValue, PRBool aNotify = PR_TRUE);
|
||||
nsresult DoSetChecked(PRBool aValue, PRBool aNotify, PRBool aSetValueChanged);
|
||||
|
||||
/**
|
||||
* Do all the work that |SetCheckedChanged| does (radio button handling,
|
||||
|
Loading…
Reference in New Issue
Block a user