From 534fcfa2f0c277fa048f0abdbafdf41397dfd3ec Mon Sep 17 00:00:00 2001 From: Igor Sikachyna Date: Thu, 10 Jun 2021 14:15:07 +0300 Subject: [PATCH] SYNERGY-1006 - Added template mode for icons on Big Sur and higher --- src/gui/src/MainWindow.cpp | 18 ++++++++++++++---- src/gui/src/OSXHelpers.h | 8 +++++++- src/gui/src/OSXHelpers.mm | 15 +++++++-------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/gui/src/MainWindow.cpp b/src/gui/src/MainWindow.cpp index 30067ba8f..45d8d0850 100644 --- a/src/gui/src/MainWindow.cpp +++ b/src/gui/src/MainWindow.cpp @@ -343,10 +343,20 @@ void MainWindow::setIcon(qSynergyState state) const QIcon icon; #ifdef Q_OS_MAC - if (isOSXUseDarkIcons()) - icon.addFile(synergyDarkIconFiles[state]); - else - icon.addFile(synergyLightIconFiles[state]); + IconsTheme theme = getOSXIconsTheme(); + switch(getOSXIconsTheme()) { + case IconsTheme::ICONS_DARK: + icon.addFile(synergyDarkIconFiles[state]); + break; + case IconsTheme::ICONS_LIGHT: + icon.addFile(synergyLightIconFiles[state]); + break; + case IconsTheme::ICONS_TEMPLATE: + default: + icon.addFile(synergyDarkIconFiles[state]); + icon.setIsMask(true); + break; + } #else icon.addFile(synergyDefaultIconFiles[state]); #endif diff --git a/src/gui/src/OSXHelpers.h b/src/gui/src/OSXHelpers.h index 05643ad50..4d6c36c78 100644 --- a/src/gui/src/OSXHelpers.h +++ b/src/gui/src/OSXHelpers.h @@ -19,7 +19,13 @@ #define OSXHELPERS__H +enum IconsTheme { + ICONS_DARK, + ICONS_LIGHT, + ICONS_TEMPLATE +}; + bool isOSXInterfaceStyleDark(); -bool isOSXUseDarkIcons(); +IconsTheme getOSXIconsTheme(); #endif diff --git a/src/gui/src/OSXHelpers.mm b/src/gui/src/OSXHelpers.mm index ce5aa4592..a58d620a0 100644 --- a/src/gui/src/OSXHelpers.mm +++ b/src/gui/src/OSXHelpers.mm @@ -30,13 +30,12 @@ isOSXInterfaceStyleDark() return (style && [style isKindOfClass:[NSString class]] && NSOrderedSame == [style caseInsensitiveCompare:@"dark"]); } -bool -isOSXUseDarkIcons() +IconsTheme +getOSXIconsTheme() { - if (@available(macOS 11, *)) { - return true; - } - else { - return isOSXInterfaceStyleDark(); - } + if (@available(macOS 11, *)) + return IconsTheme::ICONS_TEMPLATE; + else if(isOSXInterfaceStyleDark()) + return IconsTheme::ICONS_DARK; + return IconsTheme::ICONS_LIGHT; }