diff options
Diffstat (limited to 'WebCore/html/RangeInputType.cpp')
-rw-r--r-- | WebCore/html/RangeInputType.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/WebCore/html/RangeInputType.cpp b/WebCore/html/RangeInputType.cpp index ad47f14..50520cd 100644 --- a/WebCore/html/RangeInputType.cpp +++ b/WebCore/html/RangeInputType.cpp @@ -55,6 +55,11 @@ PassOwnPtr<InputType> RangeInputType::create(HTMLInputElement* element) return adoptPtr(new RangeInputType(element)); } +bool RangeInputType::isRangeControl() const +{ + return true; +} + const AtomicString& RangeInputType::formControlType() const { return InputTypeNames::range(); @@ -143,6 +148,9 @@ bool RangeInputType::handleKeydownEvent(KeyboardEvent* event) double step = (max - min) / 100; double current = parseToDouble(element()->value(), numeric_limits<double>::quiet_NaN()); ASSERT(isfinite(current)); + // Stepping-up and -down for step="any" are special cases for type="range" from renderer for convenient. + // No stepping normally for step="any". They cannot be handled by stepUp()/stepDown()/stepUpFromRenderer(). + // So calculating values stepped-up or -down here. double newValue; if (key == "Up" || key == "Right") { newValue = current + step; @@ -159,10 +167,8 @@ bool RangeInputType::handleKeydownEvent(KeyboardEvent* event) } } else { int stepMagnification = (key == "Up" || key == "Right") ? 1 : -1; - String lastStringValue = element()->value(); - element()->stepUp(stepMagnification, ec); - if (lastStringValue != element()->value()) - element()->dispatchFormControlChangeEvent(); + // Reasonable stepping-up/-down by stepUpFromRenderer() unless step="any" + element()->stepUpFromRenderer(stepMagnification); } event->setDefaultHandled(); return true; |