Bug 942736 - Account for hidden margins when validating viewport metrics. r=kats

This commit is contained in:
Eugen Sawin 2014-10-29 14:06:55 +01:00
Родитель 0ffab26093
Коммит 33ce39f7b1
2 изменённых файлов: 8 добавлений и 7 удалений

Просмотреть файл

@ -1029,6 +1029,11 @@ class JavaPanZoomController
float zoomFactor = viewportMetrics.zoomFactor;
RectF pageRect = viewportMetrics.getPageRect();
RectF viewport = viewportMetrics.getViewport();
RectF maxMargins = mTarget.getMaxMargins();
RectF margins = new RectF(Math.max(maxMargins.left, viewportMetrics.marginLeft),
Math.max(maxMargins.top, viewportMetrics.marginTop),
Math.max(maxMargins.right, viewportMetrics.marginRight),
Math.max(maxMargins.bottom, viewportMetrics.marginBottom));
float focusX = viewport.width() / 2.0f;
float focusY = viewport.height() / 2.0f;
@ -1050,18 +1055,14 @@ class JavaPanZoomController
// Ensure minZoomFactor keeps the page at least as big as the viewport.
if (pageRect.width() > 0) {
float pageWidth = pageRect.width() +
viewportMetrics.marginLeft +
viewportMetrics.marginRight;
float pageWidth = pageRect.width() + margins.left + margins.right;
float scaleFactor = viewport.width() / pageWidth;
minZoomFactor = Math.max(minZoomFactor, zoomFactor * scaleFactor);
if (viewport.width() > pageWidth)
focusX = 0.0f;
}
if (pageRect.height() > 0) {
float pageHeight = pageRect.height() +
viewportMetrics.marginTop +
viewportMetrics.marginBottom;
float pageHeight = pageRect.height() + margins.top + margins.bottom;
float scaleFactor = viewport.height() / pageHeight;
minZoomFactor = Math.max(minZoomFactor, zoomFactor * scaleFactor);
if (viewport.height() > pageHeight)

Просмотреть файл

@ -93,7 +93,7 @@ public class LayerMarginsAnimator {
+ ", \"bottom\" : " + bottom + ", \"left\" : " + left + " }"));
}
RectF getMaxMargins() {
synchronized RectF getMaxMargins() {
return mMaxMargins;
}