From 8bf30e67a91fae236d85fd88abff7683d945897b Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 29 Dec 2025 18:09:31 +0300 Subject: [PATCH] Removed animation of summarize button when it is not hovered. --- .../history/view/history_view_reply.cpp | 13 ++++++++- .../view/history_view_transcribe_button.cpp | 27 +++++++++++++------ .../view/history_view_transcribe_button.h | 13 ++++----- 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/Telegram/SourceFiles/history/view/history_view_reply.cpp b/Telegram/SourceFiles/history/view/history_view_reply.cpp index c633812212..80cf1a090e 100644 --- a/Telegram/SourceFiles/history/view/history_view_reply.cpp +++ b/Telegram/SourceFiles/history/view/history_view_reply.cpp @@ -32,6 +32,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/text/text_utilities.h" #include "ui/painter.h" +#include "ui/ui_utility.h" #include "ui/power_saving.h" #include "window/window_session_controller.h" #include "styles/style_chat.h" @@ -900,11 +901,21 @@ void Reply::paint( colorCollectible) : stm->msgServiceFg->c; _summarize->particles.setColor(nameColor); + const auto paused = context.paused || On(PowerSaving::kChatEffects); _summarize->particles.paint( p, QRect(0, 0, w, _height), context.now, - context.paused); + paused); + if (!paused) { + const auto session = &view->history()->session(); + const auto r = QRect(x, y, w, _height); + Ui::PostponeCall(session, [=, itemId = view->data()->fullId()] { + if (const auto i = session->data().message(itemId)) { + session->data().requestItemRepaint(i, r); + } + }); + } p.setClipping(false); p.translate(-x, -y); } diff --git a/Telegram/SourceFiles/history/view/history_view_transcribe_button.cpp b/Telegram/SourceFiles/history/view/history_view_transcribe_button.cpp index e4070baf3f..1ff278947b 100644 --- a/Telegram/SourceFiles/history/view/history_view_transcribe_button.cpp +++ b/Telegram/SourceFiles/history/view/history_view_transcribe_button.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/effects/ripple_animation.h" #include "ui/effects/ministar_particles.h" #include "ui/painter.h" +#include "ui/power_saving.h" #include "ui/rect.h" #include "ui/ui_utility.h" #include "api/api_transcribes.h" @@ -138,14 +139,19 @@ void TranscribeButton::paint( _particles->setSpeed(0.2); } p.setClipRegion(QRegion(r, QRegion::Ellipse)); - _particles->paint(p, r, context.now, context.paused); + const auto paused = context.paused + || (!_summarizeHovered && !_loading) + || On(PowerSaving::kChatEffects); + _particles->paint(p, r, context.now, paused); p.setClipping(false); - const auto session = &_item->history()->session(); - Ui::PostponeCall(session, [=, itemId = _item->fullId()] { - if (const auto item = session->data().message(itemId)) { - session->data().requestItemRepaint(item); - } - }); + if (!paused) { + const auto session = &_item->history()->session(); + Ui::PostponeCall(session, [=, itemId = _item->fullId()] { + if (const auto i = session->data().message(itemId)) { + session->data().requestItemRepaint(i, r); + } + }); + } (_item->history()->session().api().transcribes().summary( _item).shown ? st::mediaviewFullScreenButton.icon @@ -339,7 +345,12 @@ ClickHandlerPtr TranscribeButton::link() { bool TranscribeButton::contains(const QPoint &p) { _lastStatePoint = p - _lastPaintedPoint; - return QRect(_lastPaintedPoint, size()).contains(p); + if (_summarize) { + _summarizeHovered = QRect(_lastPaintedPoint, size()).contains(p); + return _summarizeHovered; + } else { + return QRect(_lastPaintedPoint, size()).contains(p); + } } void TranscribeButton::addRipple(Fn callback) { diff --git a/Telegram/SourceFiles/history/view/history_view_transcribe_button.h b/Telegram/SourceFiles/history/view/history_view_transcribe_button.h index 8373e6e278..8c2b2f1e2b 100644 --- a/Telegram/SourceFiles/history/view/history_view_transcribe_button.h +++ b/Telegram/SourceFiles/history/view/history_view_transcribe_button.h @@ -48,16 +48,17 @@ private: const bool _summarize = false; const QSize _size; - mutable std::unique_ptr _animation; - mutable std::unique_ptr _particles; - std::unique_ptr _ripple; ClickHandlerPtr _link; - QString _text; + std::unique_ptr _animation; + std::unique_ptr _particles; + std::unique_ptr _ripple; Ui::Animations::Simple _openedAnimation; - bool _loading = false; - bool _opened = false; + QString _text; QPoint _lastPaintedPoint; QPoint _lastStatePoint; + bool _summarizeHovered = false; + bool _loading = false; + bool _opened = false; };