comparison src/sys/osx/dark_theme.mm @ 9:5c0397762b53

INCOMPLETE: megacommit :)
author Paper <mrpapersonic@gmail.com>
date Sun, 10 Sep 2023 03:59:16 -0400
parents 51ae25154b70
children cde8f67a7c7d
comparison
equal deleted inserted replaced
8:b1f73678ef61 9:5c0397762b53
1 #include "sys/osx/dark_theme.h" 1 #include "sys/osx/dark_theme.h"
2 #import <Cocoa/Cocoa.h> 2 #import <Cocoa/Cocoa.h>
3 3
4 bool osx::DarkThemeAvailable() 4 namespace osx {
5 { 5
6 bool DarkThemeAvailable() {
6 if (@available(macOS 10.14, *)) 7 if (@available(macOS 10.14, *))
7 return true; 8 return true;
8 else 9 else
9 return false; 10 return false;
10 } 11 }
11 12
12 bool osx::IsInDarkTheme() 13 bool IsInDarkTheme() {
13 { 14 if (@available(macOS 10.14, *)) {
14 if (@available(macOS 10.14, *)) 15 auto appearance =
15 { 16 [NSApp.effectiveAppearance bestMatchFromAppearancesWithNames:@[
16 auto appearance = [NSApp.effectiveAppearance bestMatchFromAppearancesWithNames: 17 NSAppearanceNameAqua, NSAppearanceNameDarkAqua
17 @[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]]; 18 ]];
18 return [appearance isEqualToString:NSAppearanceNameDarkAqua]; 19 return [appearance isEqualToString:NSAppearanceNameDarkAqua];
19 } 20 }
20 return false; 21 return false;
21 } 22 }
22 23
23 void osx::SetToDarkTheme() 24 void SetToDarkTheme() {
24 { 25 // https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code
25 // https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code 26 if (@available(macOS 10.14, *)) {
26 if (@available(macOS 10.14, *)) 27 [NSApp setAppearance:[NSAppearance
27 { 28 appearanceNamed:NSAppearanceNameDarkAqua]];
28 [NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]]; 29 }
29 }
30 } 30 }
31 31
32 void osx::SetToLightTheme() 32 void SetToLightTheme() {
33 { 33 // https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code
34 // https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code 34 if (__builtin_available(macOS 10.14, *)) {
35 if (__builtin_available(macOS 10.14, *)) 35 [NSApp
36 { 36 setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]];
37 [NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]]; 37 }
38 }
39 } 38 }
40 39
41 void osx::SetToAutoTheme() 40 void SetToAutoTheme() {
42 { 41 if (@available(macOS 10.14, *)) {
43 if (@available(macOS 10.14, *)) 42 [NSApp setAppearance:nil];
44 { 43 }
45 [NSApp setAppearance:nil];
46 }
47 } 44 }
45
46 } // namespace osx