diff --git a/Telegram/SourceFiles/data/data_types.cpp b/Telegram/SourceFiles/data/data_types.cpp index abd615534..644caebe6 100644 --- a/Telegram/SourceFiles/data/data_types.cpp +++ b/Telegram/SourceFiles/data/data_types.cpp @@ -168,3 +168,12 @@ TimeId DateFromMessage(const MTPmessage &message) { return message.vdate().v; }); } + +bool GoodStickerDimensions(int width, int height) { + // Show all .webp (except very large ones) as stickers, + // allow to open them in media viewer to see details. + constexpr auto kLargetsStickerSide = 2560; + return (width > 0) + && (height > 0) + && (width * height <= kLargetsStickerSide * kLargetsStickerSide); +} diff --git a/Telegram/SourceFiles/data/data_types.h b/Telegram/SourceFiles/data/data_types.h index ffed002f9..8089daad4 100644 --- a/Telegram/SourceFiles/data/data_types.h +++ b/Telegram/SourceFiles/data/data_types.h @@ -325,12 +325,7 @@ enum DocumentType { }; inline constexpr auto kStickerSideSize = 512; - -[[nodiscard]] inline bool GoodStickerDimensions(int width, int height) { - return (width > 0 && width <= kStickerSideSize) - && (height > 0 && height <= kStickerSideSize) - && (width == kStickerSideSize || height == kStickerSideSize); -} +[[nodiscard]] bool GoodStickerDimensions(int width, int height); using MediaKey = QPair; diff --git a/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp b/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp index 68df01812..442575dbc 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp @@ -273,6 +273,12 @@ void Sticker::refreshLink() { _link = std::make_shared([document = _data] { StickerSetBox::Show(App::wnd()->sessionController(), document); }); + } else if (sticker + && !_parent->data()->isSending() + && !_parent->data()->hasFailed()) { + _link = std::make_shared( + _data, + _parent->data()->fullId()); } }