Index: Source/core/editing/VisibleUnits.cpp |
diff --git a/Source/core/editing/VisibleUnits.cpp b/Source/core/editing/VisibleUnits.cpp |
index 73387b78649bf6738235c489eacfe16437efa813..793ead865c30842253837541365913fdd152d6e5 100644 |
--- a/Source/core/editing/VisibleUnits.cpp |
+++ b/Source/core/editing/VisibleUnits.cpp |
@@ -351,7 +351,7 @@ static VisiblePosition visualWordPosition(const VisiblePosition& visiblePosition |
if (visiblePosition.isNull()) |
return VisiblePosition(); |
- TextDirection blockDirection = directionOfEnclosingBlock(visiblePosition.deepEquivalent()); |
+ bool blockDirection = isEnclosingBoxHasLeftToRightDirection(visiblePosition.deepEquivalent()); |
yosin_UTC9
2014/10/08 08:32:51
nit: Please rename |blockDirection| to |isLeftToRi
Habib Virji
2014/10/08 08:40:27
Done.
|
InlineBox* previouslyVisitedBox = 0; |
VisiblePosition current = visiblePosition; |
TextBreakIterator* iter = 0; |
@@ -397,7 +397,7 @@ static VisiblePosition visualWordPosition(const VisiblePosition& visiblePosition |
int offsetInIterator = offsetInBox - textBox->start() + previousBoxLength; |
bool isWordBreak; |
- bool boxHasSameDirectionalityAsBlock = box->direction() == blockDirection; |
+ bool boxHasSameDirectionalityAsBlock = blockDirection ? box->direction() == LTR : box->direction() == RTL; |
bool movingBackward = (direction == MoveLeft && box->direction() == LTR) || (direction == MoveRight && box->direction() == RTL); |
if ((skipsSpaceWhenMovingRight && boxHasSameDirectionalityAsBlock) |
|| (!skipsSpaceWhenMovingRight && movingBackward)) { |
@@ -422,10 +422,9 @@ VisiblePosition leftWordPosition(const VisiblePosition& visiblePosition, bool sk |
leftWordBreak = visiblePosition.honorEditingBoundaryAtOrBefore(leftWordBreak); |
// FIXME: How should we handle a non-editable position? |
- if (leftWordBreak.isNull() && isEditablePosition(visiblePosition.deepEquivalent())) { |
- TextDirection blockDirection = directionOfEnclosingBlock(visiblePosition.deepEquivalent()); |
- leftWordBreak = blockDirection == LTR ? startOfEditableContent(visiblePosition) : endOfEditableContent(visiblePosition); |
- } |
+ if (leftWordBreak.isNull() && isEditablePosition(visiblePosition.deepEquivalent())) |
+ leftWordBreak = isEnclosingBoxHasLeftToRightDirection(visiblePosition.deepEquivalent()) ? startOfEditableContent(visiblePosition) : endOfEditableContent(visiblePosition); |
+ |
return leftWordBreak; |
} |
@@ -435,10 +434,9 @@ VisiblePosition rightWordPosition(const VisiblePosition& visiblePosition, bool s |
rightWordBreak = visiblePosition.honorEditingBoundaryAtOrBefore(rightWordBreak); |
// FIXME: How should we handle a non-editable position? |
- if (rightWordBreak.isNull() && isEditablePosition(visiblePosition.deepEquivalent())) { |
- TextDirection blockDirection = directionOfEnclosingBlock(visiblePosition.deepEquivalent()); |
- rightWordBreak = blockDirection == LTR ? endOfEditableContent(visiblePosition) : startOfEditableContent(visiblePosition); |
- } |
+ if (rightWordBreak.isNull() && isEditablePosition(visiblePosition.deepEquivalent())) |
+ rightWordBreak = isEnclosingBoxHasLeftToRightDirection(visiblePosition.deepEquivalent()) ? endOfEditableContent(visiblePosition) : startOfEditableContent(visiblePosition); |
+ |
return rightWordBreak; |
} |