: install-app-delegate ( -- )
NSApp FactorApplicationDelegate install-delegate ;
-: set-theme ( -- )
- NSAppearance -> currentAppearance -> name CF>string
- "NSAppearanceNameDarkAqua" = dark-theme light-theme ?
- switch-theme ;
+: current-theme ( -- )
+ NSAppearance -> currentAppearance -> name [
+ CF>string "NSAppearanceNameDarkAqua" =
+ dark-theme light-theme ? switch-theme-if-default
+ ] when* ;
SYMBOL: cocoa-startup-hook
"UI" assert.app [
init-clipboard
cocoa-startup-hook get call( -- )
- set-theme
+ current-theme
start-ui
stop-io-thread
init-thread-timer
METHOD: void viewDidChangeEffectiveAppearance [
self -> effectiveAppearance -> name [
CF>string "NSAppearanceNameDarkAqua" =
- dark-theme light-theme ? switch-theme
+ dark-theme light-theme ? switch-theme-if-default
] when*
] ;
ui.theme ui.tools.listener vocabs.prettyprint words ;
IN: ui.theme.switching
+SYMBOL: default-theme?
+t default-theme? set-global
+
<PRIVATE
: update-style ( style color elt -- )
PRIVATE>
: switch-theme ( theme -- )
- theme set-global update-stylesheet ;
+ theme set-global update-stylesheet
+ f default-theme? set-global ;
+
+: switch-theme-if-default ( theme -- )
+ default-theme? get [
+ switch-theme t default-theme? set-global
+ ] [ drop ] if ;
: light-mode ( -- ) light-theme switch-theme ;