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
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits