Reviewed by Maciej.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jan 2006 09:29:26 +0000 (09:29 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jan 2006 09:29:26 +0000 (09:29 +0000)
        - fix another part of http://bugzilla.opendarwin.org/show_bug.cgi?id=6731
          REGRESSION: change event fires at load time for checked items

        Revised test: fast/forms/radio-button-no-change-event.html

        * khtml/html/HTMLInputElementImpl.cpp: (WebCore::HTMLInputElementImpl::setChecked):
        Don't send a change event for a radio button getting unchecked (matches Gecko at least).

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

WebCore/ChangeLog
WebCore/khtml/html/HTMLInputElementImpl.cpp

index cdc55e1669ae33e7c5acc20606b6d7071616acaf..06c8463f66141aa6042999118f78f713f228d08c 100644 (file)
@@ -1,3 +1,15 @@
+2006-01-27  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - fix another part of http://bugzilla.opendarwin.org/show_bug.cgi?id=6731
+          REGRESSION: change event fires at load time for checked items
+
+        Revised test: fast/forms/radio-button-no-change-event.html
+
+        * khtml/html/HTMLInputElementImpl.cpp: (WebCore::HTMLInputElementImpl::setChecked):
+        Don't send a change event for a radio button getting unchecked (matches Gecko at least).
+
 2006-01-26  Eric Seidel  <eseidel@apple.com>
 
         Reviewed by mjs.
         (QLineEdit::sizeForCharacterWidth):
         (QLineEdit::baselinePosition):
 
-
 2006-01-24  Darin Adler  <darin@apple.com>
 
         Reviewed by Adele.
index 84b6e9c7fd977e2f92b1fe85fc57d046c267c3ca..aae8ff5619f0278a23686cd8aaf114ef62c973cf 100644 (file)
@@ -830,7 +830,13 @@ void HTMLInputElementImpl::setChecked(bool nowChecked)
     setChanged();
     if (renderer() && renderer()->style()->hasAppearance())
         theme()->stateChanged(renderer(), CheckedState);
-    if (inDocument())
+
+    // Only send a change event for items in the document (avoid firing during
+    // parsing) and don't send a change event for a radio button that's getting
+    // unchecked to match other browsers. DOM is not a useful standard for this
+    // because it says only to fire change events at "lose focus" time, which is
+    // definitely wrong in practice for these types of elements.
+    if (inDocument() && (m_type != RADIO || nowChecked))
         onChange();
 }