From cd2f09dad8e5a063e610fef0513e68fb04b3f409 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 18 May 2026 12:20:00 +0300 Subject: [PATCH] Slightly improved style of top bar suggestions. --- Telegram/SourceFiles/dialogs/dialogs.style | 1 - .../ui/dialogs_top_bar_suggestion_content.cpp | 37 +++++++++++++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style index b9edba475c..fcf8a9abd5 100644 --- a/Telegram/SourceFiles/dialogs/dialogs.style +++ b/Telegram/SourceFiles/dialogs/dialogs.style @@ -894,7 +894,6 @@ dialogsTopBarSuggestionAboutStyle: TextStyle(defaultTextStyle) { font: font(11px); } dialogsTopBarSuggestionMargins: margins(8px, 8px, 8px, 8px); -dialogsTopBarSuggestionRadius: 12px; dialogsTopBarSuggestionShadow: BoxShadow { blurRadius: 8px; offset: point(0px, 2px); diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_top_bar_suggestion_content.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_top_bar_suggestion_content.cpp index 8876b83efa..e270758a32 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_top_bar_suggestion_content.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_top_bar_suggestion_content.cpp @@ -43,6 +43,14 @@ namespace { constexpr auto kLinesForPhoto = 3; +[[nodiscard]] int PillRadius() { + const auto padding = st::msgReplyPadding.top(); + return (padding + + st::semiboldTextStyle.font->height + + st::dialogsTopBarSuggestionAboutStyle.font->height + + padding) / 2; +} + void PaintTopFade(QPainter &p, int outerWidth, int fadeHeight) { if (fadeHeight <= 0) { return; @@ -134,8 +142,15 @@ not_null CreateUnconfirmedAuthContent( content->paintOn([=](QPainter &p) { const auto outer = content->rect(); const auto pill = outer - margins; - const auto radius = st::dialogsTopBarSuggestionRadius; PaintTopFade(p, outer.width(), margins.top() + pill.height() / 2); + if (pill.isEmpty()) { + return; + } + const auto radius = std::min({ + PillRadius(), + pill.width() / 2, + pill.height() / 2, + }); wrap->shadow().paint(p, pill, radius); auto hq = PainterHighQualityEnabler(p); p.setBrush(st::dialogsBg); @@ -273,9 +288,15 @@ void TopBarSuggestionContent::setRightIcon(RightIcon icon) { const auto rightHide = _rightHide.get(); sizeValue() | rpl::filter_size( ) | rpl::on_next([=](const QSize &s) { + const auto &button = st::dialogsCancelSearchInPeer; + const auto padding = PillRadius() + - button.rippleAreaSize / 2; + const auto pillHeight = s.height() - rect::m::sum::v(margins); rightHide->moveToRight( - margins.right() + st::buttonRadius, - margins.top() + st::lineWidth); + margins.right() + padding - button.rippleAreaPosition.x(), + margins.top() + + (pillHeight - button.rippleAreaSize) / 2 + - button.rippleAreaPosition.y()); }, rightHide->lifetime()); rightHide->show(); } else if (icon == RightIcon::Arrow) { @@ -340,10 +361,18 @@ void TopBarSuggestionContent::draw(QPainter &p) { const auto outer = Ui::RpWidget::rect(); const auto &margins = st::dialogsTopBarSuggestionMargins; const auto pill = outer - margins; - const auto radius = st::dialogsTopBarSuggestionRadius; PaintTopFade(p, outer.width(), margins.top() + pill.height() / 2); + if (pill.isEmpty()) { + return; + } + const auto radius = std::min({ + PillRadius(), + pill.width() / 2, + pill.height() / 2, + }); + _shadow.paint(p, pill, radius); auto hq = PainterHighQualityEnabler(p);