Title: [86827] trunk
Revision
86827
Author
[email protected]
Date
2011-05-19 02:21:58 -0700 (Thu, 19 May 2011)

Log Message

2011-05-19  Emil A Eklund  <[email protected]>

        Reviewed by Alexey Proskuryakov.

        REGRESSION (r80808): Multiple <select> - Selection reset to first element from multiple selected ones
        https://bugs.webkit.org/show_bug.cgi?id=60986

        * fast/dom/HTMLSelectElement/change-multiple-preserve-selection-expected.txt:
        * fast/dom/HTMLSelectElement/change-multiple-preserve-selection.html:
2011-05-19  Emil A Eklund  <[email protected]>

        Reviewed by Alexey Proskuryakov.

        REGRESSION (r80808): Multiple <select> - Selection reset to first element from multiple selected ones
        https://bugs.webkit.org/show_bug.cgi?id=60986

        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::setMultiple):
        Don't restore selection if the multiple attribute hasn't changed.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (86826 => 86827)


--- trunk/LayoutTests/ChangeLog	2011-05-19 09:19:07 UTC (rev 86826)
+++ trunk/LayoutTests/ChangeLog	2011-05-19 09:21:58 UTC (rev 86827)
@@ -1,3 +1,13 @@
+2011-05-19  Emil A Eklund  <[email protected]>
+
+        Reviewed by Alexey Proskuryakov.
+
+        REGRESSION (r80808): Multiple <select> - Selection reset to first element from multiple selected ones
+        https://bugs.webkit.org/show_bug.cgi?id=60986
+
+        * fast/dom/HTMLSelectElement/change-multiple-preserve-selection-expected.txt:
+        * fast/dom/HTMLSelectElement/change-multiple-preserve-selection.html:
+
 2011-05-19  Mihnea Ovidenie  <[email protected]>
 
         Reviewed by Simon Fraser.

Modified: trunk/LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection-expected.txt (86826 => 86827)


--- trunk/LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection-expected.txt	2011-05-19 09:19:07 UTC (rev 86826)
+++ trunk/LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection-expected.txt	2011-05-19 09:21:58 UTC (rev 86827)
@@ -1,8 +1,17 @@
-      
+        
 PASS selectElement.selectedIndex is -1
 PASS selectElement.selectedIndex is -1
 PASS selectElement.selectedIndex is 0
 PASS selectElement.selectedIndex is -1
 PASS selectElement.selectedIndex is -1
 PASS selectElement.selectedIndex is 0
+PASS selectElement.options[0].selected is true
+PASS selectElement.options[1].selected is true
+PASS selectElement.options[2].selected is false
+PASS selectElement.options[0].selected is true
+PASS selectElement.options[1].selected is true
+PASS selectElement.options[2].selected is false
+PASS selectElement.options[0].selected is true
+PASS selectElement.options[1].selected is false
+PASS selectElement.options[2].selected is false
 

Modified: trunk/LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection.html (86826 => 86827)


--- trunk/LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection.html	2011-05-19 09:19:07 UTC (rev 86826)
+++ trunk/LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection.html	2011-05-19 09:21:58 UTC (rev 86827)
@@ -30,6 +30,20 @@
     selectElement.style.display = '';
     selectElement.multiple = true;
     shouldBe("selectElement.selectedIndex", "0");
+
+    // Test resetting the multiple attribute.
+    selectElement = document.getElementsByTagName('select')[4];
+    shouldBe("selectElement.options[0].selected", "true");
+    shouldBe("selectElement.options[1].selected", "true");
+    shouldBe("selectElement.options[2].selected", "false");
+    selectElement.multiple = true;
+    shouldBe("selectElement.options[0].selected", "true");
+    shouldBe("selectElement.options[1].selected", "true");
+    shouldBe("selectElement.options[2].selected", "false");
+    selectElement.multiple = false;
+    shouldBe("selectElement.options[0].selected", "true");
+    shouldBe("selectElement.options[1].selected", "false");
+    shouldBe("selectElement.options[2].selected", "false");
 }
 </script>
 <body _onload_="go()"> 
@@ -53,6 +67,11 @@
         <option id="opt2" value="2">2</option>
         <option id="opt2" value="3">3</option> 
     </select>
+    <select multiple="true"> 
+        <option id="opt1" value="1" selected="selected">1</option> 
+        <option id="opt2" value="2" selected="selected">2</option>
+        <option id="opt2" value="3">3</option> 
+    </select>
     <div id="console"></div>
 </body>
 </html> 

Modified: trunk/Source/WebCore/ChangeLog (86826 => 86827)


--- trunk/Source/WebCore/ChangeLog	2011-05-19 09:19:07 UTC (rev 86826)
+++ trunk/Source/WebCore/ChangeLog	2011-05-19 09:21:58 UTC (rev 86827)
@@ -1,3 +1,14 @@
+2011-05-19  Emil A Eklund  <[email protected]>
+
+        Reviewed by Alexey Proskuryakov.
+
+        REGRESSION (r80808): Multiple <select> - Selection reset to first element from multiple selected ones
+        https://bugs.webkit.org/show_bug.cgi?id=60986
+
+        * html/HTMLSelectElement.cpp:
+        (WebCore::HTMLSelectElement::setMultiple):
+        Don't restore selection if the multiple attribute hasn't changed.
+
 2011-05-18  Fumitoshi Ukai  <[email protected]>
 
         Reviewed by Alexey Proskuryakov.

Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (86826 => 86827)


--- trunk/Source/WebCore/html/HTMLSelectElement.cpp	2011-05-19 09:19:07 UTC (rev 86826)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp	2011-05-19 09:21:58 UTC (rev 86827)
@@ -432,12 +432,14 @@
     
 void HTMLSelectElement::setMultiple(bool multiple)
 {
+    bool oldMultiple = this->multiple();
     int oldSelectedIndex = selectedIndex();
     setAttribute(multipleAttr, multiple ? "" : 0);
 
     // Restore selectedIndex after changing the multiple flag to preserve
     // selection as single-line and multi-line has different defaults.
-    setSelectedIndex(oldSelectedIndex);
+    if (oldMultiple != this->multiple())
+        setSelectedIndex(oldSelectedIndex);
 }
 
 void HTMLSelectElement::setSize(int size)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to