Open too large GIFs in fullscreen viewer.

This commit is contained in:
John Preston 2020-07-02 13:43:39 +04:00
parent f2577265ee
commit 76596f42c7
3 changed files with 11 additions and 6 deletions

View file

@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "platform/platform_specific.h" #include "platform/platform_specific.h"
#include "history/history.h" #include "history/history.h"
#include "history/history_item.h" #include "history/history_item.h"
#include "history/view/media/history_view_gif.h"
#include "window/window_session_controller.h" #include "window/window_session_controller.h"
#include "storage/cache/storage_cache_database.h" #include "storage/cache/storage_cache_database.h"
#include "boxes/confirm_box.h" #include "boxes/confirm_box.h"
@ -340,7 +341,9 @@ void DocumentOpenClickHandler::Open(
|| data->isVideoMessage()) { || data->isVideoMessage()) {
const auto msgId = context ? context->fullId() : FullMsgId(); const auto msgId = context ? context->fullId() : FullMsgId();
Media::Player::instance()->playPause({ data, msgId }); Media::Player::instance()->playPause({ data, msgId });
} else if (context && data->isAnimation()) { } else if (context
&& data->isAnimation()
&& HistoryView::Gif::CanPlayInline(data)) {
data->owner().requestAnimationPlayInline(context); data->owner().requestAnimationPlayInline(context);
} else { } else {
Core::App().showDocument(data, context); Core::App().showDocument(data, context);

View file

@ -50,11 +50,6 @@ int gifMaxStatusWidth(DocumentData *document) {
return result; return result;
} }
[[nodiscard]] bool CanPlayInline(not_null<DocumentData*> document) {
const auto dimensions = document->dimensions;
return dimensions.width() * dimensions.height() <= kMaxInlineArea;
}
} // namespace } // namespace
struct Gif::Streamed { struct Gif::Streamed {
@ -109,6 +104,11 @@ Gif::~Gif() {
} }
} }
bool Gif::CanPlayInline(not_null<DocumentData*> document) {
const auto dimensions = document->dimensions;
return dimensions.width() * dimensions.height() <= kMaxInlineArea;
}
QSize Gif::sizeForAspectRatio() const { QSize Gif::sizeForAspectRatio() const {
// We use size only for aspect ratio and we want to have it // We use size only for aspect ratio and we want to have it
// as close to the thumbnail as possible. // as close to the thumbnail as possible.

View file

@ -110,6 +110,8 @@ public:
void refreshParentId(not_null<HistoryItem*> realParent) override; void refreshParentId(not_null<HistoryItem*> realParent) override;
[[nodiscard]] static bool CanPlayInline(not_null<DocumentData*> document);
private: private:
struct Streamed; struct Streamed;