Reviewed by Brady.
authoradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Jan 2007 01:09:24 +0000 (01:09 +0000)
committeradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Jan 2007 01:09:24 +0000 (01:09 +0000)
        Fix for <rdar://problem/4900895> REGRESSION: onChange doesn't always fire for popups that have had value changed by JS

        No test case since you need to open up the menu to fire onChange.

        * html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::setSelectedIndex):
          Keep track of m_lastOnChangeIndex even when we're not firing onChange.  Since
          the selected index has changed, we still want the m_lastOnChangeIndex to be up to date when we compare
          it later.  This matches our behavior in Safari 2.0.

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

WebCore/ChangeLog
WebCore/html/HTMLSelectElement.cpp

index d690060..24fc6fc 100644 (file)
@@ -1,5 +1,18 @@
 2007-01-17  Adele Peterson  <adele@apple.com>
 
+        Reviewed by Brady.
+
+        Fix for <rdar://problem/4900895> REGRESSION: onChange doesn't always fire for popups that have had value changed by JS
+
+        No test case since you need to open up the menu to fire onChange.
+
+        * html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::setSelectedIndex):
+          Keep track of m_lastOnChangeIndex even when we're not firing onChange.  Since
+          the selected index has changed, we still want the m_lastOnChangeIndex to be up to date when we compare
+          it later.  This matches our behavior in Safari 2.0.
+
+2007-01-17  Adele Peterson  <adele@apple.com>
+
         Reviewed by Darin and John.
 
         - Fix for <rdar://problem/4816550> REGRESSION: autoscrolling doesn't work after double-click
index e982adb..bcb049b 100644 (file)
@@ -183,9 +183,10 @@ void HTMLSelectElement::setSelectedIndex(int optionIndex, bool deselect, bool fi
             setActiveSelectionEndIndex(listIndex);
     }
 
-    if (usesMenuList() && fireOnChange && m_lastOnChangeIndex != optionIndex) {
+    if (usesMenuList() && m_lastOnChangeIndex != optionIndex) {
         m_lastOnChangeIndex = optionIndex;
-        onChange();
+        if (fireOnChange)
+            onChange();
     }
 }