From 12d8d193a167b796f90d3c324e8129d606534b20 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Fri, 2 Sep 2022 17:08:04 +0400 Subject: [PATCH] Create QSystemTrayIcon even when tray is not supported QSystemTrayIcon provides no public API to know when tray icon support appears, but can subscribe to native events internally This should help for environments where a race condition between applications autostart and tray service autostart present in case Qt is subscribed internally --- Telegram/SourceFiles/tray.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/tray.cpp b/Telegram/SourceFiles/tray.cpp index cdd2547efc..108d5fffd1 100644 --- a/Telegram/SourceFiles/tray.cpp +++ b/Telegram/SourceFiles/tray.cpp @@ -21,17 +21,13 @@ Tray::Tray() { void Tray::create() { rebuildMenu(); using WorkMode = Settings::WorkMode; - if (Platform::TrayIconSupported() - && (Core::App().settings().workMode() != WorkMode::WindowOnly)) { + if (Core::App().settings().workMode() != WorkMode::WindowOnly) { _tray.createIcon(); } Core::App().settings().workModeValue( ) | rpl::combine_previous( ) | rpl::start_with_next([=](WorkMode previous, WorkMode state) { - if (!Platform::TrayIconSupported()) { - return; - } const auto wasHasIcon = (previous != WorkMode::WindowOnly); const auto nowHasIcon = (state != WorkMode::WindowOnly); if (wasHasIcon != nowHasIcon) { @@ -182,7 +178,7 @@ void Tray::toggleSoundNotifications() { } bool Tray::has() const { - return _tray.hasIcon(); + return _tray.hasIcon() && Platform::TrayIconSupported(); } } // namespace Core