Daniel Brötzmann pushed to branch master at gajim / gajim
Commits:
72985c6d by wurstsalat at 2025-09-07T12:16:15+02:00
imprv: Message selection: Allow copying messages using Ctrl+C
Part of #12194
- - - - -
3 changed files:
- gajim/gtk/chat_stack.py
- gajim/gtk/control.py
- gajim/gtk/conversation/message_selection.py
Changes:
=====================================
gajim/gtk/chat_stack.py
=====================================
@@ -129,6 +129,10 @@ def __init__(self):
self._connect(drop_target, "leave", self._on_drag_leave)
overlay.add_controller(drop_target)
+ controller = Gtk.EventControllerKey()
+ self._connect(controller, "key-pressed", self._on_key_pressed)
+ self.add_controller(controller)
+
self.add_named(overlay, "controls")
self.register_events(
@@ -807,6 +811,19 @@ def _on_file_drop(
self._drop_area.set_visible(False)
return True
+ def _on_key_pressed(
+ self,
+ _event_controller_key: Gtk.EventControllerKey,
+ keyval: int,
+ _keycode: int,
+ state: Gdk.ModifierType,
+ ) -> bool:
+ if state & Gdk.ModifierType.CONTROL_MASK:
+ if keyval == Gdk.KEY_c:
+ self._chat_control.copy_selected_messages()
+ return Gdk.EVENT_STOP
+ return Gdk.EVENT_PROPAGATE
+
def _show_chat_function_page(
self,
function_mode: FunctionMode,
=====================================
gajim/gtk/control.py
=====================================
@@ -208,6 +208,11 @@ def scroll_to_message(self, pk: int, timestamp:
dt.datetime) -> None:
def mark_as_read(self) -> None:
self._jump_to_end_button.reset_unread_count()
+ def copy_selected_messages(self) -> None:
+ # Message selection mode is active
+ self._scrolled_view.copy_selected_messages()
+ self._message_selection.set_visible(False)
+
def process_escape(self) -> bool:
message_selection_active = self._message_selection.get_visible()
if message_selection_active:
@@ -493,7 +498,7 @@ def _reset_message_selection(self, *args: Any) -> None:
self._message_selection.set_visible(False)
def _on_copy_selection(self, _widget: MessageSelection) -> None:
- self._scrolled_view.copy_selected_messages()
+ self.copy_selected_messages()
def _on_jump_to_message(
self, _action: Gio.SimpleAction, param: GLib.Variant
=====================================
gajim/gtk/conversation/message_selection.py
=====================================
@@ -18,10 +18,14 @@ class MessageSelection(Gtk.Grid):
}
def __init__(self) -> None:
- Gtk.Grid.__init__(self, row_spacing=18, column_spacing=6)
- self.set_visible(False)
- self.set_halign(Gtk.Align.CENTER)
- self.set_valign(Gtk.Align.END)
+ Gtk.Grid.__init__(
+ self,
+ row_spacing=18,
+ column_spacing=6,
+ visible=False,
+ halign=Gtk.Align.CENTER,
+ valign=Gtk.Align.END,
+ )
self.add_css_class("toolbar")
self.add_css_class("osd")
@@ -41,11 +45,7 @@ def __init__(self) -> None:
self.attach(copy_button, 1, 1, 1, 1)
def _on_copy_clicked(self, _button: Gtk.Button) -> None:
- self.set_visible(False)
- self.set_visible(False)
self.emit("copy")
def _on_cancel_clicked(self, _button: Gtk.Button) -> None:
- self.set_visible(False)
- self.set_visible(False)
self.emit("cancel")
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/72985c6d19b402955e748214800e8970d04687be
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/72985c6d19b402955e748214800e8970d04687be
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]