void HTMLOptGroupElement::accessKeyAction(bool) { HTMLSelectElement* select = ownerSelectElement(); // send to the parent to bring focus to the list box if (select && !select->focused()) select->accessKeyAction(false); }
void HTMLOptionElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) { HTMLSelectElement* select = ownerSelectElement(); if (select) select->childrenChanged(changedByParser); HTMLFormControlElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); }
void HTMLOptionElement::setRenderStyle(PassRefPtr<RenderStyle> newStyle) { m_style = newStyle; if (HTMLSelectElement* select = ownerSelectElement()) if (RenderObject* renderer = select->renderer()) renderer->repaint(); }
void WMLOptGroupElement::recalcSelectOptions() { // FIXME: Activate once WMLSelectElement is available #if 0 if (WMLSelectElement* select = ownerSelectElement()) select->setRecalcListItems(); #endif }
void HTMLOptionElement::setSelected(bool selected) { if (m_selected == selected) return; if (HTMLSelectElement* select = ownerSelectElement()) select->setSelectedIndex(selected ? index() : -1, false); m_selected = selected; }
void WMLOptionElement::insertedIntoDocument() { WMLSelectElement* select; if (selected() && (select = ownerSelectElement(this))) select->scrollToSelection(); WMLFormControlElement::insertedIntoDocument(); }
void HTMLOptGroupElement::updateNonRenderStyle() { bool oldDisplayNoneStatus = isDisplayNone(); m_style = originalStyleForRenderer(); if (oldDisplayNoneStatus != isDisplayNone()) { if (HTMLSelectElement* select = ownerSelectElement()) select->updateListOnRenderer(); } }
void HTMLOptionElement::setSelected(bool selected) { if (m_data.selected() == selected) return; OptionElement::setSelectedState(m_data, this, selected); if (HTMLSelectElement* select = ownerSelectElement()) select->setSelectedIndex(selected ? index() : -1, false); }
void HTMLOptionElement::setSelected(bool selected) { if (m_isSelected == selected) return; setSelectedState(selected); if (HTMLSelectElement* select = ownerSelectElement()) select->optionSelectionStateChanged(this, selected); }
void WMLOptGroupElement::accessKeyAction(bool) { // FIXME: Activate once WMLSelectElement is available #if 0 WMLSelectElement* select = ownerSelectElement(); if (!select || select->focused()) return; // send to the parent to bring focus to the list box select->accessKeyAction(false); #endif }
void HTMLOptionElement::insertedIntoTree(bool deep) { if (HTMLSelectElement* select = ownerSelectElement()) { select->setRecalcListItems(); // Avoid our selected() getter since it will recalculate list items incorrectly for us. if (m_data.selected()) select->setSelectedIndex(index(), false); select->scrollToSelection(); } HTMLFormControlElement::insertedIntoTree(deep); }
void WMLOptionElement::setSelectedState(bool selected) { if (this->selected() == selected) return; OptionElement::setSelectedState(m_data, this, selected); if (WMLSelectElement* select = ownerSelectElement(this)) { if (select->multiple() || selected) handleIntrinsicEventIfNeeded(); } }
void WMLOptionElement::handleIntrinsicEventIfNeeded() { WMLSelectElement* select = ownerSelectElement(this); if (!select || !select->initialized()) return; WMLIntrinsicEventHandler* eventHandler = this->eventHandler(); if (!eventHandler) return; if (eventHandler->hasIntrinsicEvent(WMLIntrinsicEventOnPick)) eventHandler->triggerIntrinsicEvent(WMLIntrinsicEventOnPick); }
void HTMLOptionElement::insertedIntoTree(bool deep) { if (HTMLSelectElement* select = ownerSelectElement()) { select->setRecalcListItems(); // Do not call selected() since calling updateListItemSelectedStates() // at this time won't do the right thing. (Why, exactly?) if (m_isSelected) select->setSelectedIndex(index(), false); select->scrollToSelection(); } HTMLFormControlElement::insertedIntoTree(deep); }
void HTMLOptionElement::insertedIntoTree(bool deep) { if (HTMLSelectElement* select = ownerSelectElement()) { select->setRecalcListItems(); // Do not call selected() since calling updateListItemSelectedStates() // at this time won't do the right thing. (Why, exactly?) // FIXME: Might be better to call this unconditionally, always passing m_isSelected, // rather than only calling it if we are selected. if (m_isSelected) select->optionSelectionStateChanged(this, true); select->scrollToSelection(); } HTMLFormControlElement::insertedIntoTree(deep); }
int HTMLOptionElement::index() const { // Let's do this dynamically. Might be a bit slow, but we're sure // we won't forget to update a member variable in some cases... HTMLSelectElement* select = ownerSelectElement(); if (select) { const Vector<HTMLElement*>& items = select->listItems(); int l = items.size(); int optionIndex = 0; for(int i = 0; i < l; i++) { if (items[i]->hasLocalName(optionTag)) { if (static_cast<HTMLOptionElement*>(items[i]) == this) return optionIndex; optionIndex++; } } } return 0; }
int HTMLOptionElement::index() const { // It would be faster to cache the index, but harder to get it right in all cases. HTMLSelectElement* selectElement = ownerSelectElement(); if (!selectElement) return 0; int optionIndex = 0; const Vector<HTMLElement*>& items = selectElement->listItems(); size_t length = items.size(); for (size_t i = 0; i < length; ++i) { if (!items[i]->hasTagName(optionTag)) continue; if (items[i] == this) return optionIndex; ++optionIndex; } return 0; }
void HTMLOptionElement::setText(const String &text, ExceptionCode& ec) { RefPtr<Node> protectFromMutationEvents(this); // Changing the text causes a recalc of a select's items, which will reset the selected // index to the first item if the select is single selection with a menu list. We attempt to // preserve the selected item. RefPtr<HTMLSelectElement> select = ownerSelectElement(); bool selectIsMenuList = select && select->usesMenuList(); int oldSelectedIndex = selectIsMenuList ? select->selectedIndex() : -1; // Handle the common special case where there's exactly 1 child node, and it's a text node. Node* child = firstChild(); if (child && child->isTextNode() && !child->nextSibling()) static_cast<Text *>(child)->setData(text, ec); else { removeChildren(); appendChild(Text::create(document(), text), ec); } if (selectIsMenuList && select->selectedIndex() != oldSelectedIndex) select->setSelectedIndex(oldSelectedIndex); }
bool HTMLOptionElement::selected() const { if (HTMLSelectElement* select = ownerSelectElement()) select->recalcListItemsIfNeeded(); return m_data.selected(); }
int HTMLOptionElement::index() const { return OptionElement::optionIndex(ownerSelectElement(), this); }
void HTMLOptionElement::accessKeyAction(bool) { HTMLSelectElement* select = ownerSelectElement(); if (select) select->accessKeySetSelectedIndex(index()); }
bool HTMLOptionElement::selected() { if (HTMLSelectElement* select = ownerSelectElement()) select->updateListItemSelectedStates(); return m_isSelected; }
void WMLOptionElement::accessKeyAction(bool) { if (WMLSelectElement* select = ownerSelectElement(this)) select->accessKeySetSelectedIndex(OptionElement::optionIndex(select, this)); }