]> gitweb.factorcode.org Git - factor.git/commitdiff
ui.theme.switching: adding concept of default-theme?.
authorJohn Benediktsson <mrjbq7@gmail.com>
Sat, 1 Jan 2022 04:19:26 +0000 (20:19 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sat, 1 Jan 2022 04:19:26 +0000 (20:19 -0800)
If the default-theme? flag is false it means someone set a theme
manually. We can use this to not override when the system appearance
changes.

basis/ui/backend/cocoa/cocoa.factor
basis/ui/backend/cocoa/views/views.factor
basis/ui/theme/switching/switching.factor

index 81553f5a5f246ffcc52a65cf2f13760e3f0bfbbc..c99241a651209935ef5e318b0e48211b5fcb955f 100644 (file)
@@ -207,10 +207,11 @@ M: cocoa-ui-backend system-alert
 : 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
 
@@ -222,7 +223,7 @@ M: cocoa-ui-backend (with-ui)
     "UI" assert.app [
         init-clipboard
         cocoa-startup-hook get call( -- )
-        set-theme
+        current-theme
         start-ui
         stop-io-thread
         init-thread-timer
index 3373d80407ec920020538ad98aa3775561bdfb72..f8c503bf5f574d61abf09df0b8e43b5f92c97788 100644 (file)
@@ -335,7 +335,7 @@ PRIVATE>
     METHOD: void viewDidChangeEffectiveAppearance [
         self -> effectiveAppearance -> name [
             CF>string "NSAppearanceNameDarkAqua" =
-            dark-theme light-theme ? switch-theme
+            dark-theme light-theme ? switch-theme-if-default
         ] when*
     ] ;
 
index fa32e156c13a8618226339156ca072827b5339c0..40466e2636d92f57ed2ec17bed2210e68cf48c90 100644 (file)
@@ -6,6 +6,9 @@ prettyprint.stylesheet sequences ui.gadgets.panes.private
 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 -- )
@@ -64,7 +67,13 @@ IN: ui.theme.switching
 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 ;