return new HTMLOptionsCollection(this);
}
-void HTMLSelectElement::recalcListItems() const
+void HTMLSelectElement::recalcListItems(bool updateSelectedStates) const
{
m_listItems.clear();
HTMLOptionElement* foundSelected = 0;
if (current->hasTagName(optionTag)) {
m_listItems.append(static_cast<HTMLElement*>(current));
- if (!foundSelected && (usesMenuList() || (!m_multiple && static_cast<HTMLOptionElement*>(current)->selected()))) {
- foundSelected = static_cast<HTMLOptionElement*>(current);
- foundSelected->setSelectedState(true);
- } else if (foundSelected && !m_multiple && static_cast<HTMLOptionElement*>(current)->selected()) {
- foundSelected->setSelectedState(false);
- foundSelected = static_cast<HTMLOptionElement*>(current);
+ if (updateSelectedStates) {
+ if (!foundSelected && (usesMenuList() || (!m_multiple && static_cast<HTMLOptionElement*>(current)->selected()))) {
+ foundSelected = static_cast<HTMLOptionElement*>(current);
+ foundSelected->setSelectedState(true);
+ } else if (foundSelected && !m_multiple && static_cast<HTMLOptionElement*>(current)->selected()) {
+ foundSelected->setSelectedState(false);
+ foundSelected = static_cast<HTMLOptionElement*>(current);
+ }
}
}
if (current->hasTagName(hrTag))
void HTMLSelectElement::checkListItems() const
{
Vector<HTMLElement*> items = m_listItems;
- recalcListItems();
+ recalcListItems(false);
ASSERT(items == m_listItems);
}