From 738aff9c4fdc5b7c10fd518ac2a6339ed6781d06 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 3 Sep 2023 17:47:36 +0300 Subject: [PATCH] Fixed paint of mini icon in dialogs list even there is no space for it. --- .../dialogs/ui/dialogs_message_view.cpp | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp index 17eb3158d..928e80e88 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp @@ -328,15 +328,23 @@ void MessageView::paint( *_leftIcon, context.active, context.selected); - if (_hasPlainLinkAtBegin && !context.active) { - icon.paint(p, rect.topLeft(), rect.width(), palette->linkFg->c); - } else { - icon.paint(p, rect.topLeft(), rect.width()); + const auto w = (icon.width()); + if (rect.width() > w) { + if (_hasPlainLinkAtBegin && !context.active) { + icon.paint( + p, + rect.topLeft(), + rect.width(), + palette->linkFg->c); + } else { + icon.paint(p, rect.topLeft(), rect.width()); + } + rect.setLeft(rect.x() + w + st::dialogsMiniIconSkip); } - rect.setLeft(rect.x() + icon.width() + st::dialogsMiniIconSkip); } for (const auto &image : _imagesCache) { - if (rect.width() < st::dialogsMiniPreview) { + const auto w = st::dialogsMiniPreview + st::dialogsMiniPreviewSkip; + if (rect.width() < w) { break; } const auto mini = QRect( @@ -352,9 +360,7 @@ void MessageView::paint( FillSpoilerRect(p, mini, frame); } } - rect.setLeft(rect.x() - + st::dialogsMiniPreview - + st::dialogsMiniPreviewSkip); + rect.setLeft(rect.x() + w); } if (!_imagesCache.empty()) { rect.setLeft(rect.x() + st::dialogsMiniPreviewRight);