зеркало из https://github.com/mozilla/gecko-dev.git
Bug 732364 - Ensure _elementCanScroll doesn't return true when the irrelevant axis is scrollable. r=Cwiiis
This commit is contained in:
Родитель
b1c8c4b2bd
Коммит
30569ccd2c
|
@ -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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче