diff options
| author | Grace Kloba <klobag@google.com> | 2009-12-22 10:15:46 -0800 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2009-12-22 10:15:46 -0800 |
| commit | 7853722721e9920372103b9a282218fc47706e3f (patch) | |
| tree | 637e6d62ebe390a682446effb38cc0d2272dc5fe | |
| parent | a8181d53015fa2187e752fd0192947fe299d14e7 (diff) | |
| parent | 49a791a08b074aac438f8b6b32ae8c2860717447 (diff) | |
| download | frameworks_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.java | 39 |
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: |
