diff options
author | Andrew Dolgov <[email protected]> | 2019-12-09 22:42:43 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2019-12-09 22:42:43 +0300 |
commit | e7dd634183154949fab7aa0b00844eb645cb87e5 (patch) | |
tree | 22ef8eeb2cf9295c26a97f8961da11b6d038d0a3 /js/Article.js | |
parent | 008afb97a9c7dc1ef62e0e87fa73cf46aeb09f40 (diff) |
exp: auto-disable smooth scrolling for repeat hotkey events
Diffstat (limited to 'js/Article.js')
-rw-r--r-- | js/Article.js | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/js/Article.js b/js/Article.js index 468388789..9c7ccf074 100644 --- a/js/Article.js +++ b/js/Article.js @@ -2,6 +2,7 @@ /* global __, ngettext */ define(["dojo/_base/declare"], function (declare) { Article = { + _scroll_reset_timeout: false, getScoreClass: function (score) { if (score > 500) { return "score-high"; @@ -314,33 +315,42 @@ define(["dojo/_base/declare"], function (declare) { else return 0; }, - scrollByPages: function (offset) { + scrollByPages: function (page_offset, event) { + let elem; + if (!App.isCombinedMode()) { - const ci = $("content-insert"); - if (ci) { - ci.scrollTop += ci.offsetHeight * offset * 0.99; - } + elem = $("content-insert"); } else { - const hi = $("headlines-frame"); - if (hi) { - hi.scrollTop += hi.offsetHeight * offset * 0.99; - } - + elem = $("headlines-frame"); } + + const offset = elem.offsetHeight * page_offset * 0.99; + + this.scroll(offset, event); }, - scroll: function (offset) { + scroll: function (offset, event) { + + let elem; + if (!App.isCombinedMode()) { - const ci = $("content-insert"); - if (ci) { - ci.scrollTop += offset; - } + elem = $("content-insert"); } else { - const hi = $("headlines-frame"); - if (hi) { - hi.scrollTop += offset; - } + elem = $("headlines-frame"); + } + + if (event.repeat) { + elem.addClassName("forbid-smooth-scroll"); + window.clearTimeout(this._scroll_reset_timeout); + this._scroll_reset_timeout = window.setTimeout(() => { + if (elem) elem.removeClassName("forbid-smooth-scroll"); + }, 250) + + } else { + elem.removeClassName("forbid-smooth-scroll"); } + + elem.scrollTop += offset; }, mouseIn: function (id) { this.post_under_pointer = id; |