diff options
author | George Mount <mount@google.com> | 2012-08-23 10:41:51 -0700 |
---|---|---|
committer | George Mount <mount@google.com> | 2012-08-23 10:41:51 -0700 |
commit | c657ea41ccfd187ba85feb78edcf4ac947afb2e7 (patch) | |
tree | 9d8f285da3296c4396844bee8ffba0b7cda531f7 /Source/WebKit | |
parent | 3dca44542840785fe67ba613c7fb0ded50e09bb4 (diff) | |
download | external_webkit-c657ea41ccfd187ba85feb78edcf4ac947afb2e7.zip external_webkit-c657ea41ccfd187ba85feb78edcf4ac947afb2e7.tar.gz external_webkit-c657ea41ccfd187ba85feb78edcf4ac947afb2e7.tar.bz2 |
Text around selection falls back to caret rect when not in text.
Bug 7025068
When the input field is empty, the selection was appearing outside
the input field. With this change, we fall back to the caret rect
for the text around the caret.
Change-Id: Ie6122ec34a0ae96994dc91b002bdcb3403b753eb
Diffstat (limited to 'Source/WebKit')
-rw-r--r-- | Source/WebKit/android/jni/WebViewCore.cpp | 6 | ||||
-rw-r--r-- | Source/WebKit/android/jni/WebViewCore.h | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/Source/WebKit/android/jni/WebViewCore.cpp b/Source/WebKit/android/jni/WebViewCore.cpp index 920119b..aa38222 100644 --- a/Source/WebKit/android/jni/WebViewCore.cpp +++ b/Source/WebKit/android/jni/WebViewCore.cpp @@ -1576,7 +1576,7 @@ void WebViewCore::setSelectionCaretInfo(SelectText* selectTextContainer, selectTextContainer->setCaretRect(handleId, caretRect); selectTextContainer->setHandleType(handleId, handleType); selectTextContainer->setTextRect(handleId, - positionToTextRect(pos, affinity, offset)); + positionToTextRect(pos, affinity, offset, caretRect)); } bool WebViewCore::isLtr(const Position& position) @@ -1684,9 +1684,9 @@ SelectText* WebViewCore::createSelectText(const VisibleSelection& selection) } IntRect WebViewCore::positionToTextRect(const Position& position, - EAffinity affinity, const WebCore::IntPoint& offset) + EAffinity affinity, const WebCore::IntPoint& offset, const IntRect& caretRect) { - IntRect textRect; + IntRect textRect = caretRect; InlineBox* inlineBox; int offsetIndex; position.getInlineBoxAndOffset(affinity, inlineBox, offsetIndex); diff --git a/Source/WebKit/android/jni/WebViewCore.h b/Source/WebKit/android/jni/WebViewCore.h index 6e3604d..4e223b3 100644 --- a/Source/WebKit/android/jni/WebViewCore.h +++ b/Source/WebKit/android/jni/WebViewCore.h @@ -728,7 +728,8 @@ namespace android { WebCore::IntRect absoluteClientRect(WebCore::Node* node, WebCore::LayerAndroid* layer); static WebCore::IntRect positionToTextRect(const WebCore::Position& position, - WebCore::EAffinity affinity, const WebCore::IntPoint& offset); + WebCore::EAffinity affinity, const WebCore::IntPoint& offset, + const WebCore::IntRect& caretRect); static bool isLtr(const WebCore::Position& position); static WebCore::VisiblePosition trimSelectionPosition( const WebCore::VisiblePosition& start, |