core/desktopentry: don't match keys with wrong modifier or country

This commit is contained in:
bbedward 2025-09-30 08:17:03 -04:00 committed by outfoxxed
parent 2eacb713b9
commit 3e32ae595f
No known key found for this signature in database
GPG key ID: 4C88A185FB89301E
2 changed files with 7 additions and 4 deletions

View file

@ -14,3 +14,4 @@
- Fixed a rare crash when disconnecting a monitor.
- Fixed build issues preventing cross compilation from working.
- Fixed dekstop entries with lower priority than a hidden entry not being hidden.
- Fixed desktop entry keys with mismatched modifier or country not being discarded.

View file

@ -61,12 +61,14 @@ struct Locale {
[[nodiscard]] int matchScore(const Locale& other) const {
if (this->language != other.language) return 0;
auto territoryMatches = !this->territory.isEmpty() && this->territory == other.territory;
auto modifierMatches = !this->modifier.isEmpty() && this->modifier == other.modifier;
if (!other.modifier.isEmpty() && this->modifier != other.modifier) return 0;
if (!other.territory.isEmpty() && this->territory != other.territory) return 0;
auto score = 1;
if (territoryMatches) score += 2;
if (modifierMatches) score += 1;
if (!other.territory.isEmpty()) score += 2;
if (!other.modifier.isEmpty()) score += 1;
return score;
}