| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006 Apple Computer, 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 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 EWordSide side = wordSide; | 472 EWordSide side = wordSide; |
| 473 if (isEndOfEditableOrNonEditableContent(originalEnd) || (isEndOfLine(ori
ginalEnd) && !isStartOfLine(originalEnd) && !isEndOfParagraph(originalEnd))) | 473 if (isEndOfEditableOrNonEditableContent(originalEnd) || (isEndOfLine(ori
ginalEnd) && !isStartOfLine(originalEnd) && !isEndOfParagraph(originalEnd))) |
| 474 side = LeftWordIfOnBoundary; | 474 side = LeftWordIfOnBoundary; |
| 475 | 475 |
| 476 VisiblePosition wordEnd(endOfWord(originalEnd, side)); | 476 VisiblePosition wordEnd(endOfWord(originalEnd, side)); |
| 477 VisiblePosition end(wordEnd); | 477 VisiblePosition end(wordEnd); |
| 478 | 478 |
| 479 if (isEndOfParagraph(originalEnd) && !isEmptyTableCell(m_start.anchorNod
e())) { | 479 if (isEndOfParagraph(originalEnd) && !isEmptyTableCell(m_start.anchorNod
e())) { |
| 480 // Select the paragraph break (the space from the end of a paragraph
to the start of | 480 // Select the paragraph break (the space from the end of a paragraph
to the start of |
| 481 // the next one) to match TextEdit. | 481 // the next one) to match TextEdit. |
| 482 end = wordEnd.next(); | 482 end = nextPositionOf(wordEnd); |
| 483 | 483 |
| 484 if (Element* table = isFirstPositionAfterTable(end)) { | 484 if (Element* table = isFirstPositionAfterTable(end)) { |
| 485 // The paragraph break after the last paragraph in the last cell
of a block table ends | 485 // The paragraph break after the last paragraph in the last cell
of a block table ends |
| 486 // at the start of the paragraph after the table. | 486 // at the start of the paragraph after the table. |
| 487 if (isEnclosingBlock(table)) | 487 if (isEnclosingBlock(table)) |
| 488 end = end.next(CannotCrossEditingBoundary); | 488 end = nextPositionOf(end, CannotCrossEditingBoundary); |
| 489 else | 489 else |
| 490 end = wordEnd; | 490 end = wordEnd; |
| 491 } | 491 } |
| 492 | 492 |
| 493 if (end.isNull()) | 493 if (end.isNull()) |
| 494 end = wordEnd; | 494 end = wordEnd; |
| 495 | 495 |
| 496 } | 496 } |
| 497 | 497 |
| 498 m_end = end.deepEquivalent(); | 498 m_end = end.deepEquivalent(); |
| 499 break; | 499 break; |
| 500 } | 500 } |
| 501 case SentenceGranularity: { | 501 case SentenceGranularity: { |
| 502 m_end = endOfSentence(VisiblePosition(m_end, m_affinity)).deepEquivalent
(); | 502 m_end = endOfSentence(VisiblePosition(m_end, m_affinity)).deepEquivalent
(); |
| 503 break; | 503 break; |
| 504 } | 504 } |
| 505 case LineGranularity: { | 505 case LineGranularity: { |
| 506 VisiblePosition end = endOfLine(VisiblePosition(m_end, m_affinity)); | 506 VisiblePosition end = endOfLine(VisiblePosition(m_end, m_affinity)); |
| 507 // If the end of this line is at the end of a paragraph, include the spa
ce | 507 // If the end of this line is at the end of a paragraph, include the spa
ce |
| 508 // after the end of the line in the selection. | 508 // after the end of the line in the selection. |
| 509 if (isEndOfParagraph(end)) { | 509 if (isEndOfParagraph(end)) { |
| 510 VisiblePosition next = end.next(); | 510 VisiblePosition next = nextPositionOf(end); |
| 511 if (next.isNotNull()) | 511 if (next.isNotNull()) |
| 512 end = next; | 512 end = next; |
| 513 } | 513 } |
| 514 m_end = end.deepEquivalent(); | 514 m_end = end.deepEquivalent(); |
| 515 break; | 515 break; |
| 516 } | 516 } |
| 517 case LineBoundary: | 517 case LineBoundary: |
| 518 m_end = endOfLine(VisiblePosition(m_end, m_affinity)).deepEquivalent(); | 518 m_end = endOfLine(VisiblePosition(m_end, m_affinity)).deepEquivalent(); |
| 519 break; | 519 break; |
| 520 case ParagraphGranularity: { | 520 case ParagraphGranularity: { |
| 521 VisiblePosition visibleParagraphEnd = endOfParagraph(VisiblePosition(m_e
nd, m_affinity)); | 521 VisiblePosition visibleParagraphEnd = endOfParagraph(VisiblePosition(m_e
nd, m_affinity)); |
| 522 | 522 |
| 523 // Include the "paragraph break" (the space from the end of this paragra
ph to the start | 523 // Include the "paragraph break" (the space from the end of this paragra
ph to the start |
| 524 // of the next one) in the selection. | 524 // of the next one) in the selection. |
| 525 VisiblePosition end(visibleParagraphEnd.next()); | 525 VisiblePosition end(nextPositionOf(visibleParagraphEnd)); |
| 526 | 526 |
| 527 if (Element* table = isFirstPositionAfterTable(end)) { | 527 if (Element* table = isFirstPositionAfterTable(end)) { |
| 528 // The paragraph break after the last paragraph in the last cell of
a block table ends | 528 // The paragraph break after the last paragraph in the last cell of
a block table ends |
| 529 // at the start of the paragraph after the table, not at the positio
n just after the table. | 529 // at the start of the paragraph after the table, not at the positio
n just after the table. |
| 530 if (isEnclosingBlock(table)) | 530 if (isEnclosingBlock(table)) |
| 531 end = end.next(CannotCrossEditingBoundary); | 531 end = nextPositionOf(end, CannotCrossEditingBoundary); |
| 532 // There is no parargraph break after the last paragraph in the last
cell of an inline table. | 532 // There is no parargraph break after the last paragraph in the last
cell of an inline table. |
| 533 else | 533 else |
| 534 end = visibleParagraphEnd; | 534 end = visibleParagraphEnd; |
| 535 } | 535 } |
| 536 | 536 |
| 537 if (end.isNull()) | 537 if (end.isNull()) |
| 538 end = visibleParagraphEnd; | 538 end = visibleParagraphEnd; |
| 539 | 539 |
| 540 m_end = end.deepEquivalent(); | 540 m_end = end.deepEquivalent(); |
| 541 break; | 541 break; |
| (...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1247 sel.showTreeForThis(); | 1247 sel.showTreeForThis(); |
| 1248 } | 1248 } |
| 1249 | 1249 |
| 1250 void showTree(const blink::VisibleSelection* sel) | 1250 void showTree(const blink::VisibleSelection* sel) |
| 1251 { | 1251 { |
| 1252 if (sel) | 1252 if (sel) |
| 1253 sel->showTreeForThis(); | 1253 sel->showTreeForThis(); |
| 1254 } | 1254 } |
| 1255 | 1255 |
| 1256 #endif | 1256 #endif |
| OLD | NEW |