From 4e8e096fdb6581c2b2051c65632c72ae41e1fee3 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 27 Nov 2024 12:16:37 +0300 Subject: [PATCH] Removed display of corner badges in narrowed mode when entry has unread. --- Telegram/SourceFiles/dialogs/dialogs_row.cpp | 17 +++++++++++------ Telegram/SourceFiles/dialogs/dialogs_row.h | 9 ++++++--- .../SourceFiles/dialogs/ui/dialogs_layout.cpp | 12 +++++++++++- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs_row.cpp b/Telegram/SourceFiles/dialogs/dialogs_row.cpp index 8f974aa09..a9dae4d96 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_row.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_row.cpp @@ -302,7 +302,8 @@ void BasicRow::paintUserpic( not_null entry, PeerData *peer, Ui::VideoUserpic *videoUserpic, - const Ui::PaintContext &context) const { + const Ui::PaintContext &context, + bool hasUnreadBadgesAbove) const { PaintUserpic(p, entry, peer, videoUserpic, _userpic, context); } @@ -371,12 +372,15 @@ void Row::setCornerBadgeShown( void Row::updateCornerBadgeShown( not_null peer, - Fn updateCallback) const { + Fn updateCallback, + bool hasUnreadBadgesAbove) const { const auto user = peer->asUser(); const auto now = user ? base::unixtime::now() : TimeId(); const auto channel = user ? nullptr : peer->asChannel(); const auto nextLayer = [&] { - if (user && Data::IsUserOnline(user, now)) { + if (hasUnreadBadgesAbove) { + return kNoneLayer; + } else if (user && Data::IsUserOnline(user, now)) { return kTopLayer; } else if (channel && (Data::ChannelHasActiveCall(channel) @@ -533,9 +537,10 @@ void Row::paintUserpic( not_null entry, PeerData *peer, Ui::VideoUserpic *videoUserpic, - const Ui::PaintContext &context) const { + const Ui::PaintContext &context, + bool hasUnreadBadgesAbove) const { if (peer) { - updateCornerBadgeShown(peer); + updateCornerBadgeShown(peer, nullptr, hasUnreadBadgesAbove); } const auto cornerBadgeShown = !_cornerBadgeUserpic @@ -551,7 +556,7 @@ void Row::paintUserpic( ? storiesFolder->storiesCount() : false; if (!cornerBadgeShown && !storiesHas) { - BasicRow::paintUserpic(p, entry, peer, videoUserpic, context); + BasicRow::paintUserpic(p, entry, peer, videoUserpic, context, false); if (!peer || !_cornerBadgeShown) { _cornerBadgeUserpic = nullptr; } diff --git a/Telegram/SourceFiles/dialogs/dialogs_row.h b/Telegram/SourceFiles/dialogs/dialogs_row.h index b5181ba66..3850b880e 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_row.h +++ b/Telegram/SourceFiles/dialogs/dialogs_row.h @@ -51,7 +51,8 @@ public: not_null entry, PeerData *peer, Ui::VideoUserpic *videoUserpic, - const Ui::PaintContext &context) const; + const Ui::PaintContext &context, + bool hasUnreadBadgesAbove) const; void addRipple(QPoint origin, QSize size, Fn updateCallback); virtual void stopLastRipple(); @@ -98,13 +99,15 @@ public: void updateCornerBadgeShown( not_null peer, - Fn updateCallback = nullptr) const; + Fn updateCallback = nullptr, + bool hasUnreadBadgesAbove = false) const; void paintUserpic( Painter &p, not_null entry, PeerData *peer, Ui::VideoUserpic *videoUserpic, - const Ui::PaintContext &context) const final override; + const Ui::PaintContext &context, + bool hasUnreadBadgesAbove) const final override; [[nodiscard]] bool lookupIsInTopicJump(int x, int y) const; void stopLastRipple() override; diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index d0324d3f2..fc911b90f 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -405,7 +405,17 @@ void PaintRow( row->userpicView(), context); } else { - row->paintUserpic(p, entry, from, videoUserpic, context); + row->paintUserpic( + p, + entry, + from, + videoUserpic, + context, + context.narrow + && !badgesState.empty() + && !draft + && item + && !item->isEmpty()); } const auto nameleft = context.st->nameLeft;