summaryrefslogtreecommitdiff
path: root/js/Article.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2019-12-09 22:42:43 +0300
committerAndrew Dolgov <[email protected]>2019-12-09 22:42:43 +0300
commite7dd634183154949fab7aa0b00844eb645cb87e5 (patch)
tree22ef8eeb2cf9295c26a97f8961da11b6d038d0a3 /js/Article.js
parent008afb97a9c7dc1ef62e0e87fa73cf46aeb09f40 (diff)
exp: auto-disable smooth scrolling for repeat hotkey events
Diffstat (limited to 'js/Article.js')
-rw-r--r--js/Article.js48
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;