diff --git a/src/gui/entry/EntryModel.cpp b/src/gui/entry/EntryModel.cpp index 04b6abc1..bf7eca0c 100644 --- a/src/gui/entry/EntryModel.cpp +++ b/src/gui/entry/EntryModel.cpp @@ -30,6 +30,9 @@ #include "core/Global.h" #include "core/Group.h" #include "core/Metadata.h" +#ifdef Q_OS_MACOS +#include "gui/macutils/MacUtils.h" +#endif EntryModel::EntryModel(QObject* parent) : QAbstractTableModel(parent) @@ -270,6 +273,11 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const } else if (role == Qt::ForegroundRole) { if (entry->hasReferences()) { QPalette p; +#ifdef Q_OS_MACOS + if (macUtils()->isDarkMode()) { + return QVariant(p.color(QPalette::Inactive, QPalette::Dark)); + } +#endif return QVariant(p.color(QPalette::Active, QPalette::Mid)); } else if (entry->foregroundColor().isValid()) { return QVariant(entry->foregroundColor()); diff --git a/src/gui/macutils/AppKit.h b/src/gui/macutils/AppKit.h index ecd11c42..cdb822ff 100644 --- a/src/gui/macutils/AppKit.h +++ b/src/gui/macutils/AppKit.h @@ -35,6 +35,7 @@ public: bool activateProcess(pid_t pid); bool hideProcess(pid_t pid); bool isHidden(pid_t pid); + bool isDarkMode(); private: void *self; diff --git a/src/gui/macutils/AppKitImpl.h b/src/gui/macutils/AppKitImpl.h index 97673b07..3bf2d20e 100644 --- a/src/gui/macutils/AppKitImpl.h +++ b/src/gui/macutils/AppKitImpl.h @@ -30,5 +30,6 @@ - (bool) activateProcess:(pid_t) pid; - (bool) hideProcess:(pid_t) pid; - (bool) isHidden:(pid_t) pid; +- (bool) isDarkMode; @end diff --git a/src/gui/macutils/AppKitImpl.mm b/src/gui/macutils/AppKitImpl.mm index ca4e9f10..3727878e 100644 --- a/src/gui/macutils/AppKitImpl.mm +++ b/src/gui/macutils/AppKitImpl.mm @@ -127,4 +127,12 @@ bool AppKit::isHidden(pid_t pid) return [static_cast(self) isHidden:pid]; } +bool AppKit::isDarkMode() +{ + NSDictionary *dict = [[NSUserDefaults standardUserDefaults] persistentDomainForName:NSGlobalDomain]; + id style = [dict objectForKey:@"AppleInterfaceStyle"]; + return ( style && [style isKindOfClass:[NSString class]] + && NSOrderedSame == [style caseInsensitiveCompare:@"dark"] ); +} + @end diff --git a/src/gui/macutils/MacUtils.cpp b/src/gui/macutils/MacUtils.cpp index 602c1958..c362fe1b 100644 --- a/src/gui/macutils/MacUtils.cpp +++ b/src/gui/macutils/MacUtils.cpp @@ -70,3 +70,8 @@ bool MacUtils::isHidden() { return m_appkit->isHidden(m_appkit->ownProcessId()); } + +bool MacUtils::isDarkMode() +{ + return m_appkit->isDarkMode(); +} diff --git a/src/gui/macutils/MacUtils.h b/src/gui/macutils/MacUtils.h index 67c53dd2..39a06bd8 100644 --- a/src/gui/macutils/MacUtils.h +++ b/src/gui/macutils/MacUtils.h @@ -37,6 +37,7 @@ public: bool raiseOwnWindow(); bool hideOwnWindow(); bool isHidden(); + bool isDarkMode(); private: explicit MacUtils(QObject* parent = nullptr);