From 6bc634408d751cb974d4bc65d04c4b1de8cf482a Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Fri, 3 Jul 2020 07:15:36 +0300 Subject: [PATCH] Fix wrong userpic rounding in group/channel creation --- Telegram/SourceFiles/ui/special_buttons.cpp | 41 +++++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/ui/special_buttons.cpp b/Telegram/SourceFiles/ui/special_buttons.cpp index eb3f36065..91de26c83 100644 --- a/Telegram/SourceFiles/ui/special_buttons.cpp +++ b/Telegram/SourceFiles/ui/special_buttons.cpp @@ -807,9 +807,21 @@ QPoint UserpicButton::countPhotoPosition() const { } QImage UserpicButton::prepareRippleMask() const { - return Ui::RippleAnimation::ellipseMask(QSize( - _st.photoSize, - _st.photoSize)); + const auto size = QSize(_st.photoSize, _st.photoSize); + + switch (cUserpicCornersType()) { + case 0: + return Ui::RippleAnimation::rectMask(size); + + case 1: + return Ui::RippleAnimation::roundRectMask(size, st::buttonRadius); + + case 2: + return Ui::RippleAnimation::roundRectMask(size, st::dateRadius); + + default: + return Ui::RippleAnimation::ellipseMask(size); + } } QPoint UserpicButton::prepareRippleStartPosition() const { @@ -994,7 +1006,28 @@ void UserpicButton::prepareUserpicPixmap() { PainterHighQualityEnabler hq(p); p.setBrush(color); p.setPen(Qt::NoPen); - p.drawEllipse(0, 0, size, size); + switch (cUserpicCornersType()) { + case 0: + p.drawRoundedRect( + QRect{ 0, 0, size, size }, + 0, 0); + break; + + case 1: + p.drawRoundedRect( + QRect{ 0, 0, size, size }, + st::buttonRadius, st::buttonRadius); + break; + + case 2: + p.drawRoundedRect( + QRect{ 0, 0, size, size }, + st::dateRadius, st::dateRadius); + break; + + default: + p.drawEllipse(0, 0, size, size); + } }; _userpicHasImage = _peer ? (_peer->currentUserpic(_userpicView) || _role != Role::ChangePhoto)