summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrace Kloba <klobag@google.com>2009-12-22 10:15:46 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-12-22 10:15:46 -0800
commit7853722721e9920372103b9a282218fc47706e3f (patch)
tree637e6d62ebe390a682446effb38cc0d2272dc5fe
parenta8181d53015fa2187e752fd0192947fe299d14e7 (diff)
parent49a791a08b074aac438f8b6b32ae8c2860717447 (diff)
downloadframeworks_base-7853722721e9920372103b9a282218fc47706e3f.zip
frameworks_base-7853722721e9920372103b9a282218fc47706e3f.tar.gz
frameworks_base-7853722721e9920372103b9a282218fc47706e3f.tar.bz2
am 49a791a0: am 4350e145: Move the full screen\'s matching embedded view to be fully visible so that the touch will always work.
Merge commit '49a791a08b074aac438f8b6b32ae8c2860717447' * commit '49a791a08b074aac438f8b6b32ae8c2860717447': Move the full screen's matching embedded view to be
-rw-r--r--core/java/android/webkit/WebView.java39
1 files changed, 38 insertions, 1 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index bfe5b41..fb8148b 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -5684,12 +5684,49 @@ public class WebView extends AbsoluteLayout
mFullScreenHolder.setContentView(data.mView);
mFullScreenHolder.setCancelable(false);
mFullScreenHolder.setCanceledOnTouchOutside(false);
+ mFullScreenHolder.show();
}
+ // move the matching embedded view fully into the view so
+ // that touch will be valid instead of rejected due to out
+ // of the visible bounds
+ // TODO: do we need to preserve the original position and
+ // scale so that we can revert it when leaving the full
+ // screen mode?
+ int x = contentToViewX(data.mDocX);
+ int y = contentToViewY(data.mDocY);
+ int width = contentToViewDimension(data.mDocWidth);
+ int height = contentToViewDimension(data.mDocHeight);
+ int viewWidth = getViewWidth();
+ int viewHeight = getViewHeight();
+ int newX = mScrollX;
+ int newY = mScrollY;
+ if (x < mScrollX) {
+ newX = x + (width > viewWidth
+ ? (width - viewWidth) / 2 : 0);
+ } else if (x + width > mScrollX + viewWidth) {
+ newX = x + width - viewWidth - (width > viewWidth
+ ? (width - viewWidth) / 2 : 0);
+ }
+ if (y < mScrollY) {
+ newY = y + (height > viewHeight
+ ? (height - viewHeight) / 2 : 0);
+ } else if (y + height > mScrollY + viewHeight) {
+ newY = y + height - viewHeight - (height > viewHeight
+ ? (height - viewHeight) / 2 : 0);
+ }
+ scrollTo(newX, newY);
+ if (width > viewWidth || height > viewHeight) {
+ mZoomCenterX = viewWidth * .5f;
+ mZoomCenterY = viewHeight * .5f;
+ setNewZoomScale(mActualScale
+ / Math.max((float) width / viewWidth,
+ (float) height / viewHeight), false);
+ }
+ // Now update the bound
mFullScreenHolder.updateBound(contentToViewX(data.mDocX)
- mScrollX, contentToViewY(data.mDocY) - mScrollY,
contentToViewDimension(data.mDocWidth),
contentToViewDimension(data.mDocHeight));
- mFullScreenHolder.show();
break;
case HIDE_FULLSCREEN: