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:
@ -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:
|
||||
|
Reference in New Issue
Block a user