From 1026f41da83473968eae684048f0ed06fa184b63 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 31 Jan 2023 22:58:57 +0300 Subject: [PATCH] Replaced BubbleWrap class with single function. --- .../info/userpic/info_userpic_bubble_wrap.cpp | 21 +++++++------------ .../info/userpic/info_userpic_bubble_wrap.h | 15 +++---------- .../info_userpic_emoji_builder_widget.cpp | 19 ++++++++--------- 3 files changed, 19 insertions(+), 36 deletions(-) diff --git a/Telegram/SourceFiles/info/userpic/info_userpic_bubble_wrap.cpp b/Telegram/SourceFiles/info/userpic/info_userpic_bubble_wrap.cpp index e04981b4b3..95f383b1e5 100644 --- a/Telegram/SourceFiles/info/userpic/info_userpic_bubble_wrap.cpp +++ b/Telegram/SourceFiles/info/userpic/info_userpic_bubble_wrap.cpp @@ -41,23 +41,16 @@ void PaintExcludeTopShadow(QPainter &p, int radius, const QRect &r) { } // namespace -QRect BubbleWrap::innerRect() const { - return rect() - st::userpicBuilderEmojiBubblePadding; +QRect BubbleWrapInnerRect(const QRect &r) { + return r - st::userpicBuilderEmojiBubblePadding; } -rpl::producer BubbleWrap::innerRectValue() const { - return sizeValue() | rpl::map([](const QSize &s) { - return Rect(s) - st::userpicBuilderEmojiBubblePadding; - }); -} - -not_null AddBubbleWrap( +not_null AddBubbleWrap( not_null container, - const QSize &size, - Fn()> chatStyle) { - const auto bubble = container->add(object_ptr>( + const QSize &size) { + const auto bubble = container->add(object_ptr>( container, - object_ptr(container)))->entity(); + object_ptr(container)))->entity(); bubble->resize(size); auto cached = QImage( @@ -67,7 +60,7 @@ not_null AddBubbleWrap( cached.fill(Qt::transparent); { auto p = QPainter(&cached); - const auto innerRect = bubble->innerRect(); + const auto innerRect = BubbleWrapInnerRect(bubble->rect()); auto hq = PainterHighQualityEnabler(p); const auto radius = st::bubbleRadiusSmall; p.setPen(Qt::NoPen); diff --git a/Telegram/SourceFiles/info/userpic/info_userpic_bubble_wrap.h b/Telegram/SourceFiles/info/userpic/info_userpic_bubble_wrap.h index a835e34079..f9b4b044d8 100644 --- a/Telegram/SourceFiles/info/userpic/info_userpic_bubble_wrap.h +++ b/Telegram/SourceFiles/info/userpic/info_userpic_bubble_wrap.h @@ -11,21 +11,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Ui { -class ChatStyle; class VerticalLayout; -class BubbleWrap final : public Ui::RpWidget { -public: - using Ui::RpWidget::RpWidget; +[[nodiscard]] QRect BubbleWrapInnerRect(const QRect &r); - [[nodiscard]] QRect innerRect() const; - [[nodiscard]] rpl::producer innerRectValue() const; - -}; - -not_null AddBubbleWrap( +not_null AddBubbleWrap( not_null container, - const QSize &size, - Fn()> chatStyle); + const QSize &size); } // namespace Ui diff --git a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp index b06eadb8e6..43a15a2640 100644 --- a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp +++ b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp @@ -386,8 +386,7 @@ not_null CreateUserpicBuilder( const auto paletteBg = Ui::AddBubbleWrap( container, - st::userpicBuilderEmojiBubblePaletteSize, - [=] { return controller->chatStyle(); }); + st::userpicBuilderEmojiBubblePaletteSize); const auto palette = Ui::CreateChild(paletteBg.get()); { constexpr auto kColorsCount = int(7); @@ -455,9 +454,10 @@ not_null CreateUserpicBuilder( state->circleButtons[current]->setSelectedProgress(1.); state->circleButtons[current]->clicked({}, Qt::LeftButton); } - paletteBg->innerRectValue( - ) | rpl::start_with_next([=](const QRect &r) { - palette->setGeometry(r - st::userpicBuilderEmojiBubblePalettePadding); + paletteBg->sizeValue( + ) | rpl::start_with_next([=](const QSize &s) { + palette->setGeometry(Ui::BubbleWrapInnerRect(Rect(s)) + - st::userpicBuilderEmojiBubblePalettePadding); AlignChildren(palette, palette->width()); }, palette->lifetime()); @@ -474,8 +474,7 @@ not_null CreateUserpicBuilder( container, QSize( st::userpicBuilderEmojiBubblePaletteSize.width(), - st::userpicBuilderEmojiSelectorMinHeight), - [=] { return controller->chatStyle(); }); + st::userpicBuilderEmojiSelectorMinHeight)); const auto selector = Ui::CreateChild( selectorBg.get(), controller, @@ -485,9 +484,9 @@ not_null CreateUserpicBuilder( state->gradientEditorStartData.documentId = document->id; preview->setDocument(document); }, preview->lifetime()); - selectorBg->innerRectValue( - ) | rpl::start_with_next([=](const QRect &r) { - selector->setGeometry(r); + selectorBg->sizeValue( + ) | rpl::start_with_next([=](const QSize &s) { + selector->setGeometry(Ui::BubbleWrapInnerRect(Rect(s))); }, selector->lifetime()); base::take(