/
diev
/
stelegramdesktop-tdesktop
Обзор
Документация
Войти
/
diev
/
stelegramdesktop-tdesktop
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
Telegram/SourceFiles/ui/effects/scroll_content_shadow.cpp
47 строк
1 KB
23rd
Moved out setup of top and bottom scroll shadows to separated file.
13 апр 2022, 14:26
13 апр 2022, 14:26
2f8efb5
Код
Авторство
О чём код?
/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "ui/effects/scroll_content_shadow.h" #include "ui/rp_widget.h" #include "ui/widgets/scroll_area.h" #include "ui/wrap/fade_wrap.h" namespace Ui { void SetupShadowsToScrollContent( not_null<Ui::RpWidget*> parent, not_null<Ui::ScrollArea*> scroll, rpl::producer<int> &&innerHeightValue) { using namespace rpl::mappers; const auto topShadow = Ui::CreateChild<Ui::FadeShadow>(parent.get()); const auto bottomShadow = Ui::CreateChild<Ui::FadeShadow>(parent.get()); scroll->geometryValue( ) | rpl::start_with_next_done([=](const QRect &geometry) { topShadow->resizeToWidth(geometry.width()); topShadow->move( geometry.x(), geometry.y()); bottomShadow->resizeToWidth(geometry.width()); bottomShadow->move( geometry.x(), geometry.y() + geometry.height() - st::lineWidth); }, [t = Ui::MakeWeak(topShadow), b = Ui::MakeWeak(bottomShadow)] { Ui::DestroyChild(t.data()); Ui::DestroyChild(b.data()); }, topShadow->lifetime()); topShadow->toggleOn(scroll->scrollTopValue() | rpl::map(_1 > 0)); bottomShadow->toggleOn(rpl::combine( scroll->scrollTopValue(), scroll->heightValue(), std::move(innerHeightValue), _1 + _2 < _3)); } } // namespace Ui