mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-07 15:43:55 +02:00
Added hiding of Blob animations at application deactivating.
This commit is contained in:
parent
a57d23f7d9
commit
79d5a49e7c
4 changed files with 30 additions and 3 deletions
|
@ -250,6 +250,9 @@ private:
|
|||
base::flat_map<uint32, not_null<Row*>> _speakingRowBySsrc;
|
||||
Ui::Animations::Basic _speakingAnimation;
|
||||
|
||||
crl::time _speakingAnimationHideLastTime = 0;
|
||||
bool _skipRowLevelUpdate = false;
|
||||
|
||||
Ui::CrossLineAnimation _inactiveCrossLine;
|
||||
Ui::CrossLineAnimation _coloredCrossLine;
|
||||
|
||||
|
@ -513,7 +516,27 @@ MembersController::MembersController(
|
|||
_coloredCrossLine.invalidate();
|
||||
}, _lifetime);
|
||||
|
||||
Core::App().appDeactivates(
|
||||
) | rpl::start_with_next([=](bool hide) {
|
||||
_speakingAnimationHideLastTime = hide ? crl::now() : 0;
|
||||
for (const auto [_, row] : _speakingRowBySsrc) {
|
||||
if (hide) {
|
||||
row->updateLevel(0.);
|
||||
}
|
||||
updateRowLevel(row, 0.);
|
||||
if (!hide && !_speakingAnimation.animating()) {
|
||||
_speakingAnimation.start();
|
||||
}
|
||||
}
|
||||
_skipRowLevelUpdate = hide;
|
||||
}, _lifetime);
|
||||
|
||||
_speakingAnimation.init([=](crl::time now) {
|
||||
if (const auto &last = _speakingAnimationHideLastTime; (last > 0)
|
||||
&& (now - last >= Ui::Paint::Blobs::kHideBlobsDuration)) {
|
||||
_speakingAnimation.stop();
|
||||
return false;
|
||||
}
|
||||
for (const auto [ssrc, row] : _speakingRowBySsrc) {
|
||||
row->updateBlobAnimation(now);
|
||||
delegate()->peerListUpdateRow(row);
|
||||
|
@ -683,6 +706,9 @@ void MembersController::removeRow(not_null<Row*> row) {
|
|||
void MembersController::updateRowLevel(
|
||||
not_null<Row*> row,
|
||||
float level) {
|
||||
if (_skipRowLevelUpdate) {
|
||||
return;
|
||||
}
|
||||
row->updateLevel(level);
|
||||
}
|
||||
|
||||
|
|
|
@ -223,6 +223,7 @@ GroupPanel::GroupPanel(not_null<GroupCall*> call)
|
|||
, _settings(widget(), st::groupCallSettings)
|
||||
, _mute(std::make_unique<Ui::CallMuteButton>(
|
||||
widget(),
|
||||
Core::App().appDeactivates(),
|
||||
Ui::CallMuteButtonState{
|
||||
.text = tr::lng_group_call_connecting(tr::now),
|
||||
.type = Ui::CallMuteButtonType::Connecting,
|
||||
|
|
|
@ -247,7 +247,7 @@ void Application::run() {
|
|||
|
||||
QCoreApplication::instance()->installEventFilter(this);
|
||||
|
||||
appDeactivated(
|
||||
appDeactivates(
|
||||
) | rpl::start_with_next([=](bool deactivated) {
|
||||
if (deactivated) {
|
||||
handleAppDeactivated();
|
||||
|
@ -652,7 +652,7 @@ void Application::handleAppDeactivated() {
|
|||
Ui::Tooltip::Hide();
|
||||
}
|
||||
|
||||
rpl::producer<bool> Application::appDeactivated() const {
|
||||
rpl::producer<bool> Application::appDeactivates() const {
|
||||
return base::qt_signal_producer(
|
||||
static_cast<QGuiApplication*>(QCoreApplication::instance()),
|
||||
&QGuiApplication::applicationStateChanged
|
||||
|
|
|
@ -271,7 +271,7 @@ public:
|
|||
|
||||
void handleAppActivated();
|
||||
void handleAppDeactivated();
|
||||
[[nodiscard]] rpl::producer<bool> appDeactivated() const;
|
||||
[[nodiscard]] rpl::producer<bool> appDeactivates() const;
|
||||
|
||||
void switchDebugMode();
|
||||
void switchFreeType();
|
||||
|
|
Loading…
Add table
Reference in a new issue