am 4350e145: Move the full screen\'s matching embedded view to be fully visible so that the touch will always work.

Merge commit '4350e1451c9f884fabcabfda915b58a26c6ebf5f' into eclair-mr2-plus-aosp

* commit '4350e1451c9f884fabcabfda915b58a26c6ebf5f':
  Move the full screen's matching embedded view to be
This commit is contained in:
Grace Kloba
2009-12-21 18:09:47 -08:00
committed by Android Git Automerger

View File

@ -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: