add hotkeys to scroll headlines/articles (whichever is active) by one page

This commit is contained in:
Andrew Dolgov 2019-12-04 15:50:49 +03:00
parent cb92f56b13
commit 6913158b82
3 changed files with 24 additions and 2 deletions

View File

@ -1121,6 +1121,8 @@
"*(40)|Shift+Down" => "article_scroll_down",
"^(38)|Ctrl+Up" => "prev_article_noscroll",
"^(40)|Ctrl+Down" => "next_article_noscroll",
"(33)|Page Up" => "article_page_up",
"(34)|Page Down" => "article_page_down",
"/" => "search_dialog",
"s" => "toggle_mark",
"S" => "toggle_publ",

View File

@ -314,6 +314,20 @@ define(["dojo/_base/declare"], function (declare) {
else
return 0;
},
scrollPages: function (offset) {
if (!App.isCombinedMode()) {
const ci = $("content-insert");
if (ci) {
ci.scrollTop += ci.offsetHeight * offset * 0.9;
}
} else {
const hi = $("headlines-frame");
if (hi) {
hi.scrollTop += hi.offsetHeight * offset * 0.9;
}
}
},
scroll: function (offset) {
if (!App.isCombinedMode()) {
const ci = $("content-insert");

View File

@ -204,8 +204,8 @@ require(["dojo/_base/kernel",
if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") return;
// Arrow buttons and escape are not reported via keypress, handle them via keydown.
// escape = 27, left = 37, up = 38, right = 39, down = 40
if (event.type == "keydown" && event.which != 27 && (event.which < 37 || event.which > 40)) return;
// escape = 27, left = 37, up = 38, right = 39, down = 40, pgup = 33, pgdn = 34
if (event.type == "keydown" && event.which != 27 && (event.which < 33 || event.which > 40)) return;
const action_name = App.keyeventToAction(event);
@ -330,6 +330,12 @@ require(["dojo/_base/kernel",
this.hotkey_actions["article_scroll_up"] = function () {
Article.scroll(-40);
};
this.hotkey_actions["article_page_down"] = function () {
Article.scrollPages(1);
};
this.hotkey_actions["article_page_up"] = function () {
Article.scrollPages(-1);
};
this.hotkey_actions["close_article"] = function () {
if (App.isCombinedMode()) {
Article.cdmUnsetActive();