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); 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::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(); } }