diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.h b/Telegram/SourceFiles/platform/linux/specific_linux.h index e5e40cd2e..92445a933 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.h +++ b/Telegram/SourceFiles/platform/linux/specific_linux.h @@ -24,6 +24,10 @@ inline void WriteCrashDumpDetails() { inline void AutostartRequestStateFromSystem(Fn callback) { } +inline bool RunInBackground() { + return false; +} + inline bool PreventsQuit(Core::QuitReason reason) { return false; } diff --git a/Telegram/SourceFiles/platform/mac/specific_mac.h b/Telegram/SourceFiles/platform/mac/specific_mac.h index 12cc59024..187ceb7b1 100644 --- a/Telegram/SourceFiles/platform/mac/specific_mac.h +++ b/Telegram/SourceFiles/platform/mac/specific_mac.h @@ -31,6 +31,10 @@ inline bool SkipTaskbarSupported() { return false; } +inline bool RunInBackground() { + return true; +} + void ActivateThisProcess(); inline uint64 ActivationWindowId(not_null window) { diff --git a/Telegram/SourceFiles/platform/platform_specific.h b/Telegram/SourceFiles/platform/platform_specific.h index 460431e0d..7db700e00 100644 --- a/Telegram/SourceFiles/platform/platform_specific.h +++ b/Telegram/SourceFiles/platform/platform_specific.h @@ -44,6 +44,7 @@ void AutostartToggle(bool enabled, Fn done = nullptr); [[nodiscard]] bool AutostartSkip(); [[nodiscard]] bool TrayIconSupported(); [[nodiscard]] bool SkipTaskbarSupported(); +[[nodiscard]] bool RunInBackground(); void WriteCrashDumpDetails(); void NewVersionLaunched(int oldVersion); [[nodiscard]] QImage DefaultApplicationIcon(); diff --git a/Telegram/SourceFiles/platform/win/specific_win.h b/Telegram/SourceFiles/platform/win/specific_win.h index 0b0945dd5..acb2eda92 100644 --- a/Telegram/SourceFiles/platform/win/specific_win.h +++ b/Telegram/SourceFiles/platform/win/specific_win.h @@ -27,6 +27,10 @@ inline bool SkipTaskbarSupported() { return true; } +inline bool RunInBackground() { + return false; +} + inline bool PreventsQuit(Core::QuitReason reason) { return false; } diff --git a/Telegram/SourceFiles/settings/settings_advanced.cpp b/Telegram/SourceFiles/settings/settings_advanced.cpp index 8ac221a4f..d95c71f78 100644 --- a/Telegram/SourceFiles/settings/settings_advanced.cpp +++ b/Telegram/SourceFiles/settings/settings_advanced.cpp @@ -550,28 +550,29 @@ void SetupSystemIntegrationContent( Core::App().saveSettings(); }, roundIcon->lifetime()); #endif // OS_MAC_STORE - -#else // Q_OS_MAC - const auto closeToTaskbar = addSlidingCheckbox( - tr::lng_settings_close_to_taskbar(), - Core::App().settings().closeToTaskbar()); - - const auto closeToTaskbarShown = std::make_shared>(false); - Core::App().settings().workModeValue( - ) | rpl::start_with_next([=](WorkMode workMode) { - *closeToTaskbarShown = !Core::App().tray().has(); - }, closeToTaskbar->lifetime()); - - closeToTaskbar->toggleOn(closeToTaskbarShown->value()); - closeToTaskbar->entity()->checkedChanges( - ) | rpl::filter([=](bool checked) { - return (checked != Core::App().settings().closeToTaskbar()); - }) | rpl::start_with_next([=](bool checked) { - Core::App().settings().setCloseToTaskbar(checked); - Local::writeSettings(); - }, closeToTaskbar->lifetime()); #endif // Q_OS_MAC + if (!Platform::RunInBackground()) { + const auto closeToTaskbar = addSlidingCheckbox( + tr::lng_settings_close_to_taskbar(), + Core::App().settings().closeToTaskbar()); + + const auto closeToTaskbarShown = std::make_shared>(false); + Core::App().settings().workModeValue( + ) | rpl::start_with_next([=](WorkMode workMode) { + *closeToTaskbarShown = !Core::App().tray().has(); + }, closeToTaskbar->lifetime()); + + closeToTaskbar->toggleOn(closeToTaskbarShown->value()); + closeToTaskbar->entity()->checkedChanges( + ) | rpl::filter([=](bool checked) { + return (checked != Core::App().settings().closeToTaskbar()); + }) | rpl::start_with_next([=](bool checked) { + Core::App().settings().setCloseToTaskbar(checked); + Local::writeSettings(); + }, closeToTaskbar->lifetime()); + } + if (Platform::AutostartSupported() && controller) { const auto minimizedToggled = [=] { return cStartMinimized() diff --git a/Telegram/SourceFiles/window/main_window.cpp b/Telegram/SourceFiles/window/main_window.cpp index c1d17fa74..db485a177 100644 --- a/Telegram/SourceFiles/window/main_window.cpp +++ b/Telegram/SourceFiles/window/main_window.cpp @@ -416,8 +416,8 @@ bool MainWindow::hideNoQuit() { return true; } } - if (Platform::IsMac() || Core::App().settings().closeToTaskbar()) { - if (Platform::IsMac()) { + if (Platform::RunInBackground() || Core::App().settings().closeToTaskbar()) { + if (Platform::RunInBackground()) { closeWithoutDestroy(); } else { setWindowState(window()->windowState() | Qt::WindowMinimized);