Fix scaling webm stickers

This commit is contained in:
blank X 2022-03-14 11:26:43 +07:00
parent e5dcf48d43
commit 3037bd0c42
No known key found for this signature in database
GPG key ID: CC15FC822C7F61F5
3 changed files with 23 additions and 10 deletions

View file

@ -640,7 +640,14 @@ HistoryWidget::HistoryWidget(
"sticker_height"
) | rpl::start_with_next([=] {
crl::on_main(this, [=] {
updateHistoryGeometry();
if (_history) {
_history->forceFullResize();
if (_migrated) {
_migrated->forceFullResize();
}
updateHistoryGeometry();
update();
}
});
}, lifetime());
@ -648,7 +655,14 @@ HistoryWidget::HistoryWidget(
"sticker_scale_both"
) | rpl::start_with_next([=] {
crl::on_main(this, [=] {
updateHistoryGeometry();
if (_history) {
_history->forceFullResize();
if (_migrated) {
_migrated->forceFullResize();
}
updateHistoryGeometry();
update();
}
});
}, lifetime());

View file

@ -139,7 +139,7 @@ QSize Gif::countThumbSize(int &inOutWidthMax) const {
+ st::msgPadding.right()
: 0;
const auto maxSize = _data->sticker()
? Sticker::Size().width()
? Sticker::Size().height()
: _data->isVideoFile()
? st::maxMediaSize
: _data->isVideoMessage()

View file

@ -95,17 +95,13 @@ bool Sticker::isEmojiSticker() const {
}
void Sticker::initSize() {
const auto currentStickerHeight = ::Kotato::JsonSettings::GetInt("sticker_height");
const auto currentScaleBoth = ::Kotato::JsonSettings::GetBool("sticker_scale_both");
const auto maxHeight = int(st::maxStickerSize / 256.0 * currentStickerHeight);
const auto maxWidth = currentScaleBoth ? maxHeight : st::maxStickerSize;
if (isEmojiSticker() || _diceIndex >= 0) {
_size = Sticker::EmojiSize();
if (_diceIndex > 0) {
[[maybe_unused]] bool result = readyToDrawLottie();
}
} else {
_size = DownscaledSize(_data->dimensions, { maxWidth, maxHeight });
_size = DownscaledSize(_data->dimensions, Sticker::Size());
}
}
@ -135,8 +131,11 @@ bool Sticker::readyToDrawLottie() {
}
QSize Sticker::Size() {
const auto side = std::min(st::maxStickerSize, kMaxSizeFixed);
return { side, side };
const auto currentStickerHeight = ::Kotato::JsonSettings::GetInt("sticker_height");
const auto currentScaleBoth = ::Kotato::JsonSettings::GetBool("sticker_scale_both");
const auto maxHeight = int(st::maxStickerSize / 256.0 * currentStickerHeight);
const auto maxWidth = currentScaleBoth ? maxHeight : st::maxStickerSize;
return { maxWidth, maxHeight };
}
QSize Sticker::EmojiSize() {