From cef22fc9e7367c258ff0549cad3f994990f909bd Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 19 Sep 2018 11:15:04 -0500 Subject: [PATCH] Made title window title work for PseudoFeeds. Issue #48 --- .../MainWindow/MainWindowController.swift | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/NetNewsWire/MainWindow/MainWindowController.swift b/NetNewsWire/MainWindow/MainWindowController.swift index f1dc9a498..823e31c88 100644 --- a/NetNewsWire/MainWindow/MainWindowController.swift +++ b/NetNewsWire/MainWindow/MainWindowController.swift @@ -102,12 +102,14 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { @objc func sidebarSelectionDidChange(_ note: Notification) { let selectedObjects = selectedObjectsInSidebar() + + // We can only meaninfully display one feed or folder at a time guard selectedObjects?.count == 1 else { currentFeedOrFolder = nil return } - guard selectedObjects?[0] is DisplayNameProvider && selectedObjects?[0] is UnreadCountProvider else { + guard selectedObjects?[0] is DisplayNameProvider else { currentFeedOrFolder = nil return } @@ -124,22 +126,31 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { updateWindowTitleIfNecessary(note.object) } - private func updateWindowTitleIfNecessary(_ object: Any?) { + private func updateWindowTitleIfNecessary(_ noteObject: Any?) { - if let folder = currentFeedOrFolder as? Folder, let noteObject = object as? Folder { + if let folder = currentFeedOrFolder as? Folder, let noteObject = noteObject as? Folder { if folder == noteObject { updateWindowTitle() return } } - if let feed = currentFeedOrFolder as? Feed, let noteObject = object as? Feed { + if let feed = currentFeedOrFolder as? Feed, let noteObject = noteObject as? Feed { if feed == noteObject { updateWindowTitle() return } } + // If we don't recognize the changed object, we will test it for identity instead + // of equality. This works well for us if the window display is displaying a + // PsuedoFeed object. + if let currentObject = currentFeedOrFolder, let noteObject = noteObject { + if currentObject === noteObject as AnyObject { + updateWindowTitle() + } + } + } // MARK: - Toolbar