| Index: Source/WebCore/page/Frame.cpp
|
| diff --git a/Source/WebCore/page/Frame.cpp b/Source/WebCore/page/Frame.cpp
|
| index 3e4bb2ea28f0e39f82a7e488306b3a0fe3a2c0c4..548e4668ed2f854973ddf3712c66a37d5e757b5b 100644
|
| --- a/Source/WebCore/page/Frame.cpp
|
| +++ b/Source/WebCore/page/Frame.cpp
|
| @@ -804,6 +804,31 @@ Document* Frame::documentAtPoint(const IntPoint& point)
|
| return result.innerNode() ? result.innerNode()->document() : 0;
|
| }
|
|
|
| +PassRefPtr<Range> Frame::rangeForPoint(const IntPoint& framePoint)
|
| +{
|
| + VisiblePosition position = visiblePositionForPoint(framePoint);
|
| + if (position.isNull())
|
| + return 0;
|
| +
|
| + VisiblePosition previous = position.previous();
|
| + if (previous.isNotNull()) {
|
| + RefPtr<Range> previousCharacterRange = makeRange(previous, position);
|
| + IntRect rect = editor()->firstRectForRange(previousCharacterRange.get());
|
| + if (rect.contains(framePoint))
|
| + return previousCharacterRange.release();
|
| + }
|
| +
|
| + VisiblePosition next = position.next();
|
| + if (next.isNotNull()) {
|
| + RefPtr<Range> nextCharacterRange = makeRange(position, next);
|
| + IntRect rect = editor()->firstRectForRange(nextCharacterRange.get());
|
| + if (rect.contains(framePoint))
|
| + return nextCharacterRange.release();
|
| + }
|
| +
|
| + return 0;
|
| +}
|
| +
|
| void Frame::createView(const IntSize& viewportSize,
|
| const Color& backgroundColor, bool transparent,
|
| const IntSize& fixedLayoutSize, bool useFixedLayout,
|
|
|