diff --git a/Mac/MainWindow/Detail/DetailViewController.swift b/Mac/MainWindow/Detail/DetailViewController.swift
index c7d2c2497..63e632b21 100644
--- a/Mac/MainWindow/Detail/DetailViewController.swift
+++ b/Mac/MainWindow/Detail/DetailViewController.swift
@@ -66,9 +66,17 @@ final class DetailViewController: NSViewController, WKUIDelegate {
currentWebViewController.canScrollDown(callback)
}
+ func canScrollUp(_ callback: @escaping (Bool) -> Void) {
+ currentWebViewController.canScrollUp(callback)
+ }
+
override func scrollPageDown(_ sender: Any?) {
currentWebViewController.scrollPageDown(sender)
}
+
+ override func scrollPageUp(_ sender: Any?) {
+ currentWebViewController.scrollPageUp(sender)
+ }
// MARK: - Navigation
diff --git a/Mac/MainWindow/Detail/DetailWebViewController.swift b/Mac/MainWindow/Detail/DetailWebViewController.swift
index e77101f9d..e75b8f71a 100644
--- a/Mac/MainWindow/Detail/DetailWebViewController.swift
+++ b/Mac/MainWindow/Detail/DetailWebViewController.swift
@@ -167,9 +167,19 @@ final class DetailWebViewController: NSViewController, WKUIDelegate {
}
}
+ func canScrollUp(_ completion: @escaping (Bool) -> Void) {
+ fetchScrollInfo { (scrollInfo) in
+ completion(scrollInfo?.canScrollUp ?? false)
+ }
+ }
+
override func scrollPageDown(_ sender: Any?) {
webView.scrollPageDown(sender)
}
+
+ override func scrollPageUp(_ sender: Any?) {
+ webView.scrollPageUp(sender)
+ }
}
// MARK: - WKScriptMessageHandler
diff --git a/Mac/MainWindow/MainWindowController.swift b/Mac/MainWindow/MainWindowController.swift
index eab97ca16..e79300644 100644
--- a/Mac/MainWindow/MainWindowController.swift
+++ b/Mac/MainWindow/MainWindowController.swift
@@ -264,6 +264,19 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations {
}
}
+ @IBAction func scrollUp(_ sender: Any?) {
+ guard let detailViewController = detailViewController else {
+ return
+ }
+ detailViewController.canScrollUp { (canScroll) in
+ if (canScroll) {
+ NSCursor.setHiddenUntilMouseMoves(true)
+ detailViewController.scrollPageUp(sender)
+ }
+ }
+
+ }
+
@IBAction func openArticleInBrowser(_ sender: Any?) {
if let link = currentLink {
Browser.open(link, invertPreference: NSApp.currentEvent?.modifierFlags.contains(.shift) ?? false)
diff --git a/Shared/Resources/GlobalKeyboardShortcuts.plist b/Shared/Resources/GlobalKeyboardShortcuts.plist
index c6288be02..4c2626cbe 100644
--- a/Shared/Resources/GlobalKeyboardShortcuts.plist
+++ b/Shared/Resources/GlobalKeyboardShortcuts.plist
@@ -10,6 +10,16 @@
action
scrollOrGoToNextUnread:
+
+ title
+ Scroll or Go to Next Unread
+ key
+ [space]
+ shiftModifier
+
+ action
+ scrollUp:
+
title
Go to Previous Unread