/* 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 #include "base/unique_qptr.h" namespace Main { class Session; } // namespace Main namespace Ui { class PopupMenu; enum class ReportReason; } // namespace Ui namespace Window { class SessionNavigation; class SessionController; } // namespace Main namespace HistoryView { enum class Context : char; enum class PointState : char; class ListWidget; class Element; struct SelectedItem; using SelectedItems = std::vector; struct ContextMenuRequest { explicit ContextMenuRequest( not_null navigation); const not_null navigation; ClickHandlerPtr link; Element *view = nullptr; HistoryItem *item = nullptr; SelectedItems selectedItems; TextForMimeData selectedText; bool overSelection = false; PointState pointState = PointState(); }; base::unique_qptr FillContextMenu( not_null list, const ContextMenuRequest &request); void CopyPostLink( not_null controller, FullMsgId itemId, Context context); void AddPollActions( not_null menu, not_null poll, not_null item, Context context, not_null controller); void AddSaveSoundForNotifications( not_null menu, not_null item, not_null document, not_null controller); void AddWhoReactedAction( not_null menu, not_null context, not_null item, not_null controller); void ShowWhoReactedMenu( not_null*> menu, QPoint position, not_null context, not_null item, const QString &emoji, not_null controller, rpl::lifetime &lifetime); } // namespace HistoryView