Estimate size of images to avoid layout shifts (#5192)
This commit is contained in:
@@ -18,6 +18,13 @@
|
||||
#include <QThread>
|
||||
#include <QUrlQuery>
|
||||
|
||||
namespace {
|
||||
|
||||
// From Twitch docs - expected size for a badge (1x)
|
||||
constexpr QSize BADGE_BASE_SIZE(18, 18);
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace chatterino {
|
||||
|
||||
void TwitchBadges::loadTwitchBadges()
|
||||
@@ -37,9 +44,12 @@ void TwitchBadges::loadTwitchBadges()
|
||||
.name = EmoteName{},
|
||||
.images =
|
||||
ImageSet{
|
||||
Image::fromUrl(version.imageURL1x, 1),
|
||||
Image::fromUrl(version.imageURL2x, .5),
|
||||
Image::fromUrl(version.imageURL4x, .25),
|
||||
Image::fromUrl(version.imageURL1x, 1,
|
||||
BADGE_BASE_SIZE),
|
||||
Image::fromUrl(version.imageURL2x, .5,
|
||||
BADGE_BASE_SIZE * 2),
|
||||
Image::fromUrl(version.imageURL4x, .25,
|
||||
BADGE_BASE_SIZE * 4),
|
||||
},
|
||||
.tooltip = Tooltip{version.title},
|
||||
.homePage = version.clickURL,
|
||||
@@ -100,17 +110,19 @@ void TwitchBadges::parseTwitchBadges(QJsonObject root)
|
||||
for (auto vIt = versions.begin(); vIt != versions.end(); ++vIt)
|
||||
{
|
||||
auto versionObj = vIt.value().toObject();
|
||||
|
||||
auto emote = Emote{
|
||||
.name = {""},
|
||||
.images =
|
||||
ImageSet{
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_1x").toString()}, 1),
|
||||
{versionObj.value("image_url_1x").toString()}, 1,
|
||||
BADGE_BASE_SIZE),
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_2x").toString()}, .5),
|
||||
{versionObj.value("image_url_2x").toString()}, .5,
|
||||
BADGE_BASE_SIZE * 2),
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_4x").toString()}, .25),
|
||||
{versionObj.value("image_url_4x").toString()}, .25,
|
||||
BADGE_BASE_SIZE * 4),
|
||||
},
|
||||
.tooltip = Tooltip{versionObj.value("title").toString()},
|
||||
.homePage = Url{versionObj.value("click_url").toString()},
|
||||
|
||||
Reference in New Issue
Block a user