Philipp Hörist pushed to branch master at gajim / gajim


Commits:
f3baca3c by Philipp Hörist at 2023-11-07T14:04:50+01:00
imprv: MessageInput: Regain focus on common key presses

- - - - -


1 changed file:

- gajim/gtk/main.py


Changes:

=====================================
gajim/gtk/main.py
=====================================
@@ -122,6 +122,7 @@ def __init__(self) -> None:
         self.connect('notify::is-active', self._on_window_active)
         self.connect('delete-event', self._on_window_delete)
         self.connect('window-state-event', self._on_window_state_changed)
+        self.connect_after('key-press-event', self._on_key_press_event)
 
         self._ui.connect_signals(self)
 
@@ -250,6 +251,42 @@ def _on_account_disabled(self, event: 
events.AccountDisabled) -> None:
     def update_account_unread_count(self, account: str, count: int) -> None:
         self._account_side_bar.update_unread_count(account, count)
 
+    def _on_key_press_event(
+        self,
+        _window: MainWindow,
+        event: Gdk.EventKey
+    ) -> bool:
+
+        modifier = event.get_state() & Gtk.accelerator_get_default_mod_mask()
+
+        if not modifier:
+            if event.keyval in (
+                Gdk.KEY_Control_L,
+                Gdk.KEY_Control_R,
+                Gdk.KEY_Alt_L,
+                Gdk.KEY_Alt_R,
+            ):
+                return False
+
+        if modifier == Gdk.ModifierType.CONTROL_MASK:
+            if event.keyval == Gdk.KEY_C:
+                return False
+
+        focused_widget = self.get_focus()
+        if (isinstance(focused_widget, Gtk.TextView)
+            and focused_widget.props.editable):
+                return False
+
+        if isinstance(focused_widget, Gtk.Entry):
+            return False
+
+        message_input = self.get_chat_stack().get_message_input()
+        if not message_input.get_mapped() or not message_input.is_sensitive():
+            return False
+
+        message_input.grab_focus()
+        return self.propagate_key_event(event)
+
     def _on_client_state_changed(self,
                                  client: Client,
                                  _signal_name: str,



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/f3baca3c34c79b74f6535ead13fc1666b398b2b0

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/f3baca3c34c79b74f6535ead13fc1666b398b2b0
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