Recent checkin adding upstreamDeepEquivalent had it backwards. The helper
we want is downstreamDeepEquivalent, as the deepEquivalent function returns
an upstream position.
* khtml/editing/selection.cpp:
(khtml::Selection::layout): DOWNSTREAM case now uses downstreamDeepEquivalent.
UPSTREAM uses deepEquivalent.
* khtml/editing/visible_position.cpp:
(khtml::VisiblePosition::downstreamDeepEquivalent): New helper, replacing
upstreamDeepEquivalent.
* khtml/editing/visible_position.h
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7767
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2004-10-05 Ken Kocienda <kocienda@apple.com>
+
+ Reviewed by Darin
+
+ Recent checkin adding upstreamDeepEquivalent had it backwards. The helper
+ we want is downstreamDeepEquivalent, as the deepEquivalent function returns
+ an upstream position.
+
+ * khtml/editing/selection.cpp:
+ (khtml::Selection::layout): DOWNSTREAM case now uses downstreamDeepEquivalent.
+ UPSTREAM uses deepEquivalent.
+ * khtml/editing/visible_position.cpp:
+ (khtml::VisiblePosition::downstreamDeepEquivalent): New helper, replacing
+ upstreamDeepEquivalent.
+ * khtml/editing/visible_position.h
+
2004-10-05 David Hyatt <hyatt@apple.com>
New selection gap-filling architecture. Makes the gap-filling much more like NSTextView and puts the responsibility
pos.node()->getDocument()->updateRendering();
switch (m_affinity) {
case DOWNSTREAM:
- pos = VisiblePosition(m_start).deepEquivalent();
+ pos = VisiblePosition(m_start).downstreamDeepEquivalent();
break;
case UPSTREAM:
- pos = VisiblePosition(m_start).upstreamDeepEquivalent();
+ pos = VisiblePosition(m_start).deepEquivalent();
break;
}
m_caretRect = pos.node()->renderer()->caretRect(pos.offset(), false);
pos.node()->getDocument()->updateRendering();
switch (m_affinity) {
case DOWNSTREAM:
- pos = VisiblePosition(m_start).deepEquivalent();
+ pos = VisiblePosition(m_start).downstreamDeepEquivalent();
break;
case UPSTREAM:
- pos = VisiblePosition(m_start).upstreamDeepEquivalent();
+ pos = VisiblePosition(m_start).deepEquivalent();
break;
}
m_caretRect = pos.node()->renderer()->caretRect(pos.offset(), false);
return Position(node, 0);
}
-Position VisiblePosition::upstreamDeepEquivalent() const
+Position VisiblePosition::downstreamDeepEquivalent() const
{
Position pos = m_deepPosition;
- if (pos.isNull() || atStart(pos))
+ if (pos.isNull() || atEnd(pos))
return pos;
Position downstreamTest = pos.downstream(StayInBlock);
Position current = pos;
- while (!atStart(current)) {
- current = previousPosition(current);
+ while (!atEnd(current)) {
+ current = nextPosition(current);
if (isCandidate(current)) {
if (downstreamTest != current.downstream(StayInBlock))
break;
Position position() const { return rangeCompliantEquivalent(m_deepPosition); }
Position deepEquivalent() const { return m_deepPosition; }
- Position upstreamDeepEquivalent() const;
+ Position downstreamDeepEquivalent() const;
friend bool operator==(const VisiblePosition &a, const VisiblePosition &b);