diff --git a/UI/forms/images/obs_macos.png b/UI/forms/images/obs_macos.png new file mode 100644 index 000000000..57f2e0a7b Binary files /dev/null and b/UI/forms/images/obs_macos.png differ diff --git a/UI/forms/images/obs_paused_macos.png b/UI/forms/images/obs_paused_macos.png new file mode 100644 index 000000000..f80f40d74 Binary files /dev/null and b/UI/forms/images/obs_paused_macos.png differ diff --git a/UI/forms/images/tray_active_macos.png b/UI/forms/images/tray_active_macos.png new file mode 100644 index 000000000..5864c61a1 Binary files /dev/null and b/UI/forms/images/tray_active_macos.png differ diff --git a/UI/forms/obs.qrc b/UI/forms/obs.qrc index 97118eba7..9ec541bff 100644 --- a/UI/forms/obs.qrc +++ b/UI/forms/obs.qrc @@ -11,8 +11,11 @@ images/down.svg images/up.svg images/obs.png + images/obs_macos.png images/obs_paused.png + images/obs_paused_macos.png images/tray_active.png + images/tray_active_macos.png images/expand.svg images/unlocked.svg images/locked.svg diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 98ce9fb9e..3423762da 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -5619,10 +5619,19 @@ inline void OBSBasic::OnActivate() App()->IncrementSleepInhibition(); UpdateProcessPriority(); - if (trayIcon && trayIcon->isVisible()) + if (trayIcon && trayIcon->isVisible()) { +#ifdef __APPLE__ + QIcon trayMask = + QIcon(":/res/images/tray_active_macos.png"); + trayMask.setIsMask(true); + trayIcon->setIcon( + QIcon::fromTheme("obs-tray", trayMask)); +#else trayIcon->setIcon(QIcon::fromTheme( "obs-tray-active", QIcon(":/res/images/tray_active.png"))); +#endif + } } } @@ -5637,19 +5646,42 @@ inline void OBSBasic::OnDeactivate() App()->DecrementSleepInhibition(); ClearProcessPriority(); - if (trayIcon && trayIcon->isVisible()) - trayIcon->setIcon(QIcon::fromTheme( - "obs-tray", QIcon(":/res/images/obs.png"))); + if (trayIcon && trayIcon->isVisible()) { +#ifdef __APPLE__ + QIcon trayIconFile = + QIcon(":/res/images/obs_macos.png"); + trayIconFile.setIsMask(true); +#else + QIcon trayIconFile = QIcon(":/res/images/obs.png"); +#endif + trayIcon->setIcon( + QIcon::fromTheme("obs-tray", trayIconFile)); + } } else if (outputHandler->Active() && trayIcon && trayIcon->isVisible()) { - if (os_atomic_load_bool(&recording_paused)) - trayIcon->setIcon(QIcon::fromTheme( - "obs-tray-paused", - QIcon(":/res/images/obs_paused.png"))); - else - trayIcon->setIcon(QIcon::fromTheme( - "obs-tray-active", - QIcon(":/res/images/tray_active.png"))); + if (os_atomic_load_bool(&recording_paused)) { +#ifdef __APPLE__ + QIcon trayIconFile = + QIcon(":/res/images/obs_paused_macos.png"); + trayIconFile.setIsMask(true); +#else + QIcon trayIconFile = + QIcon(":/res/images/obs_paused.png"); +#endif + trayIcon->setIcon(QIcon::fromTheme("obs-tray-paused", + trayIconFile)); + } else { +#ifdef __APPLE__ + QIcon trayIconFile = + QIcon(":/res/images/tray_active_macos.png"); + trayIconFile.setIsMask(true); +#else + QIcon trayIconFile = + QIcon(":/res/images/tray_active.png"); +#endif + trayIcon->setIcon(QIcon::fromTheme("obs-tray-active", + trayIconFile)); + } } } @@ -7536,9 +7568,14 @@ void OBSBasic::ToggleShowHide() void OBSBasic::SystemTrayInit() { +#ifdef __APPLE__ + QIcon trayIconFile = QIcon(":/res/images/obs_macos.png"); + trayIconFile.setIsMask(true); +#else + QIcon trayIconFile = QIcon(":/res/images/obs.png"); +#endif trayIcon.reset(new QSystemTrayIcon( - QIcon::fromTheme("obs-tray", QIcon(":/res/images/obs.png")), - this)); + QIcon::fromTheme("obs-tray", trayIconFile), this)); trayIcon->setToolTip("OBS Studio"); showHide = new QAction(QTStr("Basic.SystemTray.Show"), trayIcon.data()); @@ -8114,10 +8151,18 @@ void OBSBasic::PauseRecording() ui->statusbar->RecordingPaused(); - if (trayIcon && trayIcon->isVisible()) - trayIcon->setIcon(QIcon::fromTheme( - "obs-tray-paused", - QIcon(":/res/images/obs_paused.png"))); + if (trayIcon && trayIcon->isVisible()) { +#ifdef __APPLE__ + QIcon trayIconFile = + QIcon(":/res/images/obs_paused_macos.png"); + trayIconFile.setIsMask(true); +#else + QIcon trayIconFile = + QIcon(":/res/images/obs_paused.png"); +#endif + trayIcon->setIcon(QIcon::fromTheme("obs-tray-paused", + trayIconFile)); + } os_atomic_set_bool(&recording_paused, true); @@ -8145,10 +8190,18 @@ void OBSBasic::UnpauseRecording() ui->statusbar->RecordingUnpaused(); - if (trayIcon && trayIcon->isVisible()) - trayIcon->setIcon(QIcon::fromTheme( - "obs-tray-active", - QIcon(":/res/images/tray_active.png"))); + if (trayIcon && trayIcon->isVisible()) { +#ifdef __APPLE__ + QIcon trayIconFile = + QIcon(":/res/images/tray_active_macos.png"); + trayIconFile.setIsMask(true); +#else + QIcon trayIconFile = + QIcon(":/res/images/tray_active.png"); +#endif + trayIcon->setIcon(QIcon::fromTheme("obs-tray-active", + trayIconFile)); + } os_atomic_set_bool(&recording_paused, false);