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

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

Issue 1300303002: Introduce isVisuallyEquivalentCandidate() as replacement of PositionAlgorithm::isCandidate() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: 2015-08-21T01:27:16 Rebase 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) 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 while (previousNode && (!previousNode->layoutObject() || inSameLine(VisibleP osition(firstPositionInOrBeforeNode(previousNode)), visiblePosition))) 100 while (previousNode && (!previousNode->layoutObject() || inSameLine(VisibleP osition(firstPositionInOrBeforeNode(previousNode)), visiblePosition)))
101 previousNode = previousLeafWithSameEditability(previousNode, editableTyp e); 101 previousNode = previousLeafWithSameEditability(previousNode, editableTyp e);
102 102
103 while (previousNode && !previousNode->isShadowRoot()) { 103 while (previousNode && !previousNode->isShadowRoot()) {
104 if (highestEditableRoot(firstPositionInOrBeforeNode(previousNode), edita bleType) != highestRoot) 104 if (highestEditableRoot(firstPositionInOrBeforeNode(previousNode), edita bleType) != highestRoot)
105 break; 105 break;
106 106
107 Position pos = isHTMLBRElement(*previousNode) ? positionBeforeNode(previ ousNode) : 107 Position pos = isHTMLBRElement(*previousNode) ? positionBeforeNode(previ ousNode) :
108 Position::editingPositionOf(previousNode, caretMaxOffset(previousNod e)); 108 Position::editingPositionOf(previousNode, caretMaxOffset(previousNod e));
109 109
110 if (pos.isCandidate()) 110 if (isVisuallyEquivalentCandidate(pos))
111 return pos; 111 return pos;
112 112
113 previousNode = previousLeafWithSameEditability(previousNode, editableTyp e); 113 previousNode = previousLeafWithSameEditability(previousNode, editableTyp e);
114 } 114 }
115 return Position(); 115 return Position();
116 } 116 }
117 117
118 static Position nextRootInlineBoxCandidatePosition(Node* node, const VisiblePosi tion& visiblePosition, EditableType editableType) 118 static Position nextRootInlineBoxCandidatePosition(Node* node, const VisiblePosi tion& visiblePosition, EditableType editableType)
119 { 119 {
120 ContainerNode* highestRoot = highestEditableRoot(visiblePosition.deepEquival ent(), editableType); 120 ContainerNode* highestRoot = highestEditableRoot(visiblePosition.deepEquival ent(), editableType);
121 Node* nextNode = nextLeafWithSameEditability(node, editableType); 121 Node* nextNode = nextLeafWithSameEditability(node, editableType);
122 while (nextNode && (!nextNode->layoutObject() || inSameLine(VisiblePosition( firstPositionInOrBeforeNode(nextNode)), visiblePosition))) 122 while (nextNode && (!nextNode->layoutObject() || inSameLine(VisiblePosition( firstPositionInOrBeforeNode(nextNode)), visiblePosition)))
123 nextNode = nextLeafWithSameEditability(nextNode, ContentIsEditable); 123 nextNode = nextLeafWithSameEditability(nextNode, ContentIsEditable);
124 124
125 while (nextNode && !nextNode->isShadowRoot()) { 125 while (nextNode && !nextNode->isShadowRoot()) {
126 if (highestEditableRoot(firstPositionInOrBeforeNode(nextNode), editableT ype) != highestRoot) 126 if (highestEditableRoot(firstPositionInOrBeforeNode(nextNode), editableT ype) != highestRoot)
127 break; 127 break;
128 128
129 Position pos; 129 Position pos;
130 pos = Position::editingPositionOf(nextNode, caretMinOffset(nextNode)); 130 pos = Position::editingPositionOf(nextNode, caretMinOffset(nextNode));
131 131
132 if (pos.isCandidate()) 132 if (isVisuallyEquivalentCandidate(pos))
133 return pos; 133 return pos;
134 134
135 nextNode = nextLeafWithSameEditability(nextNode, editableType); 135 nextNode = nextLeafWithSameEditability(nextNode, editableType);
136 } 136 }
137 return Position(); 137 return Position();
138 } 138 }
139 139
140 class CachedLogicallyOrderedLeafBoxes { 140 class CachedLogicallyOrderedLeafBoxes {
141 public: 141 public:
142 CachedLogicallyOrderedLeafBoxes(); 142 CachedLogicallyOrderedLeafBoxes();
(...skipping 1445 matching lines...) Expand 10 before | Expand all | Expand 10 after
1588 if (isHTMLBRElement(*position1.anchorNode())) 1588 if (isHTMLBRElement(*position1.anchorNode()))
1589 return false; 1589 return false;
1590 1590
1591 if (position1.computeEditingOffset() == position2.computeEditingOffset() ) 1591 if (position1.computeEditingOffset() == position2.computeEditingOffset() )
1592 return false; 1592 return false;
1593 1593
1594 if (!position1.anchorNode()->isTextNode() && !position2.anchorNode()->is TextNode()) 1594 if (!position1.anchorNode()->isTextNode() && !position2.anchorNode()->is TextNode())
1595 return true; 1595 return true;
1596 } 1596 }
1597 1597
1598 if (isHTMLBRElement(*position1.anchorNode()) && position2.isCandidate()) 1598 if (isHTMLBRElement(*position1.anchorNode()) && isVisuallyEquivalentCandidat e(position2))
1599 return true; 1599 return true;
1600 1600
1601 if (isHTMLBRElement(*position2.anchorNode()) && position1.isCandidate()) 1601 if (isHTMLBRElement(*position2.anchorNode()) && isVisuallyEquivalentCandidat e(position1))
1602 return true; 1602 return true;
1603 1603
1604 if (!inSameContainingBlockFlowElement(position1.anchorNode(), position2.anch orNode())) 1604 if (!inSameContainingBlockFlowElement(position1.anchorNode(), position2.anch orNode()))
1605 return true; 1605 return true;
1606 1606
1607 if (position1.anchorNode()->isTextNode() && !inRenderedText(position1)) 1607 if (position1.anchorNode()->isTextNode() && !inRenderedText(position1))
1608 return false; 1608 return false;
1609 1609
1610 if (position2.anchorNode()->isTextNode() && !inRenderedText(position2)) 1610 if (position2.anchorNode()->isTextNode() && !inRenderedText(position2))
1611 return false; 1611 return false;
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1946 { 1946 {
1947 return mostBackwardCaretPosition<EditingStrategy>(position, rule); 1947 return mostBackwardCaretPosition<EditingStrategy>(position, rule);
1948 } 1948 }
1949 1949
1950 PositionInComposedTree mostBackwardCaretPosition(const PositionInComposedTree& p osition, EditingBoundaryCrossingRule rule) 1950 PositionInComposedTree mostBackwardCaretPosition(const PositionInComposedTree& p osition, EditingBoundaryCrossingRule rule)
1951 { 1951 {
1952 return mostBackwardCaretPosition<EditingInComposedTreeStrategy>(position, ru le); 1952 return mostBackwardCaretPosition<EditingInComposedTreeStrategy>(position, ru le);
1953 } 1953 }
1954 1954
1955 } 1955 }
OLDNEW
« no previous file with comments | « Source/core/editing/VisiblePosition.cpp ('k') | Source/core/editing/commands/InsertParagraphSeparatorCommand.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698