Daniel Brötzmann pushed to branch mainwindow at gajim / gajim
Commits: a856fc19 by wurstsalat at 2021-10-24T22:52:01+02:00 Groupchat: Implement click avatar to mention - - - - - 3 changed files: - gajim/gtk/controls/base.py - gajim/gtk/conversation/rows/message.py - gajim/gtk/conversation/view.py Changes: ===================================== gajim/gtk/controls/base.py ===================================== @@ -158,6 +158,7 @@ def __init__(self, widget_name, account, jid): # Create ConversationView and connect signals self.conversation_view = ConversationView(self.account, self.contact) self.conversation_view.connect('quote', self.on_quote) + self.conversation_view.connect('mention', self.on_mention) id_ = self.conversation_view.connect( 'key-press-event', self._on_conversation_view_key_press) @@ -717,6 +718,12 @@ def paste_clipboard_as_quote(self, _item: Gtk.MenuItem) -> None: def on_quote(self, _widget, text): self.insert_as_quote(text) + def on_mention(self, _widget, name): + gc_refer_to_nick_char = app.settings.get('gc_refer_to_nick_char') + text = f'{name}{gc_refer_to_nick_char} ' + message_buffer = self.msg_textview.get_buffer() + message_buffer.insert_at_cursor(text) + def _on_message_textview_paste_event(self, _texview): clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) image = clipboard.wait_for_image() ===================================== gajim/gtk/conversation/rows/message.py ===================================== @@ -36,6 +36,7 @@ from ..message_widget import MessageWidget from ...preview import PreviewWidget from ...util import format_fingerprint +from ...util import get_cursor MERGE_TIMEFRAME = timedelta(seconds=120) @@ -141,7 +142,14 @@ def __init__(self, self._meta_box.pack_end(self._message_icons, False, True, 0) avatar = self._get_avatar(kind, name) self._avatar_image = Gtk.Image.new_from_surface(avatar) - avatar_placeholder = Gtk.Box() + + if self._is_groupchat: + avatar_placeholder = Gtk.EventBox() + avatar_placeholder.connect( + 'button-press-event', self._on_avatar_clicked, name) + avatar_placeholder.connect('realize', self._on_realize) + else: + avatar_placeholder = Gtk.Box() avatar_placeholder.set_size_request(AvatarSize.ROSTER, -1) avatar_placeholder.set_valign(Gtk.Align.START) avatar_placeholder.add(self._avatar_image) @@ -186,6 +194,14 @@ def _get_avatar(self, kind, name): return contact.get_avatar(AvatarSize.ROSTER, scale, add_show=False) + def _on_avatar_clicked(self, _widget, event, name): + if event.type == Gdk.EventType.BUTTON_PRESS and event.button == 1: + self.get_parent().on_mention(name) + + @staticmethod + def _on_realize(event_box): + event_box.get_window().set_cursor(get_cursor('pointer')) + def is_same_sender(self, message): return message.name == self.name ===================================== gajim/gtk/conversation/view.py ===================================== @@ -49,6 +49,11 @@ class ConversationView(Gtk.ListBox): None, (str, ) ), + 'mention': ( + GObject.SignalFlags.RUN_LAST | GObject.SignalFlags.ACTION, + None, + (str, ) + ), 'accept-call': ( GObject.SignalFlags.RUN_LAST | GObject.SignalFlags.ACTION, None, @@ -442,6 +447,9 @@ def show_error(self, id_, error): def on_quote(self, text): self.emit('quote', text) + def on_mention(self, name): + self.emit('mention', name) + def accept_call(self, event): self.emit('accept-call', event) View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/a856fc1924f73495f0327f18b986da2341f4e0fc -- View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/a856fc1924f73495f0327f18b986da2341f4e0fc You're receiving this email because of your account on dev.gajim.org.
_______________________________________________ Commits mailing list Commits@gajim.org https://lists.gajim.org/cgi-bin/listinfo/commits