Der Farbwechsel kommt jetzt auch an
Farbton und Symbolfarbe standen beim **Erzeugen** der Fenster, also außerhalb jeder View. Damit wird der Wert genau einmal gelesen und SwiftUI erfährt nie, dass er sich geändert hat: die Reiter, Knöpfe und Symbole blieben in der Farbe stehen, die beim Öffnen galt, während der Farbwähler daneben schon die neue zeigte. Jetzt stehen beide im Rumpf der jeweiligen View — Panel, Einstellungen, Einrichtung. Dort registriert SwiftUI den Zugriff und zeichnet neu. Bei den Popovers blieb es beim Erzeugen: die entstehen bei jedem Öffnen neu, lesen also ohnehin den aktuellen Wert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -82,6 +82,9 @@ struct OnboardingView: View {
|
||||
footer
|
||||
}
|
||||
.frame(width: 520, height: 520)
|
||||
// Im Rumpf gelesen, damit ein Farbwechsel ankommt.
|
||||
.tint(Onyx.Color.accent)
|
||||
.labelStyle(.onyx)
|
||||
.task {
|
||||
calendarGranted = calendarModel.hasAccess
|
||||
fanControl.refreshInstallState()
|
||||
|
||||
@@ -44,9 +44,7 @@ final class OnboardingWindowController: NSObject, NSWindowDelegate {
|
||||
rootView: OnboardingView(
|
||||
calendarModel: calendarModel, weatherModel: weatherModel,
|
||||
mixer: mixer, fanControl: fanControl, launchAtLogin: launchAtLogin,
|
||||
onFinish: { [weak self] in self?.finish() })
|
||||
.tint(Onyx.Color.accent)
|
||||
.labelStyle(.onyx))
|
||||
onFinish: { [weak self] in self?.finish() }))
|
||||
|
||||
let window = NSWindow(contentViewController: hosting)
|
||||
window.title = "Onyx"
|
||||
|
||||
@@ -76,9 +76,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
NotchHostingView(
|
||||
rootView: NotchContainer(presentation: presentation) {
|
||||
NotchPanelContent(model: model)
|
||||
}
|
||||
.tint(Onyx.Color.accent)
|
||||
.labelStyle(.onyx),
|
||||
},
|
||||
presentation: presentation)
|
||||
}
|
||||
coordinator.start()
|
||||
@@ -366,5 +364,8 @@ private struct NotchPanelContent: View {
|
||||
|
||||
var body: some View {
|
||||
WidgetGrid(placements: model.layout, availableWidth: AppModel.availableWidth)
|
||||
// Im Rumpf gelesen, damit ein Farbwechsel ankommt.
|
||||
.tint(Onyx.Color.accent)
|
||||
.labelStyle(.onyx)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,6 +71,14 @@ struct SettingsView: View {
|
||||
// Systems, und die beiden liegen in Dunkelgrau ein, zwei Prozent
|
||||
// auseinander. Sichtbar wurde das als Kante quer durchs Fenster.
|
||||
.background(Color(nsColor: .windowBackgroundColor))
|
||||
// Farbton und Symbolfarbe hier und nicht beim Erzeugen des Fensters.
|
||||
//
|
||||
// Beim Erzeugen wird der Wert **einmal** gelesen, außerhalb jeder
|
||||
// View — SwiftUI erfährt nie, dass er sich geändert hat. Die Reiter
|
||||
// und Knöpfe blieben deshalb in der Farbe stehen, die beim Öffnen
|
||||
// galt, während der Farbwähler daneben schon die neue zeigte.
|
||||
.tint(Onyx.Color.accent)
|
||||
.labelStyle(.onyx)
|
||||
// Nur ein Mindestmaß, keine feste Größe: sonst kann das Fenster
|
||||
// wachsen, der Inhalt aber nicht mit.
|
||||
.frame(minWidth: 740, minHeight: 460)
|
||||
|
||||
@@ -61,12 +61,7 @@ final class SettingsWindowController: NSObject, NSWindowDelegate {
|
||||
showOnboarding: showOnboarding,
|
||||
selectedTab: Binding(
|
||||
get: { [weak self] in self?.selectedTab ?? .widgets },
|
||||
set: { [weak self] in self?.selectedTab = $0 }))
|
||||
// Ohne das folgen Haken, Regler und Auswahlfelder der
|
||||
// Systemfarbe statt der eingestellten. Genau daher kam das
|
||||
// Grün, das in Onyx sonst nirgends vorkommt.
|
||||
.tint(Onyx.Color.accent)
|
||||
.labelStyle(.onyx))
|
||||
set: { [weak self] in self?.selectedTab = $0 })))
|
||||
|
||||
let window = NSWindow(contentViewController: hosting)
|
||||
window.title = "Onyx"
|
||||
|
||||
Reference in New Issue
Block a user