diff --git a/js/Article.js b/js/Article.js index 9c7ccf074..1b92c2965 100644 --- a/js/Article.js +++ b/js/Article.js @@ -338,7 +338,7 @@ define(["dojo/_base/declare"], function (declare) { elem = $("headlines-frame"); } - if (event.repeat) { + if (event && event.repeat) { elem.addClassName("forbid-smooth-scroll"); window.clearTimeout(this._scroll_reset_timeout); diff --git a/js/Headlines.js b/js/Headlines.js index 058376266..354c8b18d 100755 --- a/js/Headlines.js +++ b/js/Headlines.js @@ -806,7 +806,13 @@ define(["dojo/_base/declare"], function (declare) { if (row) row.toggleClassName("published"); }, - move: function (mode, noscroll, noexpand) { + move: function (mode, params) { + params = params || {}; + + const noscroll = params.noscroll || false; + const noexpand = params.noexpand || false; + const event = params.event; + const rows = Headlines.getLoaded(); let prev_id = false; @@ -849,7 +855,7 @@ define(["dojo/_base/declare"], function (declare) { if (!noscroll && article && article.offsetTop + article.offsetHeight > ctr.scrollTop + ctr.offsetHeight) { - Article.scroll(ctr.offsetHeight / 4); + Article.scroll(ctr.offsetHeight / 4, event); } else if (next_id) { Article.setActive(next_id); @@ -872,10 +878,10 @@ define(["dojo/_base/declare"], function (declare) { const ctr = $("headlines-frame"); if (!noscroll && article && article.offsetTop < ctr.scrollTop) { - Article.scroll(-ctr.offsetHeight / 3); + Article.scroll(-ctr.offsetHeight / 3, event); } else if (!noscroll && prev_article && prev_article.offsetTop < ctr.scrollTop) { - Article.scroll(-ctr.offsetHeight / 4); + Article.scroll(-ctr.offsetHeight / 4, event); } else if (prev_id) { Article.setActive(prev_id); Article.cdmScrollToId(prev_id, noscroll); @@ -1387,7 +1393,7 @@ define(["dojo/_base/declare"], function (declare) { scrollByPages: function (offset, event) { const elem = $("headlines-frame"); - if (event.repeat) { + if (event && event.repeat) { elem.addClassName("forbid-smooth-scroll"); window.clearTimeout(this._scroll_reset_timeout); diff --git a/js/tt-rss.js b/js/tt-rss.js index 8972543c9..744034f0c 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -277,23 +277,23 @@ require(["dojo/_base/kernel", if (rv) Feeds.open({feed: rv[0], is_cat: rv[1], delayed: true}) }; - this.hotkey_actions["next_article"] = function () { - Headlines.move('next'); + this.hotkey_actions["next_article"] = function (event) { + Headlines.move('next', {event: event}); }; - this.hotkey_actions["prev_article"] = function () { - Headlines.move('prev'); + this.hotkey_actions["prev_article"] = function (event) { + Headlines.move('prev', {event: event}); }; - this.hotkey_actions["next_article_noscroll"] = function () { - Headlines.move('next', true); + this.hotkey_actions["next_article_noscroll"] = function (event) { + Headlines.move('next', {noscroll: true, event: event}); }; - this.hotkey_actions["prev_article_noscroll"] = function () { - Headlines.move('prev', true); + this.hotkey_actions["prev_article_noscroll"] = function (event) { + Headlines.move('prev', {noscroll: true, event: event}); }; - this.hotkey_actions["next_article_noexpand"] = function () { - Headlines.move('next', true, true); + this.hotkey_actions["next_article_noexpand"] = function (event) { + Headlines.move('next', {noscroll: true, noexpand: true, event: event}); }; - this.hotkey_actions["prev_article_noexpand"] = function () { - Headlines.move('prev', true, true); + this.hotkey_actions["prev_article_noexpand"] = function (event) { + Headlines.move('prev', {noscroll: true, noexpand: true, event: event}); }; this.hotkey_actions["search_dialog"] = function () { Feeds.search();