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

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

Issue 1307803003: Introduce nextPositionOf() for VisiblePosition (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: 2015-08-28T18:13:02 Created 5 years, 3 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/editing/Editor.cpp ('k') | Source/core/editing/PlainTextRange.cpp » ('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) 2004, 2008, 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2008, 2009, 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 648 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 VisiblePosition pos(m_selection.extent(), m_selection.affinity()); 659 VisiblePosition pos(m_selection.extent(), m_selection.affinity());
660 660
661 // The difference between modifyExtendingRight and modifyExtendingForward is : 661 // The difference between modifyExtendingRight and modifyExtendingForward is :
662 // modifyExtendingForward always extends forward logically. 662 // modifyExtendingForward always extends forward logically.
663 // modifyExtendingRight behaves the same as modifyExtendingForward except fo r extending character or word, 663 // modifyExtendingRight behaves the same as modifyExtendingForward except fo r extending character or word,
664 // it extends forward logically if the enclosing block is LTR direction, 664 // it extends forward logically if the enclosing block is LTR direction,
665 // but it extends backward logically if the enclosing block is RTL direction . 665 // but it extends backward logically if the enclosing block is RTL direction .
666 switch (granularity) { 666 switch (granularity) {
667 case CharacterGranularity: 667 case CharacterGranularity:
668 if (directionOfEnclosingBlock() == LTR) 668 if (directionOfEnclosingBlock() == LTR)
669 pos = pos.next(CanSkipOverEditingBoundary); 669 pos = nextPositionOf(pos, CanSkipOverEditingBoundary);
670 else 670 else
671 pos = previousPositionOf(pos, CanSkipOverEditingBoundary); 671 pos = previousPositionOf(pos, CanSkipOverEditingBoundary);
672 break; 672 break;
673 case WordGranularity: 673 case WordGranularity:
674 if (directionOfEnclosingBlock() == LTR) 674 if (directionOfEnclosingBlock() == LTR)
675 pos = nextWordPositionForPlatform(pos); 675 pos = nextWordPositionForPlatform(pos);
676 else 676 else
677 pos = previousWordPosition(pos); 677 pos = previousWordPosition(pos);
678 break; 678 break;
679 case LineBoundary: 679 case LineBoundary:
(...skipping 14 matching lines...) Expand all
694 } 694 }
695 adjustPositionForUserSelectAll(pos, directionOfEnclosingBlock() == LTR); 695 adjustPositionForUserSelectAll(pos, directionOfEnclosingBlock() == LTR);
696 return pos; 696 return pos;
697 } 697 }
698 698
699 VisiblePosition FrameSelection::modifyExtendingForward(TextGranularity granulari ty) 699 VisiblePosition FrameSelection::modifyExtendingForward(TextGranularity granulari ty)
700 { 700 {
701 VisiblePosition pos(m_selection.extent(), m_selection.affinity()); 701 VisiblePosition pos(m_selection.extent(), m_selection.affinity());
702 switch (granularity) { 702 switch (granularity) {
703 case CharacterGranularity: 703 case CharacterGranularity:
704 pos = pos.next(CanSkipOverEditingBoundary); 704 pos = nextPositionOf(pos, CanSkipOverEditingBoundary);
705 break; 705 break;
706 case WordGranularity: 706 case WordGranularity:
707 pos = nextWordPositionForPlatform(pos); 707 pos = nextWordPositionForPlatform(pos);
708 break; 708 break;
709 case SentenceGranularity: 709 case SentenceGranularity:
710 pos = nextSentencePosition(pos); 710 pos = nextSentencePosition(pos);
711 break; 711 break;
712 case LineGranularity: 712 case LineGranularity:
713 pos = nextLinePosition(pos, lineDirectionPointForBlockDirectionNavigatio n(EXTENT)); 713 pos = nextLinePosition(pos, lineDirectionPointForBlockDirectionNavigatio n(EXTENT));
714 break; 714 break;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 773
774 VisiblePosition FrameSelection::modifyMovingForward(TextGranularity granularity) 774 VisiblePosition FrameSelection::modifyMovingForward(TextGranularity granularity)
775 { 775 {
776 VisiblePosition pos; 776 VisiblePosition pos;
777 // FIXME: Stay in editable content for the less common granularities. 777 // FIXME: Stay in editable content for the less common granularities.
778 switch (granularity) { 778 switch (granularity) {
779 case CharacterGranularity: 779 case CharacterGranularity:
780 if (isRange()) 780 if (isRange())
781 pos = VisiblePosition(m_selection.end(), m_selection.affinity()); 781 pos = VisiblePosition(m_selection.end(), m_selection.affinity());
782 else 782 else
783 pos = VisiblePosition(m_selection.extent(), m_selection.affinity()). next(CanSkipOverEditingBoundary); 783 pos = nextPositionOf(VisiblePosition(m_selection.extent(), m_selecti on.affinity()), CanSkipOverEditingBoundary);
784 break; 784 break;
785 case WordGranularity: 785 case WordGranularity:
786 pos = nextWordPositionForPlatform(VisiblePosition(m_selection.extent(), m_selection.affinity())); 786 pos = nextWordPositionForPlatform(VisiblePosition(m_selection.extent(), m_selection.affinity()));
787 break; 787 break;
788 case SentenceGranularity: 788 case SentenceGranularity:
789 pos = nextSentencePosition(VisiblePosition(m_selection.extent(), m_selec tion.affinity())); 789 pos = nextSentencePosition(VisiblePosition(m_selection.extent(), m_selec tion.affinity()));
790 break; 790 break;
791 case LineGranularity: { 791 case LineGranularity: {
792 // down-arrowing from a range selection that ends at the start of a line needs 792 // down-arrowing from a range selection that ends at the start of a line needs
793 // to leave the selection at that line start (no need to call nextLinePo sition!) 793 // to leave the selection at that line start (no need to call nextLinePo sition!)
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 // The difference between modifyExtendingLeft and modifyExtendingBackward is : 826 // The difference between modifyExtendingLeft and modifyExtendingBackward is :
827 // modifyExtendingBackward always extends backward logically. 827 // modifyExtendingBackward always extends backward logically.
828 // modifyExtendingLeft behaves the same as modifyExtendingBackward except fo r extending character or word, 828 // modifyExtendingLeft behaves the same as modifyExtendingBackward except fo r extending character or word,
829 // it extends backward logically if the enclosing block is LTR direction, 829 // it extends backward logically if the enclosing block is LTR direction,
830 // but it extends forward logically if the enclosing block is RTL direction. 830 // but it extends forward logically if the enclosing block is RTL direction.
831 switch (granularity) { 831 switch (granularity) {
832 case CharacterGranularity: 832 case CharacterGranularity:
833 if (directionOfEnclosingBlock() == LTR) 833 if (directionOfEnclosingBlock() == LTR)
834 pos = previousPositionOf(pos, CanSkipOverEditingBoundary); 834 pos = previousPositionOf(pos, CanSkipOverEditingBoundary);
835 else 835 else
836 pos = pos.next(CanSkipOverEditingBoundary); 836 pos = nextPositionOf(pos, CanSkipOverEditingBoundary);
837 break; 837 break;
838 case WordGranularity: 838 case WordGranularity:
839 if (directionOfEnclosingBlock() == LTR) 839 if (directionOfEnclosingBlock() == LTR)
840 pos = previousWordPosition(pos); 840 pos = previousWordPosition(pos);
841 else 841 else
842 pos = nextWordPositionForPlatform(pos); 842 pos = nextWordPositionForPlatform(pos);
843 break; 843 break;
844 case LineBoundary: 844 case LineBoundary:
845 if (directionOfEnclosingBlock() == LTR) 845 if (directionOfEnclosingBlock() == LTR)
846 pos = modifyExtendingBackward(granularity); 846 pos = modifyExtendingBackward(granularity);
(...skipping 1222 matching lines...) Expand 10 before | Expand all | Expand 10 after
2069 2069
2070 void showTree(const blink::FrameSelection* sel) 2070 void showTree(const blink::FrameSelection* sel)
2071 { 2071 {
2072 if (sel) 2072 if (sel)
2073 sel->showTreeForThis(); 2073 sel->showTreeForThis();
2074 else 2074 else
2075 fprintf(stderr, "Cannot showTree for (nil) FrameSelection.\n"); 2075 fprintf(stderr, "Cannot showTree for (nil) FrameSelection.\n");
2076 } 2076 }
2077 2077
2078 #endif 2078 #endif
OLDNEW
« no previous file with comments | « Source/core/editing/Editor.cpp ('k') | Source/core/editing/PlainTextRange.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698