From 7d67b3d00a0620b0a26375c0eeb45a6ee7dbd506 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 3 Oct 2024 11:16:22 +0400 Subject: [PATCH] Use circle userpics in reactions from forums. --- Telegram/SourceFiles/data/data_peer.cpp | 5 +++-- Telegram/SourceFiles/data/data_peer.h | 14 +++++++++++--- .../history/view/history_view_group_call_bar.cpp | 9 +++++---- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Telegram/SourceFiles/data/data_peer.cpp b/Telegram/SourceFiles/data/data_peer.cpp index bf3a7c84cf20f..35e43b158507b 100644 --- a/Telegram/SourceFiles/data/data_peer.cpp +++ b/Telegram/SourceFiles/data/data_peer.cpp @@ -394,7 +394,8 @@ void PeerData::paintUserpic( Ui::PeerUserpicView &view, int x, int y, - int size) const { + int size, + bool forceCircle) const { const auto cloud = userpicCloudImage(view); const auto ratio = style::DevicePixelRatio(); Ui::ValidateUserpicCache( @@ -402,7 +403,7 @@ void PeerData::paintUserpic( cloud, cloud ? nullptr : ensureEmptyUserpic().get(), size * ratio, - isForum()); + !forceCircle && isForum()); p.drawImage(QRect(x, y, size, size), view.cached); } diff --git a/Telegram/SourceFiles/data/data_peer.h b/Telegram/SourceFiles/data/data_peer.h index d252b0c01e890..5433ced7f5ceb 100644 --- a/Telegram/SourceFiles/data/data_peer.h +++ b/Telegram/SourceFiles/data/data_peer.h @@ -317,15 +317,23 @@ class PeerData { Ui::PeerUserpicView &view, int x, int y, - int size) const; + int size, + bool forceCircle = false) const; void paintUserpicLeft( Painter &p, Ui::PeerUserpicView &view, int x, int y, int w, - int size) const { - paintUserpic(p, view, rtl() ? (w - x - size) : x, y, size); + int size, + bool forceCircle = false) const { + paintUserpic( + p, + view, + rtl() ? (w - x - size) : x, + y, + size, + forceCircle); } void loadUserpic(); [[nodiscard]] bool hasUserpic() const; diff --git a/Telegram/SourceFiles/history/view/history_view_group_call_bar.cpp b/Telegram/SourceFiles/history/view/history_view_group_call_bar.cpp index 1406b7e5ba1fd..c460ab1e01fb1 100644 --- a/Telegram/SourceFiles/history/view/history_view_group_call_bar.cpp +++ b/Telegram/SourceFiles/history/view/history_view_group_call_bar.cpp @@ -38,13 +38,14 @@ void GenerateUserpicsInRow( const auto single = st.size; const auto shift = st.shift; const auto width = single + (limit - 1) * (single - shift); - if (result.width() != width * style::DevicePixelRatio()) { + const auto ratio = style::DevicePixelRatio(); + if (result.width() != width * ratio) { result = QImage( - QSize(width, single) * style::DevicePixelRatio(), + QSize(width, single) * ratio, QImage::Format_ARGB32_Premultiplied); } result.fill(Qt::transparent); - result.setDevicePixelRatio(style::DevicePixelRatio()); + result.setDevicePixelRatio(ratio); auto q = Painter(&result); auto hq = PainterHighQualityEnabler(q); @@ -54,7 +55,7 @@ void GenerateUserpicsInRow( for (auto i = count; i != 0;) { auto &entry = list[--i]; q.setCompositionMode(QPainter::CompositionMode_SourceOver); - entry.peer->paintUserpic(q, entry.view, x, 0, single); + entry.peer->paintUserpic(q, entry.view, x, 0, single, true); entry.uniqueKey = entry.peer->userpicUniqueKey(entry.view); q.setCompositionMode(QPainter::CompositionMode_Source); q.setBrush(Qt::NoBrush);