| Index: Source/web/WebLocalFrameImpl.cpp
|
| diff --git a/Source/web/WebLocalFrameImpl.cpp b/Source/web/WebLocalFrameImpl.cpp
|
| index c508c7f825670dc38d164d6192373edcbba25fd8..6c7b6050fc5d04724991d02081c9abe49a8080aa 100644
|
| --- a/Source/web/WebLocalFrameImpl.cpp
|
| +++ b/Source/web/WebLocalFrameImpl.cpp
|
| @@ -1162,6 +1162,22 @@ void WebLocalFrameImpl::selectRange(const WebRange& webRange)
|
| frame()->selection().setSelectedRange(range.get(), VP_DEFAULT_AFFINITY, FrameSelection::NonDirectional, NotUserTriggered);
|
| }
|
|
|
| +void WebLocalFrameImpl::moveRangeSelectionExtent(const WebPoint& point)
|
| +{
|
| + VisibleSelection currentSelection = frame()->selection().selection();
|
| +
|
| + VisiblePosition basePosition = currentSelection.isBaseFirst() ?
|
| + currentSelection.visibleStart() : currentSelection.visibleEnd();
|
| + VisiblePosition extentPosition = visiblePositionForWindowPoint(point);
|
| +
|
| + // Prevent the selection from collapsing.
|
| + if (comparePositions(basePosition, extentPosition) == 0)
|
| + return;
|
| +
|
| + VisibleSelection newSelection = VisibleSelection(basePosition, extentPosition);
|
| + frame()->selection().setSelection(newSelection, CharacterGranularity);
|
| +}
|
| +
|
| void WebLocalFrameImpl::moveRangeSelection(const WebPoint& base, const WebPoint& extent)
|
| {
|
| VisiblePosition basePosition = visiblePositionForWindowPoint(base);
|
|
|