diff --git a/mozilla/layout/forms/nsGfxCheckboxControlFrame.cpp b/mozilla/layout/forms/nsGfxCheckboxControlFrame.cpp index 5c9c8053551..7a355e46b17 100644 --- a/mozilla/layout/forms/nsGfxCheckboxControlFrame.cpp +++ b/mozilla/layout/forms/nsGfxCheckboxControlFrame.cpp @@ -313,7 +313,15 @@ nsGfxCheckboxControlFrame::InitializeControl(nsIPresContext* aPresContext) if (!primaryPresShell) return; if (presShell.get() == primaryPresShell.get()) { - nsFormControlHelper::Reset(this, aPresContext); + // Reset the value + // XXX We set the checkbox directly in the frame, because + // content fires onChange :( + PRBool checked = PR_FALSE; + nsresult rv = GetDefaultCheckState(&checked); + + if (NS_CONTENT_ATTR_HAS_VALUE == rv) { + SetCheckboxState (aPresContext, checked ? eOn : eOff ); + } } } diff --git a/mozilla/layout/forms/nsGfxRadioControlFrame.cpp b/mozilla/layout/forms/nsGfxRadioControlFrame.cpp index ec5a3fbe673..6a040ee0bee 100644 --- a/mozilla/layout/forms/nsGfxRadioControlFrame.cpp +++ b/mozilla/layout/forms/nsGfxRadioControlFrame.cpp @@ -347,7 +347,7 @@ PRBool nsGfxRadioControlFrame::GetRadioState() void nsGfxRadioControlFrame::SetRadioState(nsIPresContext* aPresContext, PRBool aValue) { mChecked = aValue; - nsFormControlHelper::ForceDrawFrame(aPresContext, this); + nsFormControlHelper::ForceDrawFrame(aPresContext, this); } void @@ -370,7 +370,14 @@ nsGfxRadioControlFrame::InitializeControl(nsIPresContext* aPresContext) if (!primaryPresShell) return; if (presShell.get() == primaryPresShell.get()) { - nsFormControlHelper::Reset(this, aPresContext); + // set the widget to the initial state + // XXX We can't use reset because radio buttons fire onChange + // from content (much to our dismay) + PRBool checked = PR_FALSE; + nsresult rv = GetDefaultCheckState(&checked); + if (NS_CONTENT_ATTR_HAS_VALUE == rv) { + SetRadioState(aPresContext, checked); + } } } diff --git a/mozilla/layout/html/forms/src/nsGfxCheckboxControlFrame.cpp b/mozilla/layout/html/forms/src/nsGfxCheckboxControlFrame.cpp index 5c9c8053551..7a355e46b17 100644 --- a/mozilla/layout/html/forms/src/nsGfxCheckboxControlFrame.cpp +++ b/mozilla/layout/html/forms/src/nsGfxCheckboxControlFrame.cpp @@ -313,7 +313,15 @@ nsGfxCheckboxControlFrame::InitializeControl(nsIPresContext* aPresContext) if (!primaryPresShell) return; if (presShell.get() == primaryPresShell.get()) { - nsFormControlHelper::Reset(this, aPresContext); + // Reset the value + // XXX We set the checkbox directly in the frame, because + // content fires onChange :( + PRBool checked = PR_FALSE; + nsresult rv = GetDefaultCheckState(&checked); + + if (NS_CONTENT_ATTR_HAS_VALUE == rv) { + SetCheckboxState (aPresContext, checked ? eOn : eOff ); + } } } diff --git a/mozilla/layout/html/forms/src/nsGfxRadioControlFrame.cpp b/mozilla/layout/html/forms/src/nsGfxRadioControlFrame.cpp index ec5a3fbe673..6a040ee0bee 100644 --- a/mozilla/layout/html/forms/src/nsGfxRadioControlFrame.cpp +++ b/mozilla/layout/html/forms/src/nsGfxRadioControlFrame.cpp @@ -347,7 +347,7 @@ PRBool nsGfxRadioControlFrame::GetRadioState() void nsGfxRadioControlFrame::SetRadioState(nsIPresContext* aPresContext, PRBool aValue) { mChecked = aValue; - nsFormControlHelper::ForceDrawFrame(aPresContext, this); + nsFormControlHelper::ForceDrawFrame(aPresContext, this); } void @@ -370,7 +370,14 @@ nsGfxRadioControlFrame::InitializeControl(nsIPresContext* aPresContext) if (!primaryPresShell) return; if (presShell.get() == primaryPresShell.get()) { - nsFormControlHelper::Reset(this, aPresContext); + // set the widget to the initial state + // XXX We can't use reset because radio buttons fire onChange + // from content (much to our dismay) + PRBool checked = PR_FALSE; + nsresult rv = GetDefaultCheckState(&checked); + if (NS_CONTENT_ATTR_HAS_VALUE == rv) { + SetRadioState(aPresContext, checked); + } } }