From 171089088627fa4ddbadddee40a825681f3256e7 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 22 Apr 2022 16:07:10 +0300 Subject: [PATCH] Added ability to change width between pinned bar animation entries. --- Telegram/SourceFiles/ui/chat/message_bar.cpp | 2 +- Telegram/SourceFiles/ui/chat/message_bar.h | 1 + Telegram/SourceFiles/ui/chat/pinned_bar.cpp | 9 +++++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/ui/chat/message_bar.cpp b/Telegram/SourceFiles/ui/chat/message_bar.cpp index 8cb09a692..9710811ca 100644 --- a/Telegram/SourceFiles/ui/chat/message_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/message_bar.cpp @@ -222,7 +222,7 @@ QRect MessageBar::bodyRect(bool withImage) const { const auto top = st::msgReplyPadding.top(); const auto width = _widget.width() - left - st::msgReplyPadding.right(); const auto height = st::msgReplyBarSize.height(); - return QRect(left, top, width, height); + return QRect(left, top, width, height) - _content.margins; } QRect MessageBar::bodyRect() const { diff --git a/Telegram/SourceFiles/ui/chat/message_bar.h b/Telegram/SourceFiles/ui/chat/message_bar.h index 7ecdb9e60..1009f1830 100644 --- a/Telegram/SourceFiles/ui/chat/message_bar.h +++ b/Telegram/SourceFiles/ui/chat/message_bar.h @@ -24,6 +24,7 @@ struct MessageBarContent { QString title; TextWithEntities text; QImage preview; + style::margins margins; }; class MessageBar final { diff --git a/Telegram/SourceFiles/ui/chat/pinned_bar.cpp b/Telegram/SourceFiles/ui/chat/pinned_bar.cpp index 895482ccc..a8190490a 100644 --- a/Telegram/SourceFiles/ui/chat/pinned_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/pinned_bar.cpp @@ -51,6 +51,12 @@ void PinnedBar::setContent(rpl::producer content) { if (creating) { createControls(); } + + // In most cases the new right button should arrive + // before we want to get its width. + const auto right = _right.button ? _right.button->width() : 0; + content.margins = { 0, 0, right, 0 }; + _bar->set(std::move(content)); if (creating) { _bar->finishAnimating(); @@ -96,8 +102,7 @@ void PinnedBar::setRightButton(object_ptr button) { } void PinnedBar::updateControlsGeometry(QRect wrapGeometry) { - _bar->widget()->resizeToWidth( - wrapGeometry.width() - (_right.button ? _right.button->width() : 0)); + _bar->widget()->resizeToWidth(wrapGeometry.width()); const auto hidden = _wrap.isHidden() || !wrapGeometry.height(); if (_shadow->isHidden() != hidden) { _shadow->setVisible(!hidden);