diff options
author | George Mount <mount@google.com> | 2012-06-12 08:33:08 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-06-12 08:33:08 -0700 |
commit | 3e82ffbbe13d0e0f35e6603973b9a217def98183 (patch) | |
tree | 6ef4881534ff427eeeb7773665427d6328bca6f1 /Source | |
parent | 85bb7725195ca6b94ee97d0a95af9eed6d7ceaa5 (diff) | |
parent | 40369ea6114f406fef50d4241335dd8613372748 (diff) | |
download | external_webkit-3e82ffbbe13d0e0f35e6603973b9a217def98183.zip external_webkit-3e82ffbbe13d0e0f35e6603973b9a217def98183.tar.gz external_webkit-3e82ffbbe13d0e0f35e6603973b9a217def98183.tar.bz2 |
Merge "Add layer clip check to hide handles when not visible."
Diffstat (limited to 'Source')
-rw-r--r-- | Source/WebKit/android/nav/WebView.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/WebKit/android/nav/WebView.cpp b/Source/WebKit/android/nav/WebView.cpp index 8b6d5f0..7fa3eae 100644 --- a/Source/WebKit/android/nav/WebView.cpp +++ b/Source/WebKit/android/nav/WebView.cpp @@ -740,6 +740,20 @@ bool isHandleLeft(SelectText::HandleId handleId) return (selectText->getHandleType(handleId) == SelectText::LeftHandle); } +bool isPointVisible(int layerId, int contentX, int contentY) +{ + bool isVisible = true; + const TransformationMatrix* transform = getLayerTransform(layerId); + if (transform) { + // layer is guaranteed to be non-NULL because of getLayerTransform + LayerAndroid* layer = m_baseLayer->findById(layerId); + IntRect rect = layer->visibleContentArea(); + rect = transform->mapRect(rect); + isVisible = rect.contains(contentX, contentY); + } + return isVisible; +} + private: // local state for WebView bool m_isDrawingPaused; // private to getFrameCache(); other functions operate in a different thread @@ -1304,6 +1318,13 @@ static bool nativeIsHandleLeft(JNIEnv *env, jobject obj, jint nativeView, return webview->isHandleLeft(static_cast<SelectText::HandleId>(handleId)); } +static bool nativeIsPointVisible(JNIEnv *env, jobject obj, jint nativeView, + jint layerId, jint contentX, jint contentY) +{ + WebView* webview = reinterpret_cast<WebView*>(nativeView); + return webview->isPointVisible(layerId, contentX, contentY); +} + /* * JNI registration */ @@ -1384,6 +1405,8 @@ static JNINativeMethod gJavaWebViewMethods[] = { (void*) nativeFindMaxVisibleRect }, { "nativeIsHandleLeft", "(II)Z", (void*) nativeIsHandleLeft }, + { "nativeIsPointVisible", "(IIII)Z", + (void*) nativeIsPointVisible }, }; int registerWebView(JNIEnv* env) |