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

Side by Side Diff: Source/core/editing/VisibleUnits.cpp

Issue 182413005: Return refererence from InlineBox::root() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: re-upload because previous patch didn't upload correctly. Created 6 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 return i; 200 return i;
201 } 201 }
202 return 0; 202 return 0;
203 } 203 }
204 204
205 static const InlineTextBox* logicallyPreviousBox(const VisiblePosition& visibleP osition, const InlineTextBox* textBox, 205 static const InlineTextBox* logicallyPreviousBox(const VisiblePosition& visibleP osition, const InlineTextBox* textBox,
206 bool& previousBoxInDifferentBlock, CachedLogicallyOrderedLeafBoxes& leafBoxe s) 206 bool& previousBoxInDifferentBlock, CachedLogicallyOrderedLeafBoxes& leafBoxe s)
207 { 207 {
208 const InlineBox* startBox = textBox; 208 const InlineBox* startBox = textBox;
209 209
210 const InlineTextBox* previousBox = leafBoxes.previousTextBox(startBox->root( ), textBox); 210 const InlineTextBox* previousBox = leafBoxes.previousTextBox(&startBox->root (), textBox);
211 if (previousBox) 211 if (previousBox)
212 return previousBox; 212 return previousBox;
213 213
214 previousBox = leafBoxes.previousTextBox(startBox->root()->prevRootBox(), 0); 214 previousBox = leafBoxes.previousTextBox(startBox->root().prevRootBox(), 0);
215 if (previousBox) 215 if (previousBox)
216 return previousBox; 216 return previousBox;
217 217
218 while (1) { 218 while (1) {
219 Node* startNode = startBox->renderer().nonPseudoNode(); 219 Node* startNode = startBox->renderer().nonPseudoNode();
220 if (!startNode) 220 if (!startNode)
221 break; 221 break;
222 222
223 Position position = previousRootInlineBoxCandidatePosition(startNode, vi siblePosition, ContentIsEditable); 223 Position position = previousRootInlineBoxCandidatePosition(startNode, vi siblePosition, ContentIsEditable);
224 if (position.isNull()) 224 if (position.isNull())
(...skipping 16 matching lines...) Expand all
241 } 241 }
242 return 0; 242 return 0;
243 } 243 }
244 244
245 245
246 static const InlineTextBox* logicallyNextBox(const VisiblePosition& visiblePosit ion, const InlineTextBox* textBox, 246 static const InlineTextBox* logicallyNextBox(const VisiblePosition& visiblePosit ion, const InlineTextBox* textBox,
247 bool& nextBoxInDifferentBlock, CachedLogicallyOrderedLeafBoxes& leafBoxes) 247 bool& nextBoxInDifferentBlock, CachedLogicallyOrderedLeafBoxes& leafBoxes)
248 { 248 {
249 const InlineBox* startBox = textBox; 249 const InlineBox* startBox = textBox;
250 250
251 const InlineTextBox* nextBox = leafBoxes.nextTextBox(startBox->root(), textB ox); 251 const InlineTextBox* nextBox = leafBoxes.nextTextBox(&startBox->root(), text Box);
252 if (nextBox) 252 if (nextBox)
253 return nextBox; 253 return nextBox;
254 254
255 nextBox = leafBoxes.nextTextBox(startBox->root()->nextRootBox(), 0); 255 nextBox = leafBoxes.nextTextBox(startBox->root().nextRootBox(), 0);
256 if (nextBox) 256 if (nextBox)
257 return nextBox; 257 return nextBox;
258 258
259 while (1) { 259 while (1) {
260 Node* startNode =startBox->renderer().nonPseudoNode(); 260 Node* startNode =startBox->renderer().nonPseudoNode();
261 if (!startNode) 261 if (!startNode)
262 break; 262 break;
263 263
264 Position position = nextRootInlineBoxCandidatePosition(startNode, visibl ePosition, ContentIsEditable); 264 Position position = nextRootInlineBoxCandidatePosition(startNode, visibl ePosition, ContentIsEditable);
265 if (position.isNull()) 265 if (position.isNull())
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 922
923 RenderObject* renderer = node->renderer(); 923 RenderObject* renderer = node->renderer();
924 if (!renderer) 924 if (!renderer)
925 return VisiblePosition(); 925 return VisiblePosition();
926 926
927 RootInlineBox* root = 0; 927 RootInlineBox* root = 0;
928 InlineBox* box; 928 InlineBox* box;
929 int ignoredCaretOffset; 929 int ignoredCaretOffset;
930 visiblePosition.getInlineBoxAndOffset(box, ignoredCaretOffset); 930 visiblePosition.getInlineBoxAndOffset(box, ignoredCaretOffset);
931 if (box) { 931 if (box) {
932 root = box->root()->prevRootBox(); 932 root = box->root().prevRootBox();
933 // We want to skip zero height boxes. 933 // We want to skip zero height boxes.
934 // This could happen in case it is a TrailingFloatsRootInlineBox. 934 // This could happen in case it is a TrailingFloatsRootInlineBox.
935 if (!root || !root->logicalHeight() || !root->firstLeafChild()) 935 if (!root || !root->logicalHeight() || !root->firstLeafChild())
936 root = 0; 936 root = 0;
937 } 937 }
938 938
939 if (!root) { 939 if (!root) {
940 Position position = previousRootInlineBoxCandidatePosition(node, visible Position, editableType); 940 Position position = previousRootInlineBoxCandidatePosition(node, visible Position, editableType);
941 if (position.isNotNull()) { 941 if (position.isNotNull()) {
942 RenderedPosition renderedPosition((VisiblePosition(position))); 942 RenderedPosition renderedPosition((VisiblePosition(position)));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 977
978 RenderObject* renderer = node->renderer(); 978 RenderObject* renderer = node->renderer();
979 if (!renderer) 979 if (!renderer)
980 return VisiblePosition(); 980 return VisiblePosition();
981 981
982 RootInlineBox* root = 0; 982 RootInlineBox* root = 0;
983 InlineBox* box; 983 InlineBox* box;
984 int ignoredCaretOffset; 984 int ignoredCaretOffset;
985 visiblePosition.getInlineBoxAndOffset(box, ignoredCaretOffset); 985 visiblePosition.getInlineBoxAndOffset(box, ignoredCaretOffset);
986 if (box) { 986 if (box) {
987 root = box->root()->nextRootBox(); 987 root = box->root().nextRootBox();
988 // We want to skip zero height boxes. 988 // We want to skip zero height boxes.
989 // This could happen in case it is a TrailingFloatsRootInlineBox. 989 // This could happen in case it is a TrailingFloatsRootInlineBox.
990 if (!root || !root->logicalHeight() || !root->firstLeafChild()) 990 if (!root || !root->logicalHeight() || !root->firstLeafChild())
991 root = 0; 991 root = 0;
992 } 992 }
993 993
994 if (!root) { 994 if (!root) {
995 // FIXME: We need do the same in previousLinePosition. 995 // FIXME: We need do the same in previousLinePosition.
996 Node* child = node->traverseToChildAt(p.deprecatedEditingOffset()); 996 Node* child = node->traverseToChildAt(p.deprecatedEditingOffset());
997 node = child ? child : &node->lastDescendant(); 997 node = child ? child : &node->lastDescendant();
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 { 1384 {
1385 return direction == LTR ? logicalStartOfLine(c) : logicalEndOfLine(c); 1385 return direction == LTR ? logicalStartOfLine(c) : logicalEndOfLine(c);
1386 } 1386 }
1387 1387
1388 VisiblePosition rightBoundaryOfLine(const VisiblePosition& c, TextDirection dire ction) 1388 VisiblePosition rightBoundaryOfLine(const VisiblePosition& c, TextDirection dire ction)
1389 { 1389 {
1390 return direction == LTR ? logicalEndOfLine(c) : logicalStartOfLine(c); 1390 return direction == LTR ? logicalEndOfLine(c) : logicalStartOfLine(c);
1391 } 1391 }
1392 1392
1393 } 1393 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698