From 9ae9302b6b3526b15652715f9741dad8c51f9fee Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 17 May 2020 08:25:51 +0300 Subject: implement keyboard-related changes discussed in https://community.tt-rss.org/t/changing-the-amount-of-scroll-by-arrow-key/3452/7 --- js/AppBase.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'js/AppBase.js') diff --git a/js/AppBase.js b/js/AppBase.js index 86cc44e8a..49d276341 100644 --- a/js/AppBase.js +++ b/js/AppBase.js @@ -7,6 +7,33 @@ define(["dojo/_base/declare"], function (declare) { hotkey_prefix: 0, hotkey_prefix_pressed: false, hotkey_prefix_timeout: 0, + Scrollable: { + scrollByPages: function (elem, page_offset, event) { + if (!elem) return; + + /* keep a line or so from the previous page */ + const offset = (elem.offsetHeight - (page_offset > 0 ? 50 : -50)) * page_offset; + + this.scroll(elem, offset, event); + }, + scroll: function(elem, offset, event) { + if (!elem) return; + + if (event && 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; + }, + }, constructor: function() { window.onerror = this.Error.onWindowError; }, -- cgit v1.2.3-54-g00ecf