From 76314e3c03267dc06b9c6d4cd63894f0ffdd0bbb Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 31 Jul 2024 13:43:55 +0200 Subject: [PATCH] Close additional windows on passcode lock. --- Telegram/SourceFiles/core/application.cpp | 40 ++++++++++++++--------- Telegram/SourceFiles/core/application.h | 1 + 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index 94fa2ae4d..39b7ac32f 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -188,8 +188,11 @@ Application::Application() _platformIntegration->init(); passcodeLockChanges( - ) | rpl::start_with_next([=] { + ) | rpl::start_with_next([=](bool locked) { _shouldLockAt = 0; + if (locked) { + closeAdditionalWindows(); + } }, _lifetime); passcodeLockChanges( @@ -211,6 +214,16 @@ Application::Application() }, _lifetime); } +void Application::closeAdditionalWindows() { + Payments::CheckoutProcess::ClearAll(); + for (const auto &[index, account] : _domain->accounts()) { + if (account->sessionExists()) { + account->session().attachWebView().closeAll(); + } + } + _iv->closeAll(); +} + Application::~Application() { if (_saveSettingsTimer && _saveSettingsTimer->isActive()) { Local::writeSettings(); @@ -230,13 +243,7 @@ Application::~Application() { // // For example Domain::removeRedundantAccounts() is called from // Domain::finish() and there is a violation on Ensures(started()). - Payments::CheckoutProcess::ClearAll(); - for (const auto &[index, account] : _domain->accounts()) { - if (account->sessionExists()) { - account->session().attachWebView().closeAll(); - } - } - _iv->closeAll(); + closeAdditionalWindows(); _domain->finish(); @@ -1087,14 +1094,15 @@ void Application::checkSendPaths() { void Application::checkStartUrl() { if (!cStartUrl().isEmpty()) { const auto url = cStartUrl(); - if (url.startsWith("tonsite://", Qt::CaseInsensitive)) { - cSetStartUrl(QString()); - iv().showTonSite(url, {}); - } else if (_lastActivePrimaryWindow - && !_lastActivePrimaryWindow->locked()) { - cSetStartUrl(QString()); - if (!openLocalUrl(url, {})) { - cSetStartUrl(url); + if (!Core::App().passcodeLocked()) { + if (url.startsWith("tonsite://", Qt::CaseInsensitive)) { + cSetStartUrl(QString()); + iv().showTonSite(url, {}); + } else if (_lastActivePrimaryWindow) { + cSetStartUrl(QString()); + if (!openLocalUrl(url, {})) { + cSetStartUrl(url); + } } } } diff --git a/Telegram/SourceFiles/core/application.h b/Telegram/SourceFiles/core/application.h index eca07e751..373ba3546 100644 --- a/Telegram/SourceFiles/core/application.h +++ b/Telegram/SourceFiles/core/application.h @@ -378,6 +378,7 @@ private: void showOpenGLCrashNotification(); void clearPasscodeLock(); + void closeAdditionalWindows(); bool openCustomUrl( const QString &protocol,