From 65070070869fb59f9d99324d0653d614d355e5de Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 27 Jun 2020 16:11:18 +0300 Subject: [PATCH] Added fade animation for total unread count badge in main menu. --- Telegram/SourceFiles/window/window_main_menu.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index 1ad785daf..7d29b7680 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -350,12 +350,14 @@ void MainMenu::ToggleAccountsButton::paintEvent(QPaintEvent *e) { auto hq = PainterHighQualityEnabler(p); p.fillPath(path, st::mainMenuCoverFg); - if (!_toggled) { - paintUnreadBadge(p); - } + paintUnreadBadge(p); } void MainMenu::ToggleAccountsButton::paintUnreadBadge(QPainter &p) { + const auto progress = 1. - _toggledAnimation.value(_toggled ? 1. : 0.); + if (!progress) { + return; + } validateUnreadBadge(); if (_unreadBadge.isEmpty()) { return; @@ -374,12 +376,16 @@ void MainMenu::ToggleAccountsButton::paintUnreadBadge(QPainter &p) { const auto isFill = IsFilledCover(); auto hq = PainterHighQualityEnabler(p); - p.setBrush(isFill ? st::mainMenuCloudBg : st::msgServiceBg); + auto brush = (isFill ? st::mainMenuCloudBg : st::msgServiceBg)->c; + brush.setAlphaF(progress * brush.alphaF()); + p.setBrush(brush); p.setPen(Qt::NoPen); p.drawRoundedRect(left, top, rectWidth, rectHeight, rectHeight / 2, rectHeight / 2); p.setFont(st.font); - p.setPen(isFill ? st::mainMenuCloudFg : st::msgServiceFg); + auto pen = (isFill ? st::mainMenuCloudFg : st::msgServiceFg)->c; + pen.setAlphaF(progress * pen.alphaF()); + p.setPen(pen); p.drawText(textLeft, textTop + st.font->ascent, _unreadBadge); }