Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(276)

Side by Side Diff: Source/core/layout/LayoutListItem.cpp

Issue 1162383003: C++11: Replace 0 with nullptr where applicable in layout code. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add one more file. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/layout/LayoutInline.cpp ('k') | Source/core/layout/LayoutListMarker.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /** 1 /**
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * Copyright (C) 2003, 2004, 2005, 2006, 2010 Apple Inc. All rights reserved. 4 * Copyright (C) 2003, 2004, 2005, 2006, 2010 Apple Inc. All rights reserved.
5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) 5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net)
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 firstNode = parent; 122 firstNode = parent;
123 } 123 }
124 124
125 // If there's no actual <ul> or <ol> list element, then the first found 125 // If there's no actual <ul> or <ol> list element, then the first found
126 // node acts as our list for purposes of determining what other list items 126 // node acts as our list for purposes of determining what other list items
127 // should be numbered as part of the same list. 127 // should be numbered as part of the same list.
128 return firstNode; 128 return firstNode;
129 } 129 }
130 130
131 // Returns the next list item with respect to the DOM order. 131 // Returns the next list item with respect to the DOM order.
132 static LayoutListItem* nextListItem(const Node* listNode, const LayoutListItem* item = 0) 132 static LayoutListItem* nextListItem(const Node* listNode, const LayoutListItem* item = nullptr)
133 { 133 {
134 if (!listNode) 134 if (!listNode)
135 return 0; 135 return nullptr;
136 136
137 const Node* current = item ? item->node() : listNode; 137 const Node* current = item ? item->node() : listNode;
138 ASSERT(current); 138 ASSERT(current);
139 ASSERT(!current->document().childNeedsDistributionRecalc()); 139 ASSERT(!current->document().childNeedsDistributionRecalc());
140 current = LayoutTreeBuilderTraversal::next(*current, listNode); 140 current = LayoutTreeBuilderTraversal::next(*current, listNode);
141 141
142 while (current) { 142 while (current) {
143 if (isList(*current)) { 143 if (isList(*current)) {
144 // We've found a nested, independent list: nothing to do here. 144 // We've found a nested, independent list: nothing to do here.
145 current = LayoutTreeBuilderTraversal::nextSkippingChildren(*current, listNode); 145 current = LayoutTreeBuilderTraversal::nextSkippingChildren(*current, listNode);
146 continue; 146 continue;
147 } 147 }
148 148
149 LayoutObject* layoutObject = current->layoutObject(); 149 LayoutObject* layoutObject = current->layoutObject();
150 if (layoutObject && layoutObject->isListItem()) 150 if (layoutObject && layoutObject->isListItem())
151 return toLayoutListItem(layoutObject); 151 return toLayoutListItem(layoutObject);
152 152
153 // FIXME: Can this be optimized to skip the children of the elements wit hout a layoutObject? 153 // FIXME: Can this be optimized to skip the children of the elements wit hout a layoutObject?
154 current = LayoutTreeBuilderTraversal::next(*current, listNode); 154 current = LayoutTreeBuilderTraversal::next(*current, listNode);
155 } 155 }
156 156
157 return 0; 157 return nullptr;
158 } 158 }
159 159
160 // Returns the previous list item with respect to the DOM order. 160 // Returns the previous list item with respect to the DOM order.
161 static LayoutListItem* previousListItem(const Node* listNode, const LayoutListIt em* item) 161 static LayoutListItem* previousListItem(const Node* listNode, const LayoutListIt em* item)
162 { 162 {
163 Node* current = item->node(); 163 Node* current = item->node();
164 ASSERT(current); 164 ASSERT(current);
165 ASSERT(!current->document().childNeedsDistributionRecalc()); 165 ASSERT(!current->document().childNeedsDistributionRecalc());
166 for (current = LayoutTreeBuilderTraversal::previous(*current, listNode); cur rent && current != listNode; current = LayoutTreeBuilderTraversal::previous(*cur rent, listNode)) { 166 for (current = LayoutTreeBuilderTraversal::previous(*current, listNode); cur rent && current != listNode; current = LayoutTreeBuilderTraversal::previous(*cur rent, listNode)) {
167 LayoutObject* layoutObject = current->layoutObject(); 167 LayoutObject* layoutObject = current->layoutObject();
168 if (!layoutObject || (layoutObject && !layoutObject->isListItem())) 168 if (!layoutObject || (layoutObject && !layoutObject->isListItem()))
169 continue; 169 continue;
170 Node* otherList = enclosingList(toLayoutListItem(layoutObject)); 170 Node* otherList = enclosingList(toLayoutListItem(layoutObject));
171 // This item is part of our current list, so it's what we're looking for . 171 // This item is part of our current list, so it's what we're looking for .
172 if (listNode == otherList) 172 if (listNode == otherList)
173 return toLayoutListItem(layoutObject); 173 return toLayoutListItem(layoutObject);
174 // We found ourself inside another list; lets skip the rest of it. 174 // We found ourself inside another list; lets skip the rest of it.
175 // Use nextIncludingPseudo() here because the other list itself may actu ally 175 // Use nextIncludingPseudo() here because the other list itself may actu ally
176 // be a list item itself. We need to examine it, so we do this to counte ract 176 // be a list item itself. We need to examine it, so we do this to counte ract
177 // the previousIncludingPseudo() that will be done by the loop. 177 // the previousIncludingPseudo() that will be done by the loop.
178 if (otherList) 178 if (otherList)
179 current = LayoutTreeBuilderTraversal::next(*otherList, listNode); 179 current = LayoutTreeBuilderTraversal::next(*otherList, listNode);
180 } 180 }
181 return 0; 181 return nullptr;
182 } 182 }
183 183
184 void LayoutListItem::updateItemValuesForOrderedList(const HTMLOListElement* list Node) 184 void LayoutListItem::updateItemValuesForOrderedList(const HTMLOListElement* list Node)
185 { 185 {
186 ASSERT(listNode); 186 ASSERT(listNode);
187 187
188 for (LayoutListItem* listItem = nextListItem(listNode); listItem; listItem = nextListItem(listNode, listItem)) 188 for (LayoutListItem* listItem = nextListItem(listNode); listItem; listItem = nextListItem(listNode, listItem))
189 listItem->updateValue(); 189 listItem->updateValue();
190 } 190 }
191 191
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 230
231 bool LayoutListItem::isEmpty() const 231 bool LayoutListItem::isEmpty() const
232 { 232 {
233 return lastChild() == m_marker; 233 return lastChild() == m_marker;
234 } 234 }
235 235
236 static LayoutObject* getParentOfFirstLineBox(LayoutBlockFlow* curr, LayoutObject * marker) 236 static LayoutObject* getParentOfFirstLineBox(LayoutBlockFlow* curr, LayoutObject * marker)
237 { 237 {
238 LayoutObject* firstChild = curr->firstChild(); 238 LayoutObject* firstChild = curr->firstChild();
239 if (!firstChild) 239 if (!firstChild)
240 return 0; 240 return nullptr;
241 241
242 bool inQuirksMode = curr->document().inQuirksMode(); 242 bool inQuirksMode = curr->document().inQuirksMode();
243 for (LayoutObject* currChild = firstChild; currChild; currChild = currChild- >nextSibling()) { 243 for (LayoutObject* currChild = firstChild; currChild; currChild = currChild- >nextSibling()) {
244 if (currChild == marker) 244 if (currChild == marker)
245 continue; 245 continue;
246 246
247 if (currChild->isInline() && (!currChild->isLayoutInline() || curr->gene ratesLineBoxesForInlineChild(currChild))) 247 if (currChild->isInline() && (!currChild->isLayoutInline() || curr->gene ratesLineBoxesForInlineChild(currChild)))
248 return curr; 248 return curr;
249 249
250 if (currChild->isFloating() || currChild->isOutOfFlowPositioned()) 250 if (currChild->isFloating() || currChild->isOutOfFlowPositioned())
251 continue; 251 continue;
252 252
253 if (!currChild->isLayoutBlockFlow() || (currChild->isBox() && toLayoutBo x(currChild)->isWritingModeRoot())) 253 if (!currChild->isLayoutBlockFlow() || (currChild->isBox() && toLayoutBo x(currChild)->isWritingModeRoot()))
254 break; 254 break;
255 255
256 if (curr->isListItem() && inQuirksMode && currChild->node() 256 if (curr->isListItem() && inQuirksMode && currChild->node()
257 && (isHTMLUListElement(*currChild->node()) || isHTMLOListElement(*cu rrChild->node()))) 257 && (isHTMLUListElement(*currChild->node()) || isHTMLOListElement(*cu rrChild->node())))
258 break; 258 break;
259 259
260 LayoutObject* lineBox = getParentOfFirstLineBox(toLayoutBlockFlow(currCh ild), marker); 260 LayoutObject* lineBox = getParentOfFirstLineBox(toLayoutBlockFlow(currCh ild), marker);
261 if (lineBox) 261 if (lineBox)
262 return lineBox; 262 return lineBox;
263 } 263 }
264 264
265 return 0; 265 return nullptr;
266 } 266 }
267 267
268 void LayoutListItem::updateValue() 268 void LayoutListItem::updateValue()
269 { 269 {
270 if (!m_hasExplicitValue) { 270 if (!m_hasExplicitValue) {
271 m_isValueUpToDate = false; 271 m_isValueUpToDate = false;
272 if (m_marker) 272 if (m_marker)
273 m_marker->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( LayoutInvalidationReason::ListValueChange); 273 m_marker->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( LayoutInvalidationReason::ListValueChange);
274 } 274 }
275 } 275 }
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 // assume that all the following ones have too. 498 // assume that all the following ones have too.
499 // This gives us the opportunity to stop here and avoid 499 // This gives us the opportunity to stop here and avoid
500 // marking the same nodes again. 500 // marking the same nodes again.
501 break; 501 break;
502 } 502 }
503 item->updateValue(); 503 item->updateValue();
504 } 504 }
505 } 505 }
506 506
507 } // namespace blink 507 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutInline.cpp ('k') | Source/core/layout/LayoutListMarker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698