/* 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 HistoryView { struct ChatPaintGestureHorizontalData; struct SwipeBackResult; } // namespace HistoryView namespace Ui { class ElasticScroll; class RpWidget; class ScrollArea; } // namespace Ui namespace Ui::Controls { struct SwipeHandlerFinishData { Fn callback; int64 msgBareId = 0; float64 speedRatio = 1.0; }; 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]] HistoryView::SwipeBackResult SetupSwipeBack( not_null widget, Fn()> colors, bool mirrored = false); [[nodiscard]] SwipeHandlerFinishData DefaultSwipeBackHandlerFinishData( Fn callback); } // namespace Ui::Controls