Use native emoji font support on Qt6.9

This commit is contained in:
Nicolas Werner 2025-04-04 14:56:15 +02:00
parent b3026e2978
commit 5cfc8b55e3
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
3 changed files with 63 additions and 42 deletions

View file

@ -598,9 +598,18 @@ UserSettings::setEmojiFontFamily(QString family)
if (family == emojiFont_)
return;
if (family == tr("Default")) {
emojiFont_ = QStringLiteral("emoji");
#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0)
if (emojiFont_.isEmpty()) {
QFontDatabase::removeApplicationEmojiFontFamily(emojiFont_);
}
#endif
if (family.isEmpty() || family == QStringLiteral("emoji")) {
emojiFont_.clear();
} else {
#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0)
QFontDatabase::addApplicationEmojiFontFamily(family);
#endif
emojiFont_ = family;
}
@ -1256,7 +1265,7 @@ UserSettingsModel::data(const QModelIndex &index, int role) const
return data(index, Values).toStringList().indexOf(i->font());
}
case EmojiFont: {
if (i->emojiFont().isEmpty())
if (i->emojiFont().isEmpty() || i->emojiFont() == QLatin1String("emoji"))
return 0;
else
return data(index, Values).toStringList().indexOf(i->emojiFont());
@ -2006,7 +2015,7 @@ UserSettingsModel::setData(const QModelIndex &index, const QVariant &value, int
// More special handling for the default font option
auto v = value.toInt();
i->setEmojiFontFamily(
v == 0 ? QStringLiteral("emoji")
v <= 0 ? QString()
: QFontDatabase::families(QFontDatabase::WritingSystem::Symbol).at(v - 1));
return true;
} else