Переглянути джерело

Fix Indeed browser Home button visibility in dark mode.

Use theme-aware toolbar chrome and brand-blue control tints so the Home label and navigation buttons stay readable when appearance changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 2 тижнів тому
батько
коміт
0a10a0d23b

+ 37 - 14
App for Indeed/Controllers/IndeedJobBrowserWindowController.swift

@@ -22,6 +22,8 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
22 22
     private let forwardButton = NSButton()
23 23
     private let reloadButton = NSButton()
24 24
     private let dismissEmbeddedButton = NSButton(title: "Home", target: nil, action: nil)
25
+    private let toolbarContainer = NSView()
26
+    private var appearanceObserver: NSObjectProtocol?
25 27
 
26 28
     override func loadView() {
27 29
         view = NSView(frame: NSRect(x: 0, y: 0, width: 920, height: 720))
@@ -45,10 +47,8 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
45 47
         dismissEmbeddedButton.action = #selector(dismissEmbedded)
46 48
         dismissEmbeddedButton.toolTip = "Return to the previous screen"
47 49
 
48
-        let toolbar = NSView()
49
-        toolbar.translatesAutoresizingMaskIntoConstraints = false
50
-        toolbar.wantsLayer = true
51
-        toolbar.layer?.backgroundColor = NSColor(srgbRed: 247 / 255, green: 247 / 255, blue: 247 / 255, alpha: 1).cgColor
50
+        toolbarContainer.translatesAutoresizingMaskIntoConstraints = false
51
+        toolbarContainer.wantsLayer = true
52 52
 
53 53
         let barStack: NSStackView
54 54
         if onDismissEmbedded != nil {
@@ -62,19 +62,19 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
62 62
         barStack.distribution = .fill
63 63
         barStack.translatesAutoresizingMaskIntoConstraints = false
64 64
 
65
-        toolbar.addSubview(barStack)
66
-        view.addSubview(toolbar)
65
+        toolbarContainer.addSubview(barStack)
66
+        view.addSubview(toolbarContainer)
67 67
         view.addSubview(webView)
68 68
 
69 69
         var layoutConstraints: [NSLayoutConstraint] = [
70
-            toolbar.leadingAnchor.constraint(equalTo: view.leadingAnchor),
71
-            toolbar.trailingAnchor.constraint(equalTo: view.trailingAnchor),
72
-            toolbar.topAnchor.constraint(equalTo: view.topAnchor),
73
-            toolbar.heightAnchor.constraint(equalToConstant: 48),
70
+            toolbarContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor),
71
+            toolbarContainer.trailingAnchor.constraint(equalTo: view.trailingAnchor),
72
+            toolbarContainer.topAnchor.constraint(equalTo: view.topAnchor),
73
+            toolbarContainer.heightAnchor.constraint(equalToConstant: 48),
74 74
 
75
-            barStack.leadingAnchor.constraint(equalTo: toolbar.leadingAnchor, constant: 12),
76
-            barStack.trailingAnchor.constraint(equalTo: toolbar.trailingAnchor, constant: -12),
77
-            barStack.centerYAnchor.constraint(equalTo: toolbar.centerYAnchor),
75
+            barStack.leadingAnchor.constraint(equalTo: toolbarContainer.leadingAnchor, constant: 12),
76
+            barStack.trailingAnchor.constraint(equalTo: toolbarContainer.trailingAnchor, constant: -12),
77
+            barStack.centerYAnchor.constraint(equalTo: toolbarContainer.centerYAnchor),
78 78
 
79 79
             backButton.widthAnchor.constraint(equalToConstant: 32),
80 80
             backButton.heightAnchor.constraint(equalToConstant: 28),
@@ -85,7 +85,7 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
85 85
 
86 86
             webView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
87 87
             webView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
88
-            webView.topAnchor.constraint(equalTo: toolbar.bottomAnchor),
88
+            webView.topAnchor.constraint(equalTo: toolbarContainer.bottomAnchor),
89 89
             webView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
90 90
         ]
91 91
         if onDismissEmbedded != nil {
@@ -94,6 +94,14 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
94 94
         NSLayoutConstraint.activate(layoutConstraints)
95 95
 
96 96
         updateNavigationButtons()
97
+        applyCurrentAppearance()
98
+        appearanceObserver = NotificationCenter.default.addObserver(
99
+            forName: AppAppearanceManager.didChangeNotification,
100
+            object: nil,
101
+            queue: .main
102
+        ) { [weak self] _ in
103
+            self?.applyCurrentAppearance()
104
+        }
97 105
 
98 106
         if let pendingURL {
99 107
             webView.load(URLRequest(url: pendingURL))
@@ -101,6 +109,12 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
101 109
         }
102 110
     }
103 111
 
112
+    deinit {
113
+        if let appearanceObserver {
114
+            NotificationCenter.default.removeObserver(appearanceObserver)
115
+        }
116
+    }
117
+
104 118
     func loadPage(_ url: URL) {
105 119
         if isViewLoaded {
106 120
             webView.load(URLRequest(url: url))
@@ -133,6 +147,15 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
133 147
         button.action = action
134 148
     }
135 149
 
150
+    private func applyCurrentAppearance() {
151
+        toolbarContainer.layer?.backgroundColor = AppDashboardTheme.chromeBackground.cgColor
152
+        let accent = AppDashboardTheme.brandBlue
153
+        dismissEmbeddedButton.contentTintColor = accent
154
+        backButton.contentTintColor = accent
155
+        forwardButton.contentTintColor = accent
156
+        reloadButton.contentTintColor = accent
157
+    }
158
+
136 159
     private func updateNavigationButtons() {
137 160
         backButton.isEnabled = webView.canGoBack
138 161
         forwardButton.isEnabled = webView.canGoForward