diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index cd8def62ea..111c226809 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -848,8 +848,9 @@ void InnerWidget::paintEvent(QPaintEvent *e) { auto it = _inactiveQuickActions.begin(); while (it != _inactiveQuickActions.end()) { const auto raw = it->get(); - if ((!raw->ripple || raw->ripple->empty()) - && (!raw->rippleFg || raw->rippleFg->empty())) { + if (raw->finishedAt + && (ms - raw->finishedAt + > st::defaultRippleAnimation.hideDuration)) { _inactiveQuickActions.erase(it); } else { if (raw->data.msgBareId == history->peer->id.value) { @@ -2347,8 +2348,7 @@ void InnerWidget::mousePressReleased( raw->action, _filterId); } - _inactiveQuickActions.push_back( - QuickActionPtr{ _activeQuickAction.release() }); + deactivateQuickAction(); } } updateSelectedRow(); @@ -5157,8 +5157,7 @@ not_null InnerWidget::ensureQuickAction(int64 key) { if (_activeQuickAction->data.msgBareId == key) { return _activeQuickAction.get(); } else { - _inactiveQuickActions.push_back( - QuickActionPtr{ _activeQuickAction.release() }); + deactivateQuickAction(); } } _activeQuickAction = std::make_unique(); @@ -5204,4 +5203,12 @@ void InnerWidget::clearQuickActions() { _inactiveQuickActions.clear(); } +void InnerWidget::deactivateQuickAction() { + if (_activeQuickAction) { + _activeQuickAction->finishedAt = crl::now(); + _inactiveQuickActions.push_back( + QuickActionPtr{ _activeQuickAction.release() }); + } +} + } // namespace Dialogs diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h index e57dc42f09..44d1f8d497 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h @@ -486,6 +486,7 @@ private: [[nodiscard]] not_null ensureQuickAction( int64 key); + void deactivateQuickAction(); [[nodiscard]] bool lookupIsInBotAppButton( Row *row, diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_quick_action_context.h b/Telegram/SourceFiles/dialogs/ui/dialogs_quick_action_context.h index d60b6974f5..a1baa28730 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_quick_action_context.h +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_quick_action_context.h @@ -41,6 +41,7 @@ struct QuickActionContext { std::unique_ptr ripple; std::unique_ptr rippleFg; QuickDialogAction action; + crl::time finishedAt = 0; }; } // namespace Dialogs::Ui