From 5acce87995db91934474845fe93cb3dae189ec53 Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Fri, 10 Jul 2020 13:33:25 -0500 Subject: [PATCH] Mac: Make shift-space scroll up even when the detail view doesn't have focus Issue #969. --- Mac/MainWindow/Detail/DetailViewController.swift | 8 ++++++++ Mac/MainWindow/Detail/DetailWebViewController.swift | 10 ++++++++++ Mac/MainWindow/MainWindowController.swift | 13 +++++++++++++ Shared/Resources/GlobalKeyboardShortcuts.plist | 10 ++++++++++ 4 files changed, 41 insertions(+) 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