Replaced BubbleWrap class with single function.

This commit is contained in:
23rd 2023-01-31 22:58:57 +03:00 committed by John Preston
parent 7c8ada0e78
commit 1026f41da8
3 changed files with 19 additions and 36 deletions

View file

@ -41,23 +41,16 @@ void PaintExcludeTopShadow(QPainter &p, int radius, const QRect &r) {
} // namespace } // namespace
QRect BubbleWrap::innerRect() const { QRect BubbleWrapInnerRect(const QRect &r) {
return rect() - st::userpicBuilderEmojiBubblePadding; return r - st::userpicBuilderEmojiBubblePadding;
} }
rpl::producer<QRect> BubbleWrap::innerRectValue() const { not_null<Ui::RpWidget*> AddBubbleWrap(
return sizeValue() | rpl::map([](const QSize &s) {
return Rect(s) - st::userpicBuilderEmojiBubblePadding;
});
}
not_null<BubbleWrap*> AddBubbleWrap(
not_null<Ui::VerticalLayout*> container, not_null<Ui::VerticalLayout*> container,
const QSize &size, const QSize &size) {
Fn<not_null<const Ui::ChatStyle*>()> chatStyle) { const auto bubble = container->add(object_ptr<Ui::CenterWrap<RpWidget>>(
const auto bubble = container->add(object_ptr<Ui::CenterWrap<BubbleWrap>>(
container, container,
object_ptr<BubbleWrap>(container)))->entity(); object_ptr<Ui::RpWidget>(container)))->entity();
bubble->resize(size); bubble->resize(size);
auto cached = QImage( auto cached = QImage(
@ -67,7 +60,7 @@ not_null<BubbleWrap*> AddBubbleWrap(
cached.fill(Qt::transparent); cached.fill(Qt::transparent);
{ {
auto p = QPainter(&cached); auto p = QPainter(&cached);
const auto innerRect = bubble->innerRect(); const auto innerRect = BubbleWrapInnerRect(bubble->rect());
auto hq = PainterHighQualityEnabler(p); auto hq = PainterHighQualityEnabler(p);
const auto radius = st::bubbleRadiusSmall; const auto radius = st::bubbleRadiusSmall;
p.setPen(Qt::NoPen); p.setPen(Qt::NoPen);

View file

@ -11,21 +11,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
namespace Ui { namespace Ui {
class ChatStyle;
class VerticalLayout; class VerticalLayout;
class BubbleWrap final : public Ui::RpWidget { [[nodiscard]] QRect BubbleWrapInnerRect(const QRect &r);
public:
using Ui::RpWidget::RpWidget;
[[nodiscard]] QRect innerRect() const; not_null<Ui::RpWidget*> AddBubbleWrap(
[[nodiscard]] rpl::producer<QRect> innerRectValue() const;
};
not_null<BubbleWrap*> AddBubbleWrap(
not_null<Ui::VerticalLayout*> container, not_null<Ui::VerticalLayout*> container,
const QSize &size, const QSize &size);
Fn<not_null<const Ui::ChatStyle*>()> chatStyle);
} // namespace Ui } // namespace Ui

View file

@ -386,8 +386,7 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
const auto paletteBg = Ui::AddBubbleWrap( const auto paletteBg = Ui::AddBubbleWrap(
container, container,
st::userpicBuilderEmojiBubblePaletteSize, st::userpicBuilderEmojiBubblePaletteSize);
[=] { return controller->chatStyle(); });
const auto palette = Ui::CreateChild<Ui::RpWidget>(paletteBg.get()); const auto palette = Ui::CreateChild<Ui::RpWidget>(paletteBg.get());
{ {
constexpr auto kColorsCount = int(7); constexpr auto kColorsCount = int(7);
@ -455,9 +454,10 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
state->circleButtons[current]->setSelectedProgress(1.); state->circleButtons[current]->setSelectedProgress(1.);
state->circleButtons[current]->clicked({}, Qt::LeftButton); state->circleButtons[current]->clicked({}, Qt::LeftButton);
} }
paletteBg->innerRectValue( paletteBg->sizeValue(
) | rpl::start_with_next([=](const QRect &r) { ) | rpl::start_with_next([=](const QSize &s) {
palette->setGeometry(r - st::userpicBuilderEmojiBubblePalettePadding); palette->setGeometry(Ui::BubbleWrapInnerRect(Rect(s))
- st::userpicBuilderEmojiBubblePalettePadding);
AlignChildren(palette, palette->width()); AlignChildren(palette, palette->width());
}, palette->lifetime()); }, palette->lifetime());
@ -474,8 +474,7 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
container, container,
QSize( QSize(
st::userpicBuilderEmojiBubblePaletteSize.width(), st::userpicBuilderEmojiBubblePaletteSize.width(),
st::userpicBuilderEmojiSelectorMinHeight), st::userpicBuilderEmojiSelectorMinHeight));
[=] { return controller->chatStyle(); });
const auto selector = Ui::CreateChild<EmojiSelector>( const auto selector = Ui::CreateChild<EmojiSelector>(
selectorBg.get(), selectorBg.get(),
controller, controller,
@ -485,9 +484,9 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
state->gradientEditorStartData.documentId = document->id; state->gradientEditorStartData.documentId = document->id;
preview->setDocument(document); preview->setDocument(document);
}, preview->lifetime()); }, preview->lifetime());
selectorBg->innerRectValue( selectorBg->sizeValue(
) | rpl::start_with_next([=](const QRect &r) { ) | rpl::start_with_next([=](const QSize &s) {
selector->setGeometry(r); selector->setGeometry(Ui::BubbleWrapInnerRect(Rect(s)));
}, selector->lifetime()); }, selector->lifetime());
base::take( base::take(