Mercurial > minori
annotate src/sys/osx/dark_theme.mm @ 179:9c4645100fec
osx: clean up includes, we do not need cocoa
what we *do* need is the very basics that animia already depends on anyway.
these are basically guaranteed to be on any macos system, making it fairly portable
now... I haven't tested this :) I don't have a macos machine right now...
| author | Paper <mrpapersonic@gmail.com> |
|---|---|
| date | Mon, 04 Dec 2023 12:03:36 -0500 |
| parents | 6d8da6e64d61 |
| children |
| rev | line source |
|---|---|
| 2 | 1 #include "sys/osx/dark_theme.h" |
|
179
9c4645100fec
osx: clean up includes, we do not need cocoa
Paper <mrpapersonic@gmail.com>
parents:
105
diff
changeset
|
2 |
|
9c4645100fec
osx: clean up includes, we do not need cocoa
Paper <mrpapersonic@gmail.com>
parents:
105
diff
changeset
|
3 #import <AppKit/AppKit.h> |
| 2 | 4 |
| 9 | 5 namespace osx { |
| 6 | |
|
105
6d8da6e64d61
theme: add dark stylesheet, make it actually usable
Paper <mrpapersonic@gmail.com>
parents:
15
diff
changeset
|
7 /* I remember clang giving a hissy fit when I tried simplifying this to just |
|
179
9c4645100fec
osx: clean up includes, we do not need cocoa
Paper <mrpapersonic@gmail.com>
parents:
105
diff
changeset
|
8 * a return; does it still do that? |
|
9c4645100fec
osx: clean up includes, we do not need cocoa
Paper <mrpapersonic@gmail.com>
parents:
105
diff
changeset
|
9 */ |
| 9 | 10 bool DarkThemeAvailable() { |
| 5 | 11 if (@available(macOS 10.14, *)) |
| 12 return true; | |
| 13 else | |
| 14 return false; | |
| 2 | 15 } |
| 16 | |
| 9 | 17 bool IsInDarkTheme() { |
| 18 if (@available(macOS 10.14, *)) { | |
| 15 | 19 auto appearance = [NSApp.effectiveAppearance |
| 20 bestMatchFromAppearancesWithNames:@[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]]; | |
| 9 | 21 return [appearance isEqualToString:NSAppearanceNameDarkAqua]; |
| 22 } | |
| 23 return false; | |
| 2 | 24 } |
| 25 | |
| 9 | 26 void SetToDarkTheme() { |
| 27 // https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code | |
| 28 if (@available(macOS 10.14, *)) { | |
| 15 | 29 [NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]]; |
| 9 | 30 } |
| 2 | 31 } |
| 32 | |
| 9 | 33 void SetToLightTheme() { |
| 34 // https://stackoverflow.com/questions/55925862/how-can-i-set-my-os-x-application-theme-in-code | |
|
105
6d8da6e64d61
theme: add dark stylesheet, make it actually usable
Paper <mrpapersonic@gmail.com>
parents:
15
diff
changeset
|
35 if (@available(macOS 10.14, *)) { |
| 15 | 36 [NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]]; |
| 9 | 37 } |
| 2 | 38 } |
| 39 | |
| 9 | 40 void SetToAutoTheme() { |
| 41 if (@available(macOS 10.14, *)) { | |
| 42 [NSApp setAppearance:nil]; | |
| 43 } | |
| 2 | 44 } |
| 9 | 45 |
| 46 } // namespace osx |
