1- import Cocoa
1+ import AppKit
22import WebKit
33
44class DocumentationWindowController : NSWindowController {
@@ -22,58 +22,75 @@ class DocumentationWindowController: NSWindowController {
2222 }
2323
2424 override func windowDidLoad( ) {
25- observeViewerState ( )
26- observeDocumentTitle ( )
27- observeDocumentURL ( )
2825 observeEffectiveAppearance ( )
29- }
3026
31- func activateFind( ) {
3227 guard let dvc = documentationViewController else { return }
33- dvc. showSearchControl ( )
28+
29+ NotificationCenter . default. addObserver ( self ,
30+ selector: #selector( observeViewerState) ,
31+ name: . DocumentViewerStateDidChange,
32+ object: dvc)
33+
34+ NotificationCenter . default. addObserver ( self ,
35+ selector: #selector( observeDocumentTitle) ,
36+ name: . DocumentTitleDidChange,
37+ object: dvc)
38+
39+ NotificationCenter . default. addObserver ( self ,
40+ selector: #selector( observeDocumentURL) ,
41+ name: . DocumentURLDidChange,
42+ object: dvc)
43+
44+ NotificationCenter . default. addObserver ( self ,
45+ selector: #selector( observeMenuFindAction) ,
46+ name: . MenuFindAction,
47+ object: nil )
3448 }
3549
36- private func observeViewerState( ) {
50+ // MARK:- NotificationCenter observers
51+
52+ @objc private func observeViewerState( ) {
3753 guard let dvc = documentationViewController else { return }
38- observations. insert (
39- dvc. observe ( \DocumentationViewController . viewerState) { [ weak self] ( dvc, _) in
40- if dvc. viewerState != . ready {
41- return
42- }
4354
44- dvc. useNativeScrollbars ( true )
55+ if dvc. viewerState != . ready {
56+ return
57+ }
4558
46- guard let window = self ? . window else { return }
47- switch window . effectiveAppearance . name {
48- case . aqua :
49- dvc . useDarkMode ( false )
50- case . darkAqua :
51- dvc. useDarkMode ( true )
52- default :
53- break ;
54- }
55- }
56- )
59+ dvc . useNativeScrollbars ( true )
60+
61+ guard let window = self . window else { return }
62+ switch window . effectiveAppearance . name {
63+ case . aqua :
64+ dvc. useDarkMode ( false )
65+ case . darkAqua :
66+ dvc . useDarkMode ( true )
67+ default :
68+ break ;
69+ }
5770 }
5871
59- private func observeDocumentTitle( ) {
72+ @ objc private func observeDocumentTitle( ) {
6073 guard let dvc = documentationViewController else { return }
61- observations. insert (
62- dvc. observe ( \DocumentationViewController . documentTitle) { [ weak self] ( dvc, _) in
63- self ? . window? . title = dvc. documentTitle ?? " DevDocs "
64- }
65- )
74+ self . window? . title = dvc. documentTitle ?? " DevDocs "
6675 }
6776
68- private func observeDocumentURL( ) {
77+ @ objc private func observeDocumentURL( ) {
6978 guard let dvc = documentationViewController else { return }
70- observations. insert (
71- dvc. observe ( \DocumentationViewController . documentURL) { [ weak self] ( dvc, _) in
72- self ? . documentation. url = dvc. documentURL
73- }
74- )
79+ self . documentation. url = dvc. documentURL
80+ }
81+
82+ @objc private func observeMenuFindAction( ) {
83+ guard let window = self . window else { return }
84+ if !window. isKeyWindow {
85+ return
86+ }
87+
88+ guard let dvc = documentationViewController else { return }
89+ dvc. showSearchControl ( )
7590 }
7691
92+ // MARK:- KVO observers
93+
7794 private func observeEffectiveAppearance( ) {
7895 guard let window = self . window else { return }
7996 observations. insert (
0 commit comments