Bug 948549 - Make <input type=number> behave and look disabled when the 'disabled' attribute is set or it's inside a disabled fieldset. r=smaug
This commit is contained in:
@@ -150,11 +150,24 @@ nsNumberControlFrame::
|
||||
xoffset, yoffset, 0);
|
||||
}
|
||||
|
||||
void
|
||||
nsNumberControlFrame::SyncDisabledState()
|
||||
{
|
||||
nsEventStates eventStates = mContent->AsElement()->State();
|
||||
if (eventStates.HasState(NS_EVENT_STATE_DISABLED)) {
|
||||
mTextField->SetAttr(kNameSpaceID_None, nsGkAtoms::disabled, EmptyString(),
|
||||
true);
|
||||
} else {
|
||||
mTextField->UnsetAttr(kNameSpaceID_None, nsGkAtoms::disabled, true);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNumberControlFrame::AttributeChanged(int32_t aNameSpaceID,
|
||||
nsIAtom* aAttribute,
|
||||
int32_t aModType)
|
||||
{
|
||||
// nsGkAtoms::disabled is handled by SyncDisabledState
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
if (aAttribute == nsGkAtoms::placeholder ||
|
||||
aAttribute == nsGkAtoms::readonly ||
|
||||
@@ -175,6 +188,14 @@ nsNumberControlFrame::AttributeChanged(int32_t aNameSpaceID,
|
||||
aModType);
|
||||
}
|
||||
|
||||
void
|
||||
nsNumberControlFrame::ContentStatesChanged(nsEventStates aStates)
|
||||
{
|
||||
if (aStates.HasState(NS_EVENT_STATE_DISABLED)) {
|
||||
nsContentUtils::AddScriptRunner(new SyncDisabledStateEvent(this));
|
||||
}
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsNumberControlFrame::MakeAnonymousElement(Element** aResult,
|
||||
nsTArray<ContentInfo>& aElements,
|
||||
@@ -310,6 +331,9 @@ nsNumberControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
|
||||
nsGkAtoms::div,
|
||||
nsCSSPseudoElements::ePseudo_mozNumberSpinDown,
|
||||
spinBoxCI.mStyleContext);
|
||||
|
||||
SyncDisabledState();
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user