Bug 732364 - Ensure _elementCanScroll doesn't return true when the irrelevant axis is scrollable. r=Cwiiis

This commit is contained in:
Kartikaya Gupta 2012-05-02 13:17:38 -04:00
Родитель b1c8c4b2bd
Коммит 30569ccd2c
1 изменённых файлов: 11 добавлений и 17 удалений

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

@ -2567,6 +2567,13 @@ var BrowserEventHandler = {
// the user wanted, and neither can any non-root sub-frame, cancel the
// override so that Java can handle panning the main document.
let data = JSON.parse(aData);
// round the scroll amounts because they come in as floats and might be
// subject to minor rounding errors because of zoom values. I've seen values
// like 0.99 come in here and get truncated to 0; this avoids that problem.
data.x = Math.round(data.x);
data.y = Math.round(data.y);
if (this._firstScrollEvent) {
while (this._scrollableElement != null && !this._elementCanScroll(this._scrollableElement, data.x, data.y))
this._scrollableElement = this._findScrollableElement(this._scrollableElement, false);
@ -2829,24 +2836,11 @@ var BrowserEventHandler = {
},
_elementCanScroll: function(elem, x, y) {
let scrollX = true;
let scrollY = true;
let scrollX = (x < 0 && elem.scrollLeft > 0)
|| (x > 0 && elem.scrollLeft < (elem.scrollWidth - elem.clientWidth));
if (x < 0) {
if (elem.scrollLeft <= 0) {
scrollX = false;
}
} else if (elem.scrollLeft >= (elem.scrollWidth - elem.clientWidth)) {
scrollX = false;
}
if (y < 0) {
if (elem.scrollTop <= 0) {
scrollY = false;
}
} else if (elem.scrollTop >= (elem.scrollHeight - elem.clientHeight)) {
scrollY = false;
}
let scrollY = (y < 0 && elem.scrollTop > 0)
|| (y > 0 && elem.scrollTop < (elem.scrollHeight - elem.clientHeight));
return scrollX || scrollY;
}