зеркало из https://github.com/mozilla/gecko-dev.git
Bug 598234 - Fix bad scrolling on resize with formhelper [r=mfinkle]
This commit is contained in:
Родитель
fd3b89d9b2
Коммит
11247f94cf
|
@ -519,8 +519,6 @@
|
||||||
|
|
||||||
<!-- Get position of viewport in device pixels. -->
|
<!-- Get position of viewport in device pixels. -->
|
||||||
<method name="getPosition">
|
<method name="getPosition">
|
||||||
<parameter name="scrollX"/>
|
|
||||||
<parameter name="scrollY"/>
|
|
||||||
<body>
|
<body>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
let scrollX = {}, scrollY = {};
|
let scrollX = {}, scrollY = {};
|
||||||
|
|
|
@ -1968,26 +1968,27 @@ var FormHelperUI = {
|
||||||
let x = (marginLeft + marginRight + margin + aCaretRect.x - aElementRect.x) < viewAreaWidth
|
let x = (marginLeft + marginRight + margin + aCaretRect.x - aElementRect.x) < viewAreaWidth
|
||||||
? aElementRect.x - margin - marginLeft
|
? aElementRect.x - margin - marginLeft
|
||||||
: aCaretRect.x - viewAreaWidth + margin + marginRight;
|
: aCaretRect.x - viewAreaWidth + margin + marginRight;
|
||||||
// use the adjustet Caret Y minus a margin four our visible rect
|
// Use the adjusted Caret Y minus a margin for our visible rect
|
||||||
let y = harmonizedCaretY - margin;
|
let y = harmonizedCaretY - margin;
|
||||||
x *= browser.scale;
|
x *= browser.scale;
|
||||||
y *= browser.scale;
|
y *= browser.scale;
|
||||||
|
|
||||||
let scroll = browser.getPosition(scrollX, scrollY);
|
let scroll = browser.getPosition();
|
||||||
let vis = new Rect(scroll.x, scroll.y, window.innerWidth, window.innerHeight);
|
|
||||||
|
|
||||||
// from here on play with zoomed values
|
// from here on play with zoomed values
|
||||||
// if we want to have it animated, build up zoom rect and animate.
|
// if we want to have it animated, build up zoom rect and animate.
|
||||||
if (enableZoom && browser.scale != zoomLevel) {
|
if (enableZoom && browser.scale != zoomLevel) {
|
||||||
// don't use browser functions they are bogus for this case
|
// don't use browser functions they are bogus for this case
|
||||||
let zoomRatio = zoomLevel / browser.scale;
|
let zoomRatio = zoomLevel / browser.scale;
|
||||||
let newVisW = vis.width / zoomRatio, newVisH = vis.height / zoomRatio;
|
|
||||||
|
let visW = window.innerWidth, visH = window.innerHeight;
|
||||||
|
let newVisW = visW / zoomRatio, newVisH = visH / zoomRatio;
|
||||||
let zoomRect = new Rect(x, y, newVisW, newVisH);
|
let zoomRect = new Rect(x, y, newVisW, newVisH);
|
||||||
|
|
||||||
Browser.animatedZoomTo(zoomRect);
|
Browser.animatedZoomTo(zoomRect);
|
||||||
}
|
}
|
||||||
else { // no zooming at all
|
else { // no zooming at all
|
||||||
browser.scrollBy(x - vis.x, y - vis.y);
|
browser.scrollTo(x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -262,7 +262,7 @@ var Browser = {
|
||||||
getBrowser().style.display = "block";
|
getBrowser().style.display = "block";
|
||||||
|
|
||||||
let curEl = document.activeElement;
|
let curEl = document.activeElement;
|
||||||
if (curEl && curEl.scrollIntoView)
|
if (curEl && curEl.id != "inputhandler-overlay" && curEl.scrollIntoView)
|
||||||
curEl.scrollIntoView(false);
|
curEl.scrollIntoView(false);
|
||||||
}
|
}
|
||||||
window.addEventListener("resize", resizeHandler, false);
|
window.addEventListener("resize", resizeHandler, false);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче