From 38fa2d78da5bb4da846b8ceb2c8c4643b744d690 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 3 Aug 2016 13:00:07 -0700 Subject: [PATCH] Support DOMMouseScroll event (Firefox) --- src/xterm.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/xterm.js b/src/xterm.js index ffefbb39..59746ce7 100644 --- a/src/xterm.js +++ b/src/xterm.js @@ -407,12 +407,23 @@ Viewport.prototype.onWheel = function(ev) { // Fallback to WheelEvent.DOM_DELTA_PIXEL var multiplier = 1; - if (ev.deltaMode === WheelEvent.DOM_DELTA_LINE) { + var delta = 0; + if (ev.type === 'DOMMouseScroll') { + if (ev.axis !== MouseScrollEvent.VERTICAL_AXIS) { + return; + } + delta = ev.detail; + // Firefox treats ev.detail as lines, not pixels multiplier = this.currentRowHeight; - } else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) { - multiplier = this.currentRowHeight * this.terminal.rows; + } else if (ev.type === 'mousewheel') { + delta = ev.deltaY + if (ev.deltaMode === WheelEvent.DOM_DELTA_LINE) { + multiplier = this.currentRowHeight; + } else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) { + multiplier = this.currentRowHeight * this.terminal.rows; + } } - this.viewportElement.scrollTop += ev.deltaY * multiplier; + this.viewportElement.scrollTop += delta * multiplier; // Prevent the page from scrolling when the terminal scrolls ev.preventDefault(); };