OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2008 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 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 { | 213 { |
214 VisiblePosition endOfCurrentParagraph = endOfParagraph(startOfSelection); | 214 VisiblePosition endOfCurrentParagraph = endOfParagraph(startOfSelection); |
215 VisiblePosition endOfLastParagraph = endOfParagraph(endOfSelection); | 215 VisiblePosition endOfLastParagraph = endOfParagraph(endOfSelection); |
216 | 216 |
217 if (endOfCurrentParagraph.deepEquivalent() == endOfLastParagraph.deepEquival
ent()) { | 217 if (endOfCurrentParagraph.deepEquivalent() == endOfLastParagraph.deepEquival
ent()) { |
218 outdentParagraph(); | 218 outdentParagraph(); |
219 return; | 219 return; |
220 } | 220 } |
221 | 221 |
222 Position originalSelectionEnd = endingSelection().end(); | 222 Position originalSelectionEnd = endingSelection().end(); |
223 VisiblePosition endAfterSelection = endOfParagraph(endOfLastParagraph.next()
); | 223 VisiblePosition endAfterSelection = endOfParagraph(nextPositionOf(endOfLastP
aragraph)); |
224 | 224 |
225 while (endOfCurrentParagraph.deepEquivalent() != endAfterSelection.deepEquiv
alent()) { | 225 while (endOfCurrentParagraph.deepEquivalent() != endAfterSelection.deepEquiv
alent()) { |
226 VisiblePosition endOfNextParagraph = endOfParagraph(endOfCurrentParagrap
h.next()); | 226 VisiblePosition endOfNextParagraph = endOfParagraph(nextPositionOf(endOf
CurrentParagraph)); |
227 if (endOfCurrentParagraph.deepEquivalent() == endOfLastParagraph.deepEqu
ivalent()) | 227 if (endOfCurrentParagraph.deepEquivalent() == endOfLastParagraph.deepEqu
ivalent()) |
228 setEndingSelection(VisibleSelection(originalSelectionEnd, TextAffini
ty::Downstream)); | 228 setEndingSelection(VisibleSelection(originalSelectionEnd, TextAffini
ty::Downstream)); |
229 else | 229 else |
230 setEndingSelection(endOfCurrentParagraph); | 230 setEndingSelection(endOfCurrentParagraph); |
231 | 231 |
232 outdentParagraph(); | 232 outdentParagraph(); |
233 | 233 |
234 // outdentParagraph could move more than one paragraph if the paragraph | 234 // outdentParagraph could move more than one paragraph if the paragraph |
235 // is in a list item. As a result, endAfterSelection and endOfNextParagr
aph | 235 // is in a list item. As a result, endAfterSelection and endOfNextParagr
aph |
236 // could refer to positions no longer in the document. | 236 // could refer to positions no longer in the document. |
237 if (endAfterSelection.isNotNull() && !endAfterSelection.deepEquivalent()
.inDocument()) | 237 if (endAfterSelection.isNotNull() && !endAfterSelection.deepEquivalent()
.inDocument()) |
238 break; | 238 break; |
239 | 239 |
240 if (endOfNextParagraph.isNotNull() && !endOfNextParagraph.deepEquivalent
().inDocument()) { | 240 if (endOfNextParagraph.isNotNull() && !endOfNextParagraph.deepEquivalent
().inDocument()) { |
241 endOfCurrentParagraph = VisiblePosition(endingSelection().end()); | 241 endOfCurrentParagraph = VisiblePosition(endingSelection().end()); |
242 endOfNextParagraph = endOfParagraph(endOfCurrentParagraph.next()); | 242 endOfNextParagraph = endOfParagraph(nextPositionOf(endOfCurrentParag
raph)); |
243 } | 243 } |
244 endOfCurrentParagraph = endOfNextParagraph; | 244 endOfCurrentParagraph = endOfNextParagraph; |
245 } | 245 } |
246 } | 246 } |
247 | 247 |
248 void IndentOutdentCommand::formatSelection(const VisiblePosition& startOfSelecti
on, const VisiblePosition& endOfSelection) | 248 void IndentOutdentCommand::formatSelection(const VisiblePosition& startOfSelecti
on, const VisiblePosition& endOfSelection) |
249 { | 249 { |
250 if (m_typeOfAction == Indent) | 250 if (m_typeOfAction == Indent) |
251 ApplyBlockElementCommand::formatSelection(startOfSelection, endOfSelecti
on); | 251 ApplyBlockElementCommand::formatSelection(startOfSelection, endOfSelecti
on); |
252 else | 252 else |
253 outdentRegion(startOfSelection, endOfSelection); | 253 outdentRegion(startOfSelection, endOfSelection); |
254 } | 254 } |
255 | 255 |
256 void IndentOutdentCommand::formatRange(const Position& start, const Position& en
d, const Position&, RefPtrWillBeRawPtr<HTMLElement>& blockquoteForNextIndent) | 256 void IndentOutdentCommand::formatRange(const Position& start, const Position& en
d, const Position&, RefPtrWillBeRawPtr<HTMLElement>& blockquoteForNextIndent) |
257 { | 257 { |
258 if (tryIndentingAsListItem(start, end)) | 258 if (tryIndentingAsListItem(start, end)) |
259 blockquoteForNextIndent = nullptr; | 259 blockquoteForNextIndent = nullptr; |
260 else | 260 else |
261 indentIntoBlockquote(start, end, blockquoteForNextIndent); | 261 indentIntoBlockquote(start, end, blockquoteForNextIndent); |
262 } | 262 } |
263 | 263 |
264 } | 264 } |
OLD | NEW |