From b3900c91051aae50019768765138bb92b87bf3a0 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Mon, 17 Jul 2023 12:47:56 +0200 Subject: [PATCH] Ignore invisible characters while checking if text have only emojis. --- linphone-app/src/utils/Utils.cpp | 6 +++++- linphone-app/src/utils/Utils.hpp | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/linphone-app/src/utils/Utils.cpp b/linphone-app/src/utils/Utils.cpp index dc41266ea..3c6b533ff 100644 --- a/linphone-app/src/utils/Utils.cpp +++ b/linphone-app/src/utils/Utils.cpp @@ -696,6 +696,10 @@ bool Utils::codepointIsEmoji(uint code){ (code >= 0x1f000 && code <= 0x1faff) || code == 0x200d || code == 0xfe0f; } +bool Utils::codepointIsVisible(uint code) { + return code > 0x00020; +} + QString Utils::encodeEmojiToQmlRichFormat(const QString &body){ QString fmtBody = ""; QVector utf32_string = body.toUcs4(); @@ -726,7 +730,7 @@ bool Utils::isOnlyEmojis(const QString& text){ if(text.isEmpty()) return false; QVector utf32_string = text.toUcs4(); for (auto &code : utf32_string) - if( !Utils::codepointIsEmoji(code)) + if(codepointIsVisible(code) && !Utils::codepointIsEmoji(code)) return false; return true; } diff --git a/linphone-app/src/utils/Utils.hpp b/linphone-app/src/utils/Utils.hpp index 926cabb1f..a67efa3fc 100644 --- a/linphone-app/src/utils/Utils.hpp +++ b/linphone-app/src/utils/Utils.hpp @@ -88,6 +88,7 @@ public: Q_INVOKABLE static QPoint getCursorPosition(); Q_INVOKABLE static QString getFileChecksum(const QString& filePath); static bool codepointIsEmoji(uint code); + static bool codepointIsVisible(uint code); Q_INVOKABLE static bool isOnlyEmojis(const QString& text); Q_INVOKABLE static QString encodeEmojiToQmlRichFormat(const QString &body); Q_INVOKABLE static QString encodeTextToQmlRichFormat(const QString& text, const QVariantMap& options = QVariantMap());