From 97362cff32cbaec7323a39088eed77efdb43d06d Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Wed, 21 May 2014 11:11:53 +0200 Subject: [PATCH] Set an "active" role for the menubar icon on Mac Fixes #1730 --- src/mirall/theme.cpp | 31 ++++++++++++++++++++++++------- src/mirall/theme.h | 1 + 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/mirall/theme.cpp b/src/mirall/theme.cpp index 713e07cecb..349c3f1f83 100644 --- a/src/mirall/theme.cpp +++ b/src/mirall/theme.cpp @@ -16,6 +16,8 @@ #include "version.h" #include "config.h" +#include "mirall/utility.h" + #include #ifndef TOKEN_AUTH_ONLY #include @@ -125,10 +127,10 @@ QIcon Theme::themeIcon( const QString& name, bool sysTray ) const icon = QIcon::fromTheme( name ); } else { QList sizes; - sizes <<16 << 22 << 32 << 48 << 64 << 128; + sizes << 16 << 22 << 32 << 48 << 64 << 128; foreach (int size, sizes) { - QString pixmapName = QString::fromLatin1(":/mirall/theme/%1/%2-%3.png").arg(flavor).arg(name).arg(size); - if (QFile::exists(pixmapName)) { + QString pixmapName = QString::fromLatin1(":/mirall/theme/%3/%1-%2.png").arg(name).arg(size); + if (QFile::exists(pixmapName.arg(flavor))) { QPixmap px(pixmapName); // HACK, get rid of it by supporting FDO icon themes, this is really just emulating ubuntu-mono if (qgetenv("DESKTOP_SESSION") == "ubuntu") { @@ -138,6 +140,10 @@ QIcon Theme::themeIcon( const QString& name, bool sysTray ) const p.drawPixmap(px.rect(), mask, mask.rect()); } icon.addPixmap(px); + if (Utility::isMac()) { + QString selIcon = pixmapName.arg(systrayIconFlavorSelected(_mono)); + icon.addPixmap(QPixmap(selIcon), QIcon::Selected); + } } } if (icon.isNull()) { @@ -178,11 +184,22 @@ QString Theme::systrayIconFlavor(bool mono) const { QString flavor; if (mono) { -#ifdef Q_OS_MAC - flavor = QLatin1String("black"); -#else + if (Utility::isMac()) { + flavor = QLatin1String("black"); + } else { + flavor = QLatin1String("white"); + } + } else { + flavor = QLatin1String("colored"); + } + return flavor; +} + +QString Theme::systrayIconFlavorSelected(bool mono) const +{ + QString flavor; + if (mono) { flavor = QLatin1String("white"); -#endif } else { flavor = QLatin1String("colored"); } diff --git a/src/mirall/theme.h b/src/mirall/theme.h index 6e40b9f522..8ef6ef0150 100644 --- a/src/mirall/theme.h +++ b/src/mirall/theme.h @@ -131,6 +131,7 @@ public: /** colored, white or black */ QString systrayIconFlavor(bool mono) const; + QString systrayIconFlavorSelected(bool mono) const; #ifndef TOKEN_AUTH_ONLY /**