Improve quit prevent management.

This commit is contained in:
John Preston 2020-06-26 11:22:53 +04:00
parent 79a361ba43
commit 70fdc4eb39
2 changed files with 27 additions and 9 deletions

View file

@ -939,18 +939,35 @@ void Application::refreshGlobalProxy() {
} }
void Application::QuitAttempt() { void Application::QuitAttempt() {
auto prevents = false; if (!IsAppLaunched()
if (IsAppLaunched() && !Sandbox::Instance().isSavingSession()) { || Sandbox::Instance().isSavingSession()
if (const auto session = App().maybeActiveSession()) { || App().readyToQuit()) {
if (session->updates().isQuitPrevent() QApplication::quit();
|| session->api().isQuitPrevent() }
|| App().calls().isQuitPrevent()) { }
App().quitDelayed();
return; bool Application::readyToQuit() {
auto prevented = false;
if (_calls->isQuitPrevent()) {
prevented = true;
}
if (_domain->started()) {
for (const auto &[index, account] : _domain->accounts()) {
if (const auto session = account->maybeSession()) {
if (session->updates().isQuitPrevent()) {
prevented = true;
}
if (session->api().isQuitPrevent()) {
prevented = true;
}
} }
} }
} }
QApplication::quit(); if (prevented) {
quitDelayed();
return false;
}
return true;
} }
void Application::quitPreventFinished() { void Application::quitPreventFinished() {

View file

@ -297,6 +297,7 @@ private:
friend void App::quit(); friend void App::quit();
static void QuitAttempt(); static void QuitAttempt();
void quitDelayed(); void quitDelayed();
[[nodiscard]] bool readyToQuit();
void clearPasscodeLock(); void clearPasscodeLock();