From 97da6447c784fe809e8ea3ad5f60925f042728f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Tue, 12 Nov 2019 14:11:09 -0500 Subject: [PATCH] chatview: fix emoji display in gtkwebkit Change-Id: I4437cc4dbb8b5e40914a6c9953bf22492a3899ab --- src/web-chatview/chatview.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/web-chatview/chatview.js b/src/web-chatview/chatview.js index 4b671272..1be866cb 100644 --- a/src/web-chatview/chatview.js +++ b/src/web-chatview/chatview.js @@ -706,6 +706,17 @@ function youtube_id(url) { return (match && match[2].length == 11) ? match[2] : null } +/** + * Emojis in a <pre> without <b> can disappears in a gtk webkit container + * So for now, use this workaround. + */ +function replace_emojis(text) { + let emojis_regex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/g + + text = text.replace(emojis_regex, (emoji) => "</pre><b>" + emoji + "</b><pre>") + return text +} + /** * Returns HTML message from the message text, cleaned and linkified. * @param message_text @@ -716,7 +727,11 @@ function getMessageHtml(message_text) { var linkified_message = linkifyHtml(escaped_message, linkifyOptions) // eslint-disable-line no-undef const textPart = document.createElement("pre") - textPart.innerHTML = linkified_message + if (use_qt) { + textPart.innerHTML = linkified_message + } else { + textPart.innerHTML = replace_emojis(linkified_message) + } return textPart.outerHTML } -- GitLab