mirror of
https://github.com/uowuo/abaddon.git
synced 2024-11-10 06:00:10 +00:00
macOS theme switching (#276)
* abaddon.cpp: add support for macOS theme changing Based on AppleInterfaceThemeChangedNotification for now. * CMakeLists: last changes for macOS specific libs --------- Co-authored-by: ouwou <26526779+ouwou@users.noreply.github.com>
This commit is contained in:
parent
30b901b4df
commit
1fbc6945d2
@ -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,6 @@ 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 ()
|
||||
|
@ -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
|
||||
@ -331,6 +348,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);
|
||||
|
Loading…
Reference in New Issue
Block a user