From 24fb1f035685f5bd9608f86a53c8d0b24db46e7b Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 23 Dec 2017 22:18:42 -0800 Subject: [PATCH] Fix infinite loop that could happen on going to next unread. Fix #269. --- .../MainWindow/MainWindowController.swift | 30 ++++++++++++++----- .../Sidebar/SidebarViewController.swift | 2 -- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Evergreen/MainWindow/MainWindowController.swift b/Evergreen/MainWindow/MainWindowController.swift index 67101e0f8..a45b87394 100644 --- a/Evergreen/MainWindow/MainWindowController.swift +++ b/Evergreen/MainWindow/MainWindowController.swift @@ -166,23 +166,39 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { openArticleInBrowser(sender) } + func makeTimelineViewFirstResponder() { + + guard let window = window, let timelineViewController = timelineViewController else { + return + } + window.makeFirstResponderUnlessDescendantIsFirstResponder(timelineViewController.tableView) + } + @IBAction func nextUnread(_ sender: Any?) { guard let timelineViewController = timelineViewController, let sidebarViewController = sidebarViewController else { return } - func makeTimelineViewFirstResponder() { - - window!.makeFirstResponderUnlessDescendantIsFirstResponder(timelineViewController.tableView) - } - if timelineViewController.canGoToNextUnread() { - timelineViewController.goToNextUnread() - makeTimelineViewFirstResponder() + goToNextUnreadInTimeline() } else if sidebarViewController.canGoToNextUnread() { sidebarViewController.goToNextUnread() + if timelineViewController.canGoToNextUnread() { + goToNextUnreadInTimeline() + } + } + } + + func goToNextUnreadInTimeline() { + + guard let timelineViewController = timelineViewController else { + return + } + + if timelineViewController.canGoToNextUnread() { + timelineViewController.goToNextUnread() makeTimelineViewFirstResponder() } } diff --git a/Evergreen/MainWindow/Sidebar/SidebarViewController.swift b/Evergreen/MainWindow/Sidebar/SidebarViewController.swift index f1fd30060..cf369440e 100644 --- a/Evergreen/MainWindow/Sidebar/SidebarViewController.swift +++ b/Evergreen/MainWindow/Sidebar/SidebarViewController.swift @@ -151,8 +151,6 @@ import RSCore } outlineView.selectRowIndexes(IndexSet([row]), byExtendingSelection: false) - - NSApplication.shared.sendAction(NSSelectorFromString("nextUnread:"), to: nil, from: self) } func focus() {