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

Side by Side Diff: Source/core/editing/commands/InsertListCommand.cpp

Issue 1313883002: Introduce firstRangeOf() as replacement of VisibleSelection::firstRange() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: 2015-08-25T17:47:14 Created 5 years, 4 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) 2006, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2010 Apple Inc. All rights reserved.
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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 139
140 const HTMLQualifiedName& listTag = (m_type == OrderedList) ? olTag : ulTag; 140 const HTMLQualifiedName& listTag = (m_type == OrderedList) ? olTag : ulTag;
141 if (endingSelection().isRange()) { 141 if (endingSelection().isRange()) {
142 bool forceListCreation = false; 142 bool forceListCreation = false;
143 VisibleSelection selection = selectionForParagraphIteration(endingSelect ion()); 143 VisibleSelection selection = selectionForParagraphIteration(endingSelect ion());
144 ASSERT(selection.isRange()); 144 ASSERT(selection.isRange());
145 VisiblePosition startOfSelection = selection.visibleStart(); 145 VisiblePosition startOfSelection = selection.visibleStart();
146 VisiblePosition endOfSelection = selection.visibleEnd(); 146 VisiblePosition endOfSelection = selection.visibleEnd();
147 VisiblePosition startOfLastParagraph = startOfParagraph(endOfSelection, CanSkipOverEditingBoundary); 147 VisiblePosition startOfLastParagraph = startOfParagraph(endOfSelection, CanSkipOverEditingBoundary);
148 148
149 RefPtrWillBeRawPtr<Range> currentSelection = endingSelection().firstRang e(); 149 RefPtrWillBeRawPtr<Range> currentSelection = firstRangeOf(endingSelectio n());
150 RefPtrWillBeRawPtr<ContainerNode> scopeForStartOfSelection = nullptr; 150 RefPtrWillBeRawPtr<ContainerNode> scopeForStartOfSelection = nullptr;
151 RefPtrWillBeRawPtr<ContainerNode> scopeForEndOfSelection = nullptr; 151 RefPtrWillBeRawPtr<ContainerNode> scopeForEndOfSelection = nullptr;
152 // FIXME: This is an inefficient way to keep selection alive because 152 // FIXME: This is an inefficient way to keep selection alive because
153 // indexForVisiblePosition walks from the beginning of the document to t he 153 // indexForVisiblePosition walks from the beginning of the document to t he
154 // endOfSelection everytime this code is executed. But not using index i s hard 154 // endOfSelection everytime this code is executed. But not using index i s hard
155 // because there are so many ways we can los eselection inside doApplyFo rSingleParagraph. 155 // because there are so many ways we can los eselection inside doApplyFo rSingleParagraph.
156 int indexForStartOfSelection = indexForVisiblePosition(startOfSelection, scopeForStartOfSelection); 156 int indexForStartOfSelection = indexForVisiblePosition(startOfSelection, scopeForStartOfSelection);
157 int indexForEndOfSelection = indexForVisiblePosition(endOfSelection, sco peForEndOfSelection); 157 int indexForEndOfSelection = indexForVisiblePosition(endOfSelection, sco peForEndOfSelection);
158 158
159 if (startOfParagraph(startOfSelection, CanSkipOverEditingBoundary).deepE quivalent() != startOfLastParagraph.deepEquivalent()) { 159 if (startOfParagraph(startOfSelection, CanSkipOverEditingBoundary).deepE quivalent() != startOfLastParagraph.deepEquivalent()) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 } 197 }
198 if (startOfSelection.isNull() || startOfSelection.isOrphan()) { 198 if (startOfSelection.isNull() || startOfSelection.isOrphan()) {
199 startOfSelection = visiblePositionForIndex(indexForStartOfSelection, scopeForStartOfSelection.get()); 199 startOfSelection = visiblePositionForIndex(indexForStartOfSelection, scopeForStartOfSelection.get());
200 if (startOfSelection.isNull()) 200 if (startOfSelection.isNull())
201 return; 201 return;
202 } 202 }
203 setEndingSelection(VisibleSelection(startOfSelection, endOfSelection, en dingSelection().isDirectional())); 203 setEndingSelection(VisibleSelection(startOfSelection, endOfSelection, en dingSelection().isDirectional()));
204 return; 204 return;
205 } 205 }
206 206
207 ASSERT(endingSelection().firstRange()); 207 ASSERT(firstRangeOf(endingSelection()));
208 doApplyForSingleParagraph(false, listTag, *endingSelection().firstRange()); 208 doApplyForSingleParagraph(false, listTag, *firstRangeOf(endingSelection()));
209 } 209 }
210 210
211 bool InsertListCommand::doApplyForSingleParagraph(bool forceCreateList, const HT MLQualifiedName& listTag, Range& currentSelection) 211 bool InsertListCommand::doApplyForSingleParagraph(bool forceCreateList, const HT MLQualifiedName& listTag, Range& currentSelection)
212 { 212 {
213 // FIXME: This will produce unexpected results for a selection that starts j ust before a 213 // FIXME: This will produce unexpected results for a selection that starts j ust before a
214 // table and ends inside the first cell, selectionForParagraphIteration shou ld probably 214 // table and ends inside the first cell, selectionForParagraphIteration shou ld probably
215 // be renamed and deployed inside setEndingSelection(). 215 // be renamed and deployed inside setEndingSelection().
216 Node* selectionNode = endingSelection().start().anchorNode(); 216 Node* selectionNode = endingSelection().start().anchorNode();
217 Node* listChildNode = enclosingListChild(selectionNode); 217 Node* listChildNode = enclosingListChild(selectionNode);
218 bool switchListType = false; 218 bool switchListType = false;
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 return listElement; 427 return listElement;
428 } 428 }
429 429
430 DEFINE_TRACE(InsertListCommand) 430 DEFINE_TRACE(InsertListCommand)
431 { 431 {
432 visitor->trace(m_listElement); 432 visitor->trace(m_listElement);
433 CompositeEditCommand::trace(visitor); 433 CompositeEditCommand::trace(visitor);
434 } 434 }
435 435
436 } 436 }
OLDNEW
« no previous file with comments | « Source/core/editing/commands/EditorCommand.cpp ('k') | Source/modules/accessibility/AXLayoutObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698