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