+2004-12-04 Darin Adler <darin@apple.com>
+
+ Reviewed by John.
+
+ - fixed <rdar://problem/3876093> REGRESSION (166-167): Setting slider control's value from JavaScript has no effect (breaks RSS)
+
+ * khtml/rendering/render_form.cpp:
+ (RenderSlider::updateFromElement): Call setValue to update the value of the DOM element rather than
+ modifying the m_value data member directly. We don't use m_value at all for sliders now, and in fact
+ the code relies on the fact that m_value is null. Setting m_value to a non-null value was causing the bug.
+ (RenderSlider::slotSliderValueChanged): Ditto.
+
2004-12-03 John Sullivan <sullivan@apple.com>
Reviewed by Ken.
double val = value.isNull() ? (maxVal + minVal)/2.0 : value.string().toDouble();
val = kMax(minVal, kMin(val, maxVal)); // Make sure val is within min/max.
+ // Force integer value if not float (strcasecmp returns confusingly backward boolean).
if (strcasecmp(precision, "float"))
- // Force integer value.
- element()->m_value = DOMString(QString::number((int)(val+0.5)));
- else
- element()->m_value = DOMString(QString::number(val));
+ val = (int)(val + 0.5);
+
+ element()->setValue(QString::number(val));
QSlider* slider = (QSlider*)widget();
void RenderSlider::slotSliderValueChanged()
{
QSlider* slider = (QSlider*)widget();
+
double val = slider->value();
const DOMString& precision = element()->getAttribute(ATTR_PRECISION);
+
+ // Force integer value if not float (strcasecmp returns confusingly backward boolean).
if (strcasecmp(precision, "float"))
- // Force integer value.
- element()->m_value = DOMString(QString::number((int)(val+0.5)));
- else
- element()->m_value = DOMString(QString::number(val));
+ val = (int)(val + 0.5);
+
+ element()->setValue(QString::number(val));
// Fire the "input" DOM event.
element()->dispatchHTMLEvent(EventImpl::INPUT_EVENT, true, false);