From 823bbb1b77cc79d8fd8873ab5ad780f3b9401e6b Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 30 Nov 2022 13:55:46 +0400 Subject: [PATCH] Fix jump-to-topic area and unread counter overlapping. --- .../SourceFiles/dialogs/ui/dialogs_message_view.cpp | 2 +- .../SourceFiles/dialogs/ui/dialogs_topics_view.cpp | 13 ++++++++----- .../SourceFiles/dialogs/ui/dialogs_topics_view.h | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp index cc45d237e0..eff37e2da7 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp @@ -326,7 +326,7 @@ void MessageView::paint( rect.setLeft(rect.x() + _textCache.maxWidth()); } if (jump1) { - const auto x = (rect.width() > st::forumDialogJumpArrowSkip) + const auto x = (rect.width() > 0) ? rect.x() : finalRight; const auto add = st::forumDialogJumpArrowLeft; diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_topics_view.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_topics_view.cpp index d94cd89b89..b82b153a14 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_topics_view.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_topics_view.cpp @@ -119,6 +119,7 @@ void TopicsView::paint( ? st::dialogsTextPaletteArchiveOver : st::dialogsTextPaletteArchive); auto rect = geometry; + rect.setWidth(rect.width() - _lastTopicJumpGeometry.rightCut); auto skipBig = _jumpToTopic && !context.active; if (_titles.empty()) { p.drawText( @@ -225,10 +226,12 @@ QImage TopicsView::topicJumpRippleMask( } JumpToLastGeometry FillJumpToLastBg(QPainter &p, JumpToLastBg context) { - const auto availableWidth = context.geometry.width(); - const auto use1 = std::min(context.width1, availableWidth); - const auto use2 = std::min(context.width2, availableWidth); const auto padding = st::forumDialogJumpPadding; + const auto availableWidth = context.geometry.width(); + const auto want1 = std::min(context.width1, availableWidth); + const auto use1 = std::min(want1, availableWidth - padding.right()); + const auto use2 = std::min(context.width2, availableWidth); + const auto rightCut = want1 - use1; const auto origin = context.geometry.topLeft(); const auto delta = std::abs(use1 - use2); if (delta <= context.st->topicsSkip / 2) { @@ -236,7 +239,7 @@ JumpToLastGeometry FillJumpToLastBg(QPainter &p, JumpToLastBg context) { const auto h = context.st->topicsHeight + st::normalFont->height; const auto fill = QRect(origin, QSize(w, h)); const auto full = fill.marginsAdded(padding); - auto result = JumpToLastGeometry{ full }; + auto result = JumpToLastGeometry{ rightCut, full }; FillJumpToLastPrepared(p, { .st = context.st, .corners = context.corners, @@ -262,7 +265,7 @@ JumpToLastGeometry FillJumpToLastBg(QPainter &p, JumpToLastBg context) { padding.right(), padding.bottom(), }); - auto result = JumpToLastGeometry{ fill1, fill2 }; + auto result = JumpToLastGeometry{ rightCut, fill1, fill2 }; FillJumpToLastPrepared(p, { .st = context.st, .corners = context.corners, diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_topics_view.h b/Telegram/SourceFiles/dialogs/ui/dialogs_topics_view.h index 5b785d0567..ef712660da 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_topics_view.h +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_topics_view.h @@ -39,6 +39,7 @@ struct JumpToLastBg { int width2 = 0; }; struct JumpToLastGeometry { + int rightCut = 0; QRect area1; QRect area2;