mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 17:25:36 +00:00
Bug 1263975 - XUL scrollbox (e.g. the tab bar) should respond to pixel scrolls by pixel scrolling. r=Enn
MozReview-Commit-ID: FWSBkg9wM7r --HG-- extra : amend_source : a872853f6801635cb695738658d8ffb0ba26d39b
This commit is contained in:
parent
346962e281
commit
0c0bc85230
@ -497,12 +497,12 @@
|
||||
</implementation>
|
||||
|
||||
<handlers>
|
||||
<handler event="DOMMouseScroll"><![CDATA[
|
||||
<handler event="wheel"><![CDATA[
|
||||
if (this.orient == "vertical") {
|
||||
// prevent horizontal scrolling from scrolling a vertical scrollbox
|
||||
if (event.axis == event.HORIZONTAL_AXIS)
|
||||
return;
|
||||
this.scrollByIndex(event.detail);
|
||||
if (event.deltaMode == event.DOM_DELTA_PIXEL)
|
||||
this.scrollByPixels(event.deltaY);
|
||||
else
|
||||
this.scrollByIndex(event.deltaY);
|
||||
}
|
||||
// We allow vertical scrolling to scroll a horizontal scrollbox
|
||||
// because many users have a vertical scroll wheel but no
|
||||
@ -511,12 +511,18 @@
|
||||
// and mouse wheels that support simultaneous scrolling in both axes.
|
||||
// We do this by scrolling only when the last two scroll events were
|
||||
// on the same axis as the current scroll event.
|
||||
// For diagonal scroll events we only respect the dominant axis.
|
||||
else {
|
||||
let isVertical = event.axis == event.VERTICAL_AXIS;
|
||||
let isVertical = Math.abs(event.deltaY) > Math.abs(event.deltaX);
|
||||
let delta = isVertical ? event.deltaY : event.deltaX;
|
||||
let scrollByDelta = isVertical && this._isRTLScrollbox ? -delta : delta;
|
||||
|
||||
if (this._prevMouseScrolls.every(prev => prev == isVertical))
|
||||
this.scrollByIndex(isVertical && this._isRTLScrollbox ? -event.detail :
|
||||
event.detail);
|
||||
if (this._prevMouseScrolls.every(prev => prev == isVertical)) {
|
||||
if (event.deltaMode == event.DOM_DELTA_PIXEL)
|
||||
this.scrollByPixels(scrollByDelta);
|
||||
else
|
||||
this.scrollByIndex(scrollByDelta);
|
||||
}
|
||||
|
||||
if (this._prevMouseScrolls.length > 1)
|
||||
this._prevMouseScrolls.shift();
|
||||
@ -527,11 +533,6 @@
|
||||
event.preventDefault();
|
||||
]]></handler>
|
||||
|
||||
<handler event="MozMousePixelScroll"><![CDATA[
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
]]></handler>
|
||||
|
||||
<handler event="underflow" phase="capturing"><![CDATA[
|
||||
// filter underflow events which were dispatched on nested scrollboxes
|
||||
if (event.target != this)
|
||||
|
Loading…
Reference in New Issue
Block a user