Changeset 86827 in webkit


Ignore:
Timestamp:
May 19, 2011 2:21:58 AM (13 years ago)
Author:
eae@chromium.org
Message:

2011-05-19 Emil A Eklund <eae@chromium.org>

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 <eae@chromium.org>

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.
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r86826 r86827  
     12011-05-19  Emil A Eklund  <eae@chromium.org>
     2
     3        Reviewed by Alexey Proskuryakov.
     4
     5        REGRESSION (r80808): Multiple <select> - Selection reset to first element from multiple selected ones
     6        https://bugs.webkit.org/show_bug.cgi?id=60986
     7
     8        * fast/dom/HTMLSelectElement/change-multiple-preserve-selection-expected.txt:
     9        * fast/dom/HTMLSelectElement/change-multiple-preserve-selection.html:
     10
    1112011-05-19  Mihnea Ovidenie  <mihnea@adobe.com>
    212
  • trunk/LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection-expected.txt

    r80808 r86827  
    1      
     1       
    22PASS selectElement.selectedIndex is -1
    33PASS selectElement.selectedIndex is -1
     
    66PASS selectElement.selectedIndex is -1
    77PASS selectElement.selectedIndex is 0
     8PASS selectElement.options[0].selected is true
     9PASS selectElement.options[1].selected is true
     10PASS selectElement.options[2].selected is false
     11PASS selectElement.options[0].selected is true
     12PASS selectElement.options[1].selected is true
     13PASS selectElement.options[2].selected is false
     14PASS selectElement.options[0].selected is true
     15PASS selectElement.options[1].selected is false
     16PASS selectElement.options[2].selected is false
    817
  • trunk/LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection.html

    r80808 r86827  
    3131    selectElement.multiple = true;
    3232    shouldBe("selectElement.selectedIndex", "0");
     33
     34    // Test resetting the multiple attribute.
     35    selectElement = document.getElementsByTagName('select')[4];
     36    shouldBe("selectElement.options[0].selected", "true");
     37    shouldBe("selectElement.options[1].selected", "true");
     38    shouldBe("selectElement.options[2].selected", "false");
     39    selectElement.multiple = true;
     40    shouldBe("selectElement.options[0].selected", "true");
     41    shouldBe("selectElement.options[1].selected", "true");
     42    shouldBe("selectElement.options[2].selected", "false");
     43    selectElement.multiple = false;
     44    shouldBe("selectElement.options[0].selected", "true");
     45    shouldBe("selectElement.options[1].selected", "false");
     46    shouldBe("selectElement.options[2].selected", "false");
    3347}
    3448</script>
     
    5468        <option id="opt2" value="3">3</option>
    5569    </select>
     70    <select multiple="true">
     71        <option id="opt1" value="1" selected="selected">1</option>
     72        <option id="opt2" value="2" selected="selected">2</option>
     73        <option id="opt2" value="3">3</option>
     74    </select>
    5675    <div id="console"></div>
    5776</body>
  • trunk/Source/WebCore/ChangeLog

    r86822 r86827  
     12011-05-19  Emil A Eklund  <eae@chromium.org>
     2
     3        Reviewed by Alexey Proskuryakov.
     4
     5        REGRESSION (r80808): Multiple <select> - Selection reset to first element from multiple selected ones
     6        https://bugs.webkit.org/show_bug.cgi?id=60986
     7
     8        * html/HTMLSelectElement.cpp:
     9        (WebCore::HTMLSelectElement::setMultiple):
     10        Don't restore selection if the multiple attribute hasn't changed.
     11
    1122011-05-18  Fumitoshi Ukai  <ukai@chromium.org>
    213
  • trunk/Source/WebCore/html/HTMLSelectElement.cpp

    r86744 r86827  
    433433void HTMLSelectElement::setMultiple(bool multiple)
    434434{
     435    bool oldMultiple = this->multiple();
    435436    int oldSelectedIndex = selectedIndex();
    436437    setAttribute(multipleAttr, multiple ? "" : 0);
     
    438439    // Restore selectedIndex after changing the multiple flag to preserve
    439440    // selection as single-line and multi-line has different defaults.
    440     setSelectedIndex(oldSelectedIndex);
     441    if (oldMultiple != this->multiple())
     442        setSelectedIndex(oldSelectedIndex);
    441443}
    442444
Note: See TracChangeset for help on using the changeset viewer.