/* 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 */ #pragma once namespace Ui { class ElasticScroll; class RpWidget; class ScrollArea; } // namespace Ui namespace Ui::Controls { struct SwipeContextData; struct SwipeBackResult; struct SwipeHandlerFinishData { Fn callback; int64 msgBareId = 0; float64 speedRatio = 1.0; bool keepRatioWithinRange = false; }; using Scroll = std::variant< v::null_t, not_null, not_null>; void SetupSwipeHandler( not_null widget, Scroll scroll, Fn update, Fn generateFinishByTop, rpl::producer dontStart = nullptr); [[nodiscard]] SwipeBackResult SetupSwipeBack( not_null widget, Fn()> colors, bool mirrored = false, bool iconMirrored = false); [[nodiscard]] SwipeHandlerFinishData DefaultSwipeBackHandlerFinishData( Fn callback); } // namespace Ui::Controls