| Index: Source/core/dom/Position.cpp
|
| diff --git a/Source/core/dom/Position.cpp b/Source/core/dom/Position.cpp
|
| index f7bb399d42f1febe46e0eb0341114cf0d6e2a285..8b60a7c1dcf271ada29ee545a853ae7e7583469b 100644
|
| --- a/Source/core/dom/Position.cpp
|
| +++ b/Source/core/dom/Position.cpp
|
| @@ -1188,6 +1188,11 @@ void Position::getInlineBoxAndOffset(EAffinity affinity, TextDirection primaryDi
|
| }
|
| caretOffset = inlineBox->caretLeftmostOffset();
|
| }
|
| + } else if (m_anchorNode->selfOrAncestorHasDirAutoAttribute()) {
|
| + if (inlineBox->bidiLevel() < level)
|
| + caretOffset = inlineBox->caretLeftmostOffset();
|
| + else
|
| + caretOffset = inlineBox->caretRightmostOffset();
|
| } else {
|
| InlineBox* nextBox = inlineBox->nextLeafChildIgnoringLineBreak();
|
| if (!nextBox || nextBox->bidiLevel() < level) {
|
| @@ -1197,10 +1202,7 @@ void Position::getInlineBoxAndOffset(EAffinity affinity, TextDirection primaryDi
|
| break;
|
| inlineBox = prevBox;
|
| }
|
| - if (m_anchorNode->selfOrAncestorHasDirAutoAttribute())
|
| - caretOffset = inlineBox->bidiLevel() < level ? inlineBox->caretLeftmostOffset() : inlineBox->caretRightmostOffset();
|
| - else
|
| - caretOffset = inlineBox->caretLeftmostOffset();
|
| + caretOffset = inlineBox->caretLeftmostOffset();
|
| } else if (nextBox->bidiLevel() > level) {
|
| // Left edge of a "tertiary" run. Set to the right edge of that run.
|
| while (InlineBox* tertiaryBox = inlineBox->nextLeafChildIgnoringLineBreak()) {
|
|
|