From b2dcbebb5bbdb8a7cd0876a98ea936f76c18b1e5 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 16 Nov 2025 12:51:53 +0300 Subject: [PATCH] Added proper visibility forwarding to flexible scroll content widget. --- .../SourceFiles/info/info_content_widget.h | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/info/info_content_widget.h b/Telegram/SourceFiles/info/info_content_widget.h index 34c4f795f0..eb5e4f2c91 100644 --- a/Telegram/SourceFiles/info/info_content_widget.h +++ b/Telegram/SourceFiles/info/info_content_widget.h @@ -161,7 +161,30 @@ protected: FlexibleData &flexibleScroll, Fn customSetup = nullptr) { if (inner->hasFlexibleTopBar()) { - auto filler = setInnerWidget(object_ptr(this)); + class Filler final : public Ui::RpWidget { + public: + using Ui::RpWidget::RpWidget; + void setTargetWidget(Ui::RpWidget *widget) { + _targetWidget = widget; + } + + protected: + void visibleTopBottomUpdated( + int visibleTop, + int visibleBottom) override { + if (_targetWidget) { + _targetWidget->setVisibleTopBottom( + visibleTop, + visibleBottom); + } + } + + private: + Ui::RpWidget *_targetWidget = nullptr; + + }; + + auto filler = setInnerWidget(object_ptr(this)); filler->resize(1, 1); flexibleScroll.contentHeightValue.events( @@ -181,9 +204,10 @@ protected: // ScrollArea -> PaddingWrap -> RpWidget. inner->setParent(filler->parentWidget()->parentWidget()); inner->raise(); + filler->setTargetWidget(inner.get()); using InnerPtr = base::unique_qptr; - auto owner = filler->lifetime().make_state( + auto owner = filler->lifetime().template make_state( std::move(inner.release())); return owner->get(); } else {