diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_generic.cpp b/Telegram/SourceFiles/history/view/media/history_view_media_generic.cpp index 8a504d6654..984651b68f 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_generic.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_media_generic.cpp @@ -391,6 +391,35 @@ QSize TextDelimeterPart::countCurrentSize(int newWidth) { return { newWidth, minHeight() }; } +LambdaGenericPart::LambdaGenericPart( + QSize size, + Fn owner, + const PaintContext &context, + int outerWidth)> draw) +: _size(size) +, _draw(std::move(draw)) { +} + +void LambdaGenericPart::draw( + Painter &p, + not_null owner, + const PaintContext &context, + int outerWidth) const { + if (_draw) { + _draw(p, owner, context, outerWidth); + } +} + +QSize LambdaGenericPart::countOptimalSize() { + return _size; +} + +QSize LambdaGenericPart::countCurrentSize(int newWidth) { + return { newWidth, _size.height() }; +} + StickerInBubblePart::StickerInBubblePart( not_null parent, Element *replacing, diff --git a/Telegram/SourceFiles/history/view/media/history_view_media_generic.h b/Telegram/SourceFiles/history/view/media/history_view_media_generic.h index 68ee1886e4..2251ba8840 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_media_generic.h +++ b/Telegram/SourceFiles/history/view/media/history_view_media_generic.h @@ -194,6 +194,35 @@ private: }; +class LambdaGenericPart final : public MediaGenericPart { +public: + LambdaGenericPart( + QSize size, + Fn owner, + const PaintContext &context, + int outerWidth)> draw); + + void draw( + Painter &p, + not_null owner, + const PaintContext &context, + int outerWidth) const override; + + QSize countOptimalSize() override; + QSize countCurrentSize(int newWidth) override; + +private: + QSize _size; + Fn owner, + const PaintContext &context, + int outerWidth)> _draw; + +}; + class StickerInBubblePart final : public MediaGenericPart { public: struct Data {