Index: third_party/WebKit/Source/core/editing/FrameSelection.cpp |
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
index b179f6169ea68ec30846fb7b92807c9e86bea756..e750b23dc7924d3b01ed9740078ddea0d384d65c 100644 |
--- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
@@ -176,7 +176,8 @@ const VisibleSelectionInFlatTree& FrameSelection::selectionInFlatTree() const |
void FrameSelection::moveTo(const VisiblePosition &pos, EUserTriggered userTriggered, CursorAlignOnScroll align) |
{ |
SetSelectionOptions options = CloseTyping | ClearTypingStyle | userTriggered; |
- setSelection(VisibleSelection(pos, pos, selection().isDirectional()), options, align); |
+ bool isHandleVisible = userTriggered == UserTriggered; |
+ setSelection(VisibleSelection(pos, pos, selection().isDirectional(), isHandleVisible), options, align); |
} |
void FrameSelection::moveTo(const VisiblePosition &base, const VisiblePosition &extent, EUserTriggered userTriggered) |
@@ -1269,7 +1270,9 @@ bool FrameSelection::selectWordAroundPosition(const VisiblePosition& position) |
VisiblePosition end = endOfWord(position, wordSide); |
String text = plainText(EphemeralRange(start.deepEquivalent(), end.deepEquivalent())); |
if (!text.isEmpty() && !isSeparator(text.characterStartingAt(0))) { |
- setSelection(VisibleSelection(start, end), WordGranularity); |
+ VisibleSelection newSelection(start, end); |
+ newSelection.setIsHandleVisible(selection().isHandleVisible()); |
+ setSelection(newSelection, WordGranularity); |
return true; |
} |
} |
@@ -1303,6 +1306,7 @@ void FrameSelection::moveRangeSelectionExtent(const IntPoint& contentsPoint) |
return; |
VisibleSelection newSelection = granularityStrategy()->updateExtent(contentsPoint, m_frame); |
+ newSelection.setIsHandleVisible(m_selectionEditor->visibleSelection<EditingStrategy>().isHandleVisible()); |
setSelection( |
newSelection, |
FrameSelection::CloseTyping | FrameSelection::ClearTypingStyle | FrameSelection::DoNotClearStrategy | UserTriggered, |
@@ -1313,6 +1317,7 @@ void FrameSelection::moveRangeSelectionExtent(const IntPoint& contentsPoint) |
void FrameSelection::moveRangeSelection(const VisiblePosition& basePosition, const VisiblePosition& extentPosition, TextGranularity granularity) |
{ |
VisibleSelection newSelection(basePosition, extentPosition); |
+ newSelection.setIsHandleVisible(m_selectionEditor->visibleSelection<EditingStrategy>().isHandleVisible()); |
newSelection.expandUsingGranularity(granularity); |
if (newSelection.isNone()) |