Added ability to handle application deactivating.

This commit is contained in:
23rd 2020-12-03 19:34:18 +03:00
parent 4a20a4d739
commit a57d23f7d9
2 changed files with 20 additions and 13 deletions

View File

@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_user.h"
#include "base/timer.h"
#include "base/concurrent_timer.h"
#include "base/qt_signal_producer.h"
#include "base/unixtime.h"
#include "core/update_checker.h"
#include "core/shortcuts.h"
@ -245,11 +246,15 @@ void Application::run() {
}, _window->widget()->lifetime());
QCoreApplication::instance()->installEventFilter(this);
connect(
static_cast<QGuiApplication*>(QCoreApplication::instance()),
&QGuiApplication::applicationStateChanged,
this,
&Application::stateChanged);
appDeactivated(
) | rpl::start_with_next([=](bool deactivated) {
if (deactivated) {
handleAppDeactivated();
} else {
handleAppActivated();
}
}, _lifetime);
DEBUG_LOG(("Application Info: window created..."));
@ -633,14 +638,6 @@ void Application::checkLocalTime() {
}
}
void Application::stateChanged(Qt::ApplicationState state) {
if (state == Qt::ApplicationActive) {
handleAppActivated();
} else {
handleAppDeactivated();
}
}
void Application::handleAppActivated() {
checkLocalTime();
if (_window) {
@ -655,6 +652,15 @@ void Application::handleAppDeactivated() {
Ui::Tooltip::Hide();
}
rpl::producer<bool> Application::appDeactivated() const {
return base::qt_signal_producer(
static_cast<QGuiApplication*>(QCoreApplication::instance()),
&QGuiApplication::applicationStateChanged
) | rpl::map([=](Qt::ApplicationState state) {
return (state != Qt::ApplicationActive);
});
}
void Application::call_handleObservables() {
base::HandleObservables();
}

View File

@ -271,6 +271,7 @@ public:
void handleAppActivated();
void handleAppDeactivated();
[[nodiscard]] rpl::producer<bool> appDeactivated() const;
void switchDebugMode();
void switchFreeType();