void RenderListItem::updateListMarkerNumbers() { // If distribution recalc is needed, updateListMarkerNumber will be re-invoked // after distribution is calculated. if (node()->document().childNeedsDistributionRecalc()) return; Node* listNode = enclosingList(this); ASSERT(listNode); bool isListReversed = false; HTMLOListElement* oListElement = isHTMLOListElement(listNode) ? toHTMLOListElement(listNode) : 0; if (oListElement) { oListElement->itemCountChanged(); isListReversed = oListElement->isReversed(); } // FIXME: The n^2 protection below doesn't help if the elements were inserted after the // the list had already been displayed. // Avoid an O(n^2) walk over the children below when they're all known to be attaching. if (listNode->needsAttach()) return; for (RenderListItem* item = previousOrNextItem(isListReversed, listNode, this); item; item = previousOrNextItem(isListReversed, listNode, item)) { if (!item->m_isValueUpToDate) { // If an item has been marked for update before, we can safely // assume that all the following ones have too. // This gives us the opportunity to stop here and avoid // marking the same nodes again. break; } item->updateValue(); } }
void RenderListItem::updateItemValuesForOrderedList(const HTMLOListElement* listNode) { ASSERT(listNode); for (RenderListItem* listItem = nextListItem(listNode); listItem; listItem = nextListItem(listNode, listItem)) listItem->updateValue(); }
void RenderListItem::updateListMarkerNumbers() { Node* listNode = enclosingList(this); ASSERT(listNode && listNode->renderer()); if (!listNode || !listNode->renderer()) return; RenderObject* list = listNode->renderer(); RenderObject* child = nextInPreOrder(list); while (child) { if (child->node() && isList(child->node())) { // We've found a nested, independent list: nothing to do here. child = child->nextInPreOrderAfterChildren(list); continue; } if (child->isListItem()) { RenderListItem* item = toRenderListItem(child); if (!item->m_isValueUpToDate) { // If an item has been marked for update before, we can safely // assume that all the following ones have too. // This gives us the opportunity to stop here and avoid // marking the same nodes again. break; } item->updateValue(); } child = child->nextInPreOrder(list); } }
void RenderListItem::updateListMarkerNumbers() { Node* listNode = enclosingList(this); // The list node can be the shadow root which has no renderer. ASSERT(listNode); if (!listNode) return; bool isListReversed = false; HTMLOListElement* oListElement = (listNode && listNode->hasTagName(olTag)) ? toHTMLOListElement(listNode) : 0; if (oListElement) { oListElement->itemCountChanged(); isListReversed = oListElement->isReversed(); } for (RenderListItem* item = previousOrNextItem(isListReversed, listNode, this); item; item = previousOrNextItem(isListReversed, listNode, item)) { if (!item->m_isValueUpToDate) { // If an item has been marked for update before, we can safely // assume that all the following ones have too. // This gives us the opportunity to stop here and avoid // marking the same nodes again. break; } item->updateValue(); } }
void RenderListItem::updateListMarkerNumbers() { // If distribution recalc is needed, updateListMarkerNumber will be re-invoked // after distribution is calculated. if (node()->document().childNeedsDistributionRecalc()) return; Node* listNode = enclosingList(this); // The list node can be the shadow root which has no renderer. ASSERT(listNode); if (!listNode) return; bool isListReversed = false; HTMLOListElement* oListElement = isHTMLOListElement(listNode) ? toHTMLOListElement(listNode) : 0; if (oListElement) { oListElement->itemCountChanged(); isListReversed = oListElement->isReversed(); } for (RenderListItem* item = previousOrNextItem(isListReversed, listNode, this); item; item = previousOrNextItem(isListReversed, listNode, item)) { if (!item->m_isValueUpToDate) { // If an item has been marked for update before, we can safely // assume that all the following ones have too. // This gives us the opportunity to stop here and avoid // marking the same nodes again. break; } item->updateValue(); } }
void RenderListItem::explicitValueChanged() { if (m_marker) m_marker->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); Node* listNode = enclosingList(this); for (RenderListItem* item = this; item; item = nextListItem(listNode, item)) item->updateValue(); }
void RenderListItem::explicitValueChanged() { if (m_marker) m_marker->setNeedsLayoutAndPrefWidthsRecalc(); Node* listNode = enclosingList(this); RenderObject* listRenderer = 0; if (listNode) listRenderer = listNode->renderer(); for (RenderListItem* item = this; item; item = nextListItem(listRenderer, item)) item->updateValue(); }
void RenderListItem::explicitValueChanged() { if (m_marker) m_marker->setNeedsLayoutAndPrefWidthsRecalc(); updateValue(); Element* listNode = enclosingList(*this); if (!listNode) return; for (RenderListItem* item = nextListItem(*listNode, *this); item; item = nextListItem(*listNode, *item)) item->updateValue(); }
void RenderListItem::updateListMarkerNumbers() { Element* listNode = enclosingList(*this); // The list node can be the shadow root which has no renderer. if (!listNode) return; bool isListReversed = false; if (is<HTMLOListElement>(*listNode)) { HTMLOListElement& oListElement = downcast<HTMLOListElement>(*listNode); oListElement.itemCountChanged(); isListReversed = oListElement.isReversed(); } for (RenderListItem* item = previousOrNextItem(isListReversed, *listNode, *this); item; item = previousOrNextItem(isListReversed, *listNode, *item)) { if (!item->m_isValueUpToDate) { // If an item has been marked for update before, we can safely // assume that all the following ones have too. // This gives us the opportunity to stop here and avoid // marking the same nodes again. break; } item->updateValue(); } }
void HTMLOListElement::updateItemValues() { for (RenderListItem* listItem = RenderListItem::nextListItem(renderer()); listItem; listItem = RenderListItem::nextListItem(renderer(), listItem)) listItem->updateValue(); }