Reviewed by John.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 4 Dec 2004 18:30:50 +0000 (18:30 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 4 Dec 2004 18:30:50 +0000 (18:30 +0000)
        - 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8120 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/rendering/render_form.cpp

index 5ac396ef60cb80418a209b2ab0bbb99fa4b735fd..943ab65edfa6e8b453ff6c69589af68d7b81eaac 100644 (file)
@@ -1,3 +1,15 @@
+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.
index f30948cb0435086829aa1c11e06530da794d1932..bcc7d3991622b22c594239bf18a609fb852891f4 100644 (file)
@@ -1668,11 +1668,11 @@ void RenderSlider::updateFromElement()
     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();
      
@@ -1686,13 +1686,15 @@ void RenderSlider::updateFromElement()
 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);