From 5a75d39b7cc7cb4b4f0ae7b9028caab6cab503d6 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 21 Jan 2018 13:27:17 -0800 Subject: [PATCH] Reopen the Inspector window at launch if it was open on quit. --- Evergreen/AppDelegate.swift | 20 ++++++++++ .../Inspector/InspectorWindowController.swift | 39 +++++++++++++------ 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/Evergreen/AppDelegate.swift b/Evergreen/AppDelegate.swift index b57ebbd8b..a175d9a76 100644 --- a/Evergreen/AppDelegate.swift +++ b/Evergreen/AppDelegate.swift @@ -138,6 +138,12 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, self.unreadCount = AccountManager.shared.unreadCount } + if InspectorWindowController.shouldOpenAtStartup { + DispatchQueue.main.async { + self.toggleInspectorWindow(self) + } + } + #if RELEASE DispatchQueue.main.async { self.refreshAll(self) @@ -159,6 +165,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, RSMultiLineRenderer.emptyCache() TimelineCellData.emptyCache() timelineEmptyCaches() + + saveState() + } + + func applicationWillTerminate(_ notification: Notification) { + + saveState() } // MARK: GetURL Apple Event @@ -444,4 +457,11 @@ private extension AppDelegate { } return windowController.selectedObjectsInSidebar() } + + func saveState() { + + if let inspectorWindowController = inspectorWindowController { + inspectorWindowController.saveState() + } + } } diff --git a/Evergreen/Inspector/InspectorWindowController.swift b/Evergreen/Inspector/InspectorWindowController.swift index 69f1bca91..f0f3f2460 100644 --- a/Evergreen/Inspector/InspectorWindowController.swift +++ b/Evergreen/Inspector/InspectorWindowController.swift @@ -23,6 +23,23 @@ typealias InspectorViewController = Inspector & NSViewController final class InspectorWindowController: NSWindowController { + class var shouldOpenAtStartup: Bool { + return UserDefaults.standard.bool(forKey: DefaultsKey.windowIsOpen) + } + + var objects: [Any]? { + didSet { + let _ = window + currentInspector = inspector(for: objects) + } + } + + var isOpen: Bool { + get { + return isWindowLoaded && window!.isVisible + } + } + private var inspectors: [InspectorViewController]! private var currentInspector: InspectorViewController! { @@ -40,17 +57,9 @@ final class InspectorWindowController: NSWindowController { } } - var objects: [Any]? { - didSet { - let _ = window - currentInspector = inspector(for: objects) - } - } - - var isOpen: Bool { - get { - return isWindowLoaded && window!.isVisible - } + private struct DefaultsKey { + static let windowIsOpen = "FloatingInspectorIsOpen" + static let windowOrigin = "FloatingInspectorOrigin" } override func windowDidLoad() { @@ -83,6 +92,14 @@ final class InspectorWindowController: NSWindowController { return fallbackInspector! } + + func saveState() { + + UserDefaults.standard.set(isOpen, forKey: DefaultsKey.windowIsOpen) + if isOpen, let window = window, let flippedOrigin = window.flippedOrigin { + UserDefaults.standard.set(NSStringFromPoint(flippedOrigin), forKey: DefaultsKey.windowOrigin) + } + } } private extension InspectorWindowController {