From 20258ff0ebf57d5a8064dec821ce745b7d9242a3 Mon Sep 17 00:00:00 2001 From: Oleguer Llopart Date: Sun, 31 Mar 2024 14:06:11 +0200 Subject: [PATCH] New: Shortcut to go next/prev chapter --- CHANGELOG.md | 2 ++ scripts/reading.js | 42 +++++++++++++++++++++++++++++++++-- scripts/shortcuts.js | 52 +++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 91 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2caa4afb1..e6febcb53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ##### 🚀 New Features +- Shortcut to go next/prev chapter + ##### 🐛 Bug Fixes - Scroll does not work correctly when zooming and then resizing the window [`65a447c`](https://github.com/ollm/OpenComic/commit/65a447c1ce395214b1f787e5eb0824f003655f11) diff --git a/scripts/reading.js b/scripts/reading.js index 14d4e5999..d730bd435 100644 --- a/scripts/reading.js +++ b/scripts/reading.js @@ -1339,17 +1339,35 @@ function goStart(force = false) if((currentIndex > indexNum || (currentIndex - 1 == 0 && dom.previousComic())) && (!maxPageVisibility || currentPageVisibility == 0)) { goPrevious(); + + return false; } else { readingDirection = true; goToIndex(1, true); + + return true; } } else { - goEnd(true); + return goEnd(true); + } +} + +function goPrevComic() +{ + if(dom.previousComic()) + { + let speed = _config.readingViewSpeed; + _config.readingViewSpeed = 0; + + let double = goStart(); + if(double) goStart(); + + _config.readingViewSpeed = speed; } } @@ -1363,17 +1381,35 @@ function goEnd(force = false) if((currentIndex < 1 || (currentIndex == indexNum && dom.nextComic())) && (!maxPageVisibility || maxPageVisibility == currentPageVisibility)) { goNext(); + + return false; } else { readingDirection = false; goToIndex(indexNum, true, true, true); + + return true; } } else { - goStart(true); + return goStart(true); + } +} + +function goNextComic() +{ + if(dom.nextComic()) + { + let speed = _config.readingViewSpeed; + _config.readingViewSpeed = 0; + + let double = goEnd(); + if(double) goEnd(); + + _config.readingViewSpeed = speed; } } @@ -5139,8 +5175,10 @@ module.exports = { goStart: goStart, goPrevious: goPrevious, goPrev: goPrevious, + goPrevComic: goPrevComic, goNext: goNext, goEnd: goEnd, + goNextComic: goNextComic, pageRange: pageRange, goBackPageRangeHistory: goBackPageRangeHistory, goPageDialog: goPageDialog, diff --git a/scripts/shortcuts.js b/scripts/shortcuts.js index 25bad15d2..c7d645cc6 100644 --- a/scripts/shortcuts.js +++ b/scripts/shortcuts.js @@ -92,6 +92,8 @@ function loadShortcuts() 'next', 'start', 'end', + 'prevComic', + 'nextComic', 'magnifyingGlass', 'hideBarHeader', 'hideContentLeft', @@ -145,11 +147,11 @@ function loadShortcuts() }, start: { name: language.reading.firstPage, - function: function(){ + function: function(event){ if(inputIsFocused()) return false; - if(!reading.readingViewIs('scroll') || event.key !== 'ArrowUp') + if(!reading.readingViewIs('scroll') || (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') || event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) { reading.goStart(); return true; @@ -169,7 +171,7 @@ function loadShortcuts() if(inputIsFocused()) return false; - if(!reading.readingViewIs('scroll') || event.key !== 'ArrowDown') + if(!reading.readingViewIs('scroll') || (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') || event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) { reading.goEnd(); return true; @@ -183,6 +185,46 @@ function loadShortcuts() return false; }, }, + prevComic: { + name: language.reading.prevChapter, + function: function(event){ + + if(inputIsFocused()) return false; + + if(!reading.readingViewIs('scroll') || (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') || event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) + { + reading.goPrevComic(); + return true; + } + else if(!reading.zoomingIn()) + { + reading.disableOnScroll(false); + if(reading.scrollNextOrPrevComic(true)) return true; + } + + return false; + }, + }, + nextComic: { + name: language.reading.nextChapter, + function: function(event){ + + if(inputIsFocused()) return false; + + if(!reading.readingViewIs('scroll') || (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') || event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) + { + reading.goNextComic(); + return true; + } + else if(!reading.zoomingIn()) + { + reading.disableOnScroll(false); + if(reading.scrollNextOrPrevComic(false)) return true; + } + + return false; + }, + }, magnifyingGlass: { name: language.reading.magnifyingGlass.main, function: function(event, gamepad = false){ @@ -283,6 +325,10 @@ function loadShortcuts() 'Down': 'end', 'S': 'end', 'End': 'end', + 'Ctrl+Up': 'prevComic', + 'Ctrl+Left': 'prevComic', + 'Ctrl+Down': 'nextComic', + 'Ctrl+Right': 'nextComic', 'M': 'magnifyingGlass', 'B': 'hideBarHeader', 'H': 'hideBarHeader',