summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2024-03-06 00:55:43 -0500
committerouwou <26526779+ouwou@users.noreply.github.com>2024-03-06 00:55:43 -0500
commit91e89c06958f1e058de445f9b53205e7eb341d3a (patch)
treebc485e5e663932fb5083a3d892e26ee0edcb573a
parent3ace5d26e91c6158f99398c7d7dc8b7cd219eb4f (diff)
parente8bc60d9263e5b0dd213bcc85f9655ebebcedf49 (diff)
downloadabaddon-portaudio-91e89c06958f1e058de445f9b53205e7eb341d3a.tar.gz
abaddon-portaudio-91e89c06958f1e058de445f9b53205e7eb341d3a.zip
Merge branch 'master' of https://github.com/uowuo/abaddon
-rw-r--r--CMakeLists.txt25
-rw-r--r--src/abaddon.cpp28
2 files changed, 40 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e450cf..d1b56fc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,7 +50,7 @@ file(GLOB_RECURSE ABADDON_SOURCES
"src/*.h"
"src/*.hpp"
"src/*.cpp"
- )
+)
list(FILTER ABADDON_SOURCES EXCLUDE REGEX ".*notifier_gio\\.cpp$")
list(FILTER ABADDON_SOURCES EXCLUDE REGEX ".*notifier_fallback\\.cpp$")
@@ -148,6 +148,12 @@ endif ()
set(USE_MINIAUDIO FALSE)
+if (APPLE)
+ target_link_libraries(abaddon "-framework CoreFoundation")
+ target_link_libraries(abaddon "-framework CoreAudio")
+ target_link_libraries(abaddon "-framework AudioToolbox")
+endif ()
+
if (ENABLE_VOICE)
target_compile_definitions(abaddon PRIVATE WITH_VOICE)
@@ -194,12 +200,6 @@ if (ENABLE_VOICE)
target_link_libraries(abaddon rnnoise::rnnoise)
endif ()
endif ()
-
- if (APPLE)
- target_link_libraries(abaddon "-framework CoreFoundation")
- target_link_libraries(abaddon "-framework CoreAudio")
- target_link_libraries(abaddon "-framework AudioToolbox")
- endif ()
endif ()
if (${ENABLE_NOTIFICATION_SOUNDS})
@@ -214,12 +214,11 @@ if (USE_MINIAUDIO)
PATH_SUFFIXES miniaudio
REQUIRED)
- if (APPLE)
- target_link_libraries(abaddon "-framework CoreFoundation")
- target_link_libraries(abaddon "-framework CoreAudio")
- target_link_libraries(abaddon "-framework AudioToolbox")
- endif ()
-
target_include_directories(abaddon PUBLIC ${MINIAUDIO_INCLUDE_DIR})
target_compile_definitions(abaddon PRIVATE WITH_MINIAUDIO)
endif ()
+
+set(ABADDON_COMPILER_DEFS "" CACHE STRING "Additional compiler definitions")
+foreach (COMPILER_DEF IN LISTS ABADDON_COMPILER_DEFS)
+ target_compile_definitions(abaddon PRIVATE "${COMPILER_DEF}")
+endforeach ()
diff --git a/src/abaddon.cpp b/src/abaddon.cpp
index 26e33f3..f8c4b39 100644
--- a/src/abaddon.cpp
+++ b/src/abaddon.cpp
@@ -25,6 +25,23 @@
#include "remoteauth/remoteauthdialog.hpp"
#include "util.hpp"
+#if defined(__APPLE__)
+#include <CoreFoundation/CoreFoundation.h>
+
+void macOSThemeChanged() {
+ CFPropertyListRef appearanceName = CFPreferencesCopyAppValue(CFSTR("AppleInterfaceStyle"), kCFPreferencesAnyApplication);
+ if (appearanceName != NULL && CFGetTypeID(appearanceName) == CFStringGetTypeID() && CFStringCompare((CFStringRef)appearanceName, CFSTR("Dark"), 0) == kCFCompareEqualTo) {
+ Gtk::Settings::get_default()->set_property("gtk-application-prefer-dark-theme", true);
+ } else {
+ Gtk::Settings::get_default()->set_property("gtk-application-prefer-dark-theme", false);
+ }
+}
+
+void macOSThemeChangedCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
+ macOSThemeChanged();
+}
+#endif
+
#ifdef WITH_LIBHANDY
#include <handy.h>
#endif
@@ -332,6 +349,17 @@ int Abaddon::StartGTK() {
m_gtk_app->hold();
m_main_window->show();
+#if defined(__APPLE__)
+ CFNotificationCenterAddObserver(CFNotificationCenterGetDistributedCenter(),
+ NULL,
+ macOSThemeChangedCallback,
+ CFSTR("AppleInterfaceThemeChangedNotification"),
+ NULL,
+ CFNotificationSuspensionBehaviorCoalesce);
+
+ macOSThemeChanged();
+#endif
+
RunFirstTimeDiscordStartup();
return m_gtk_app->run(*m_main_window);