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

Reply via email to