Include cardName in the PixmapCacheKey in order to not break double-faced cards.

This commit is contained in:
Lukas Brübach 2024-11-18 18:26:45 +01:00
parent 018c57b7fa
commit 89daa0ec4a
2 changed files with 7 additions and 4 deletions

View file

@ -45,7 +45,8 @@ PictureToLoad::PictureToLoad(CardInfoPtr _card)
std::sort(sortedSets.begin(), sortedSets.end(), SetDownloadPriorityComparator());
// If the pixmapCacheKey corresponds to a specific set, we have to try to load it first.
for (const auto &set : card->getSets()) {
if (QLatin1String("card_") + QString(set.getProperty("uuid")) == card->getPixmapCacheKey()) {
if (QLatin1String("card_") + card->getName() + QString("_") + QString(set.getProperty("uuid")) ==
card->getPixmapCacheKey()) {
long long setIndex = sortedSets.indexOf(set.getPtr());
CardSetPtr setForCardUUID = sortedSets.takeAt(setIndex);
sortedSets.prepend(setForCardUUID);

View file

@ -451,7 +451,8 @@ CardInfoPtr CardDatabase::getCardByNameAndUUID(const QString &cardName, const QS
for (const auto &set : info->getSets()) {
if (set.getProperty("uuid") == uuid) {
CardInfoPtr cardFromSpecificSet = info->clone();
cardFromSpecificSet->setPixmapCacheKey(QLatin1String("card_") + QString(set.getProperty("uuid")));
cardFromSpecificSet->setPixmapCacheKey(QLatin1String("card_") + QString(info->getName()) + QString("_") +
QString(set.getProperty("uuid")));
return cardFromSpecificSet;
}
}
@ -600,7 +601,8 @@ LoadStatus CardDatabase::loadCardDatabases()
void CardDatabase::refreshPreferredPrintings()
{
for (const CardInfoPtr &card : cards) {
card->setPixmapCacheKey(QLatin1String("card_") + QString(getPreferredPrintingUUIDForCard(card->getName())));
card->setPixmapCacheKey(QLatin1String("card_") + QString(card->getName()) + QString("_") +
QString(getPreferredPrintingUUIDForCard(card->getName())));
}
}
@ -673,7 +675,7 @@ QString CardDatabase::getPreferredPrintingUUIDForCard(const QString &cardName)
bool CardDatabase::isUuidForPreferredPrinting(const QString &cardName, const QString &uuid)
{
if (uuid.startsWith("card_")) {
return uuid == QLatin1String("card_") + getPreferredPrintingUUIDForCard(cardName);
return uuid == QLatin1String("card_") + cardName + QString("_") + getPreferredPrintingUUIDForCard(cardName);
}
return uuid == getPreferredPrintingUUIDForCard(cardName);
}