diff --git a/Evergreen/Inspector/FeedInspectorViewController.swift b/Evergreen/Inspector/FeedInspectorViewController.swift
index 25c1304f4..2822728a5 100644
--- a/Evergreen/Inspector/FeedInspectorViewController.swift
+++ b/Evergreen/Inspector/FeedInspectorViewController.swift
@@ -110,7 +110,14 @@ private extension FeedInspectorViewController {
func updateName() {
- nameTextField?.stringValue = feed?.editedName ?? feed?.name ?? ""
+ guard let nameTextField = nameTextField else {
+ return
+ }
+
+ let name = feed?.editedName ?? feed?.name ?? ""
+ if nameTextField.stringValue != name {
+ nameTextField.stringValue = name
+ }
}
func updateHomePageURL() {
diff --git a/Evergreen/Inspector/FolderInspectorViewController.swift b/Evergreen/Inspector/FolderInspectorViewController.swift
index 925bc8f46..4df9961d2 100644
--- a/Evergreen/Inspector/FolderInspectorViewController.swift
+++ b/Evergreen/Inspector/FolderInspectorViewController.swift
@@ -8,6 +8,7 @@
import AppKit
import Account
+import RSCore
final class FolderInspectorViewController: NSViewController, Inspector {
@@ -43,6 +44,29 @@ final class FolderInspectorViewController: NSViewController, Inspector {
override func viewDidLoad() {
updateUI()
+
+ NotificationCenter.default.addObserver(self, selector: #selector(displayNameDidChange(_:)), name: .DisplayNameDidChange, object: nil)
+ }
+
+ // MARK: Notifications
+
+ @objc func displayNameDidChange(_ note: Notification) {
+
+ guard let updatedFolder = note.object as? Folder, updatedFolder == folder else {
+ return
+ }
+ updateUI()
+ }
+}
+
+extension FolderInspectorViewController: NSTextFieldDelegate {
+
+ override func controlTextDidChange(_ note: Notification) {
+
+ guard let folder = folder, let nameTextField = nameTextField else {
+ return
+ }
+ folder.name = nameTextField.stringValue
}
}
@@ -64,7 +88,13 @@ private extension FolderInspectorViewController {
func updateUI() {
- nameTextField?.stringValue = folder?.nameForDisplay ?? ""
- }
+ guard let nameTextField = nameTextField else {
+ return
+ }
+ let name = folder?.nameForDisplay ?? ""
+ if nameTextField.stringValue != name {
+ nameTextField.stringValue = name
+ }
+ }
}
diff --git a/Evergreen/Inspector/Inspector.storyboard b/Evergreen/Inspector/Inspector.storyboard
index 062f10e88..43ddead44 100644
--- a/Evergreen/Inspector/Inspector.storyboard
+++ b/Evergreen/Inspector/Inspector.storyboard
@@ -155,6 +155,9 @@ Field
+
+
+
diff --git a/Evergreen/Inspector/InspectorWindowController.swift b/Evergreen/Inspector/InspectorWindowController.swift
index ff5c1f510..28588447d 100644
--- a/Evergreen/Inspector/InspectorWindowController.swift
+++ b/Evergreen/Inspector/InspectorWindowController.swift
@@ -111,12 +111,18 @@ private extension InspectorWindowController {
func show(_ inspector: InspectorViewController) {
- guard let window = window, inspector !== window.contentViewController else {
+ guard let window = window else {
return
}
let flippedOrigin = window.flippedOrigin
- window.contentViewController = inspector
+
+ if window.contentViewController != inspector {
+ window.contentViewController = inspector
+ window.makeFirstResponder(nil)
+ }
+
+ window.layoutIfNeeded()
if let flippedOrigin = flippedOrigin {
window.setFlippedOriginAdjustingForScreen(flippedOrigin)
}