From 05184e4292fb6b027f33bbe14ea59fcc07832deb Mon Sep 17 00:00:00 2001 From: wurstsalat <mailtrash@posteo.de> Date: Tue, 31 May 2022 16:23:41 +0200 Subject: [PATCH] imprv: Windows: Enable native emoji chooser --- gajim/gtk/application.py | 4 +++- gajim/gtk/controls/base.py | 8 ++++++-- gajim/gtk/conversation/plain_widget.py | 19 +++++++++++-------- gajim/gtk/message_input.py | 6 ++++++ gajim/gtk/preferences.py | 8 ++++++-- 5 files changed, 32 insertions(+), 13 deletions(-) diff --git a/gajim/gtk/application.py b/gajim/gtk/application.py index 984e22a1ee..acbcb940c8 100644 --- a/gajim/gtk/application.py +++ b/gajim/gtk/application.py @@ -232,7 +232,9 @@ def _startup(self, _application: GajimApplication) -> None: idle.Monitor.set_interval(app.settings.get('autoawaytime') * 60, app.settings.get('autoxatime') * 60) - if sys.platform in ('win32', 'darwin'): + if sys.platform == 'darwin': + # TODO: Remove if colored emoji rendering works well on + # Windows and MacOS from gajim.gui.emoji_chooser import emoji_chooser emoji_chooser.load() diff --git a/gajim/gtk/controls/base.py b/gajim/gtk/controls/base.py index d760f945ea..d850654686 100644 --- a/gajim/gtk/controls/base.py +++ b/gajim/gtk/controls/base.py @@ -491,7 +491,9 @@ def delegate_action(self, action: str) -> int: return Gdk.EVENT_STOP if action == 'show-emoji-chooser': - if sys.platform in ('win32', 'darwin'): + if sys.platform == 'darwin': + # TODO: Remove if colored emoji rendering works well on + # Windows and MacOS self.xml.emoticons_button.get_popover().show() return Gdk.EVENT_STOP self.msg_textview.emit('insert-emoji') @@ -1297,7 +1299,9 @@ def set_emoticon_popover(self) -> None: if not app.settings.get('emoticons_theme'): return - if sys.platform in ('win32', 'darwin'): + if sys.platform == 'darwin': + # TODO: Remove if colored emoji rendering works well on + # Windows and MacOS emoji_chooser.text_widget = self.msg_textview self.xml.emoticons_button.set_popover(emoji_chooser) return diff --git a/gajim/gtk/conversation/plain_widget.py b/gajim/gtk/conversation/plain_widget.py index b9bb793b81..1c824fdff0 100644 --- a/gajim/gtk/conversation/plain_widget.py +++ b/gajim/gtk/conversation/plain_widget.py @@ -17,6 +17,7 @@ from typing import Any import logging +import sys from gi.repository import Gtk from gi.repository import Pango @@ -52,15 +53,17 @@ def __init__(self, account: str, selectable: bool) -> None: self._account = account - # We use a Gtk.Textview on Windows and MacOS, since there is no support - # for rendering color fonts (Emojis) on Windows/MacOS yet, see: - # https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/244 + # We use a Gtk.Textview on MacOS, since there is no support + # for rendering color fonts (Emojis) on MacOS yet, see: + # https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/289 # https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/9 - # if app.settings.get('dev_use_message_label'): - # self._text_widget = MessageLabel(self._account, selectable) - # else: - # self._text_widget = MessageTextview(self._account) - self._text_widget = MessageLabel(self._account, selectable) + if sys.platform == 'darwin': + if app.settings.get('dev_use_message_label'): + self._text_widget = MessageLabel(self._account, selectable) + else: + self._text_widget = MessageTextview(self._account) + else: + self._text_widget = MessageLabel(self._account, selectable) self.add(self._text_widget) def add_content(self, block: PlainBlock) -> None: diff --git a/gajim/gtk/message_input.py b/gajim/gtk/message_input.py index d6eb231b5d..771465d2c1 100644 --- a/gajim/gtk/message_input.py +++ b/gajim/gtk/message_input.py @@ -19,6 +19,8 @@ from typing import Any +import sys + from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GdkPixbuf @@ -222,6 +224,10 @@ def apply_formatting(self, formatting: str) -> None: buf.get_iter_at_offset(end_offset + 2)) def replace_emojis(self) -> None: + if sys.platform != 'darwin': + # TODO: Remove if colored emoji rendering works well on MacOS + return + theme = app.settings.get('emoticons_theme') if not theme or theme == 'font': return diff --git a/gajim/gtk/preferences.py b/gajim/gtk/preferences.py index e849706c17..560cfd6ec4 100644 --- a/gajim/gtk/preferences.py +++ b/gajim/gtk/preferences.py @@ -116,7 +116,9 @@ def __init__(self) -> None: self._ui.connect_signals(self) self.show_all() - if sys.platform not in ('win32', 'darwin'): + if sys.platform != 'darwin': + # TODO: Remove if colored emoji rendering works well on + # Windows and MacOS self._ui.emoji.hide() def get_ui(self): @@ -701,7 +703,9 @@ def _on_dark_theme(value: str, *args: Any) -> None: class Emoji(PreferenceBox): def __init__(self, *args: Any) -> None: - if sys.platform not in ('win32', 'darwin'): + if sys.platform != 'darwin': + # TODO: Remove if colored emoji rendering works well on + # Windows and MacOS PreferenceBox.__init__(self, []) return -- GitLab