| Index: Source/web/WebLocalFrameImpl.cpp
|
| diff --git a/Source/web/WebLocalFrameImpl.cpp b/Source/web/WebLocalFrameImpl.cpp
|
| index 657ef0749a48fe71afbb43b7a7abc8ee5a761b61..f29dcebd1c3603e607cd779bf39b8d131621c80b 100644
|
| --- a/Source/web/WebLocalFrameImpl.cpp
|
| +++ b/Source/web/WebLocalFrameImpl.cpp
|
| @@ -1023,7 +1023,7 @@ WebRange WebLocalFrameImpl::markedRange() const
|
| return frame()->inputMethodController().compositionRange();
|
| }
|
|
|
| -bool WebLocalFrameImpl::firstRectForCharacterRange(unsigned location, unsigned length, WebRect& rect) const
|
| +bool WebLocalFrameImpl::firstRectForCharacterRange(unsigned location, unsigned length, WebRect& rectInViewport) const
|
| {
|
| if ((location + length < location) && (location + length))
|
| length = 0;
|
| @@ -1034,17 +1034,17 @@ bool WebLocalFrameImpl::firstRectForCharacterRange(unsigned location, unsigned l
|
| if (!range)
|
| return false;
|
| IntRect intRect = frame()->editor().firstRectForRange(range.get());
|
| - rect = WebRect(intRect);
|
| - rect = frame()->view()->contentsToWindow(rect);
|
| + rectInViewport = WebRect(intRect);
|
| + rectInViewport = frame()->view()->contentsToViewport(rectInViewport);
|
| return true;
|
| }
|
|
|
| -size_t WebLocalFrameImpl::characterIndexForPoint(const WebPoint& webPoint) const
|
| +size_t WebLocalFrameImpl::characterIndexForPoint(const WebPoint& pointInViewport) const
|
| {
|
| if (!frame())
|
| return kNotFound;
|
|
|
| - IntPoint point = frame()->view()->windowToContents(webPoint);
|
| + IntPoint point = frame()->view()->viewportToContents(pointInViewport);
|
| HitTestResult result = frame()->eventHandler().hitTestResultAtPoint(point, HitTestRequest::ReadOnly | HitTestRequest::Active);
|
| RefPtrWillBeRawPtr<Range> range = frame()->rangeForPoint(result.roundedPointInInnerNodeFrame());
|
| if (!range)
|
| @@ -1187,9 +1187,9 @@ bool WebLocalFrameImpl::selectWordAroundCaret()
|
| return frame()->selection().selectWordAroundPosition(selection.selection().visibleStart());
|
| }
|
|
|
| -void WebLocalFrameImpl::selectRange(const WebPoint& base, const WebPoint& extent)
|
| +void WebLocalFrameImpl::selectRange(const WebPoint& baseInViewport, const WebPoint& extentInViewport)
|
| {
|
| - moveRangeSelection(base, extent);
|
| + moveRangeSelection(baseInViewport, extentInViewport);
|
| }
|
|
|
| void WebLocalFrameImpl::selectRange(const WebRange& webRange)
|
| @@ -1198,29 +1198,32 @@ void WebLocalFrameImpl::selectRange(const WebRange& webRange)
|
| frame()->selection().setSelectedRange(range.get(), VP_DEFAULT_AFFINITY, FrameSelection::NonDirectional, NotUserTriggered);
|
| }
|
|
|
| -void WebLocalFrameImpl::moveRangeSelectionExtent(const WebPoint& point, WebFrame::TextGranularity granularity)
|
| +void WebLocalFrameImpl::moveRangeSelectionExtent(const WebPoint& pointInViewport, WebFrame::TextGranularity granularity)
|
| {
|
| blink::TextGranularity blinkGranularity = blink::CharacterGranularity;
|
| if (granularity == WebFrame::WordGranularity)
|
| blinkGranularity = blink::WordGranularity;
|
| - frame()->selection().moveRangeSelectionExtent(visiblePositionForWindowPoint(point), blinkGranularity);
|
| + frame()->selection().moveRangeSelectionExtent(visiblePositionForViewportPoint(pointInViewport), blinkGranularity);
|
| }
|
|
|
| -void WebLocalFrameImpl::moveRangeSelection(const WebPoint& base, const WebPoint& extent, WebFrame::TextGranularity granularity)
|
| +void WebLocalFrameImpl::moveRangeSelection(const WebPoint& baseInViewport, const WebPoint& extentInViewport, WebFrame::TextGranularity granularity)
|
| {
|
| blink::TextGranularity blinkGranularity = blink::CharacterGranularity;
|
| if (granularity == WebFrame::WordGranularity)
|
| blinkGranularity = blink::WordGranularity;
|
| - frame()->selection().moveRangeSelection(visiblePositionForWindowPoint(base), visiblePositionForWindowPoint(extent), blinkGranularity);
|
| + frame()->selection().moveRangeSelection(
|
| + visiblePositionForViewportPoint(baseInViewport),
|
| + visiblePositionForViewportPoint(extentInViewport),
|
| + blinkGranularity);
|
| }
|
|
|
| -void WebLocalFrameImpl::moveCaretSelection(const WebPoint& point)
|
| +void WebLocalFrameImpl::moveCaretSelection(const WebPoint& pointInViewport)
|
| {
|
| Element* editable = frame()->selection().rootEditableElement();
|
| if (!editable)
|
| return;
|
|
|
| - VisiblePosition position = visiblePositionForWindowPoint(point);
|
| + VisiblePosition position = visiblePositionForViewportPoint(pointInViewport);
|
| frame()->selection().moveTo(position, UserTriggered);
|
| }
|
|
|
| @@ -1259,17 +1262,10 @@ void WebLocalFrameImpl::setCaretVisible(bool visible)
|
| frame()->selection().setCaretVisible(visible);
|
| }
|
|
|
| -VisiblePosition WebLocalFrameImpl::visiblePositionForWindowPoint(const WebPoint& point)
|
| +VisiblePosition WebLocalFrameImpl::visiblePositionForViewportPoint(const WebPoint& pointInViewport)
|
| {
|
| - // FIXME(bokan): crbug.com/371902 - These scale/pinch transforms shouldn't
|
| - // be ad hoc and explicit.
|
| - PinchViewport& pinchViewport = frame()->page()->frameHost().pinchViewport();
|
| - FloatPoint unscaledPoint(point);
|
| - unscaledPoint.scale(1 / view()->pageScaleFactor(), 1 / view()->pageScaleFactor());
|
| - unscaledPoint.moveBy(pinchViewport.visibleRect().location());
|
| -
|
| HitTestRequest request = HitTestRequest::Move | HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::IgnoreClipping;
|
| - HitTestResult result(frame()->view()->windowToContents(roundedIntPoint(unscaledPoint)));
|
| + HitTestResult result(frame()->view()->viewportToContents(pointInViewport));
|
| frame()->document()->layoutView()->layer()->hitTest(request, result);
|
|
|
| if (Node* node = result.innerNode())
|
|
|