Daniel Brötzmann pushed to branch emoji-completion-sorting at gajim / gajim


Commits:
4d053059 by Philipp Hörist at 2025-07-26T10:08:12+02:00
imprv: Main: Hide chat on escape

Fixes #12381

- - - - -
286806a8 by Philipp Hörist at 2025-07-26T10:09:25+02:00
imprv: Main: Make Escape close the window independent of chat setting

- - - - -
1d8acf6f by wurstsalat at 2025-07-26T16:09:31+02:00
imprv: Emoji completion: Sort emojis; improve search

Fixes #12382

- - - - -


2 changed files:

- gajim/gtk/completion/emoji.py
- gajim/gtk/main.py


Changes:

=====================================
gajim/gtk/completion/emoji.py
=====================================
@@ -8,6 +8,7 @@
 from typing import cast
 from typing import Final
 
+import locale
 import logging
 
 from gi.repository import Gdk
@@ -158,9 +159,17 @@ def parse_emoji_data(bytes_data: GLib.Bytes, loc: str) -> 
Gio.ListStore:
         )
         store.append(item)
 
+    store.sort(_sort_short_name)
     return store
 
 
+@staticmethod
+def _sort_short_name(
+    item1: EmojiCompletionListItem, item2: EmojiCompletionListItem
+) -> int:
+    return locale.strcoll(item1.short_name, item2.short_name)
+
+
 class EmojiCompletionListItem(BaseCompletionListItem, GObject.Object):
     __gtype_name__ = "EmojiCompletionListItem"
 
@@ -274,6 +283,7 @@ def __init__(self) -> None:
 
         expression = Gtk.PropertyExpression.new(EmojiCompletionListItem, None, 
"search")
         self._string_filter = Gtk.StringFilter(expression=expression)
+        self._string_filter.set_match_mode(Gtk.StringFilterMatchMode.PREFIX)
 
         self._filter_model = Gtk.FilterListModel(filter=self._string_filter)
         self._model = Gtk.SliceListModel(


=====================================
gajim/gtk/main.py
=====================================
@@ -513,7 +513,12 @@ def _on_action(
                     self._chat_page.remove_chat(
                         control.contact.account, control.contact.jid
                     )
-                    return None
+                else:
+                    workspace_id = self.get_active_workspace()
+                    if workspace_id is not None:
+                        app.window.activate_workspace(workspace_id)
+
+                return None
 
             elif action_name == "close-chat":
                 self._chat_page.remove_chat(
@@ -521,7 +526,7 @@ def _on_action(
                 )
                 return None
 
-        if action_name == "escape" and app.settings.get("escape_key_closes"):
+        if action_name == "escape":
             self.close()
 
         elif action_name == "restore-chat":



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/5347e2c9eefc0e5be87c01c100fe701dc115d29f...1d8acf6fe24f8e5543e3dea0eb25d4c037c14728

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/5347e2c9eefc0e5be87c01c100fe701dc115d29f...1d8acf6fe24f8e5543e3dea0eb25d4c037c14728
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to