diff options
author | wurstsalat <mailtrash@posteo.de> | 2022-06-21 01:10:05 +0300 |
---|---|---|
committer | wurstsalat <mailtrash@posteo.de> | 2022-06-21 01:10:07 +0300 |
commit | 11ff1e707f34e5c7a0f892569495c29479c2f9f1 (patch) | |
tree | 8dd4ae27ec8f225c7570d32aee4192c18808a72a | |
parent | 5462da5a803fdc87932aaaa28065ebbfd6941ba0 (diff) |
fix: Chat: Display corrections for /me messages correctly
Fixes #10933
-rw-r--r-- | gajim/common/events.py | 1 | ||||
-rw-r--r-- | gajim/common/modules/mam.py | 2 | ||||
-rw-r--r-- | gajim/common/modules/message.py | 2 | ||||
-rw-r--r-- | gajim/gtk/chat_list.py | 2 | ||||
-rw-r--r-- | gajim/gtk/controls/base.py | 3 | ||||
-rw-r--r-- | gajim/gtk/controls/chat.py | 2 | ||||
-rw-r--r-- | gajim/gtk/conversation/message_widget.py | 2 | ||||
-rw-r--r-- | gajim/gtk/conversation/rows/message.py | 4 | ||||
-rw-r--r-- | gajim/gtk/conversation/view.py | 8 |
9 files changed, 19 insertions, 7 deletions
diff --git a/gajim/common/events.py b/gajim/common/events.py index 56379e839..ba7cf642c 100644 --- a/gajim/common/events.py +++ b/gajim/common/events.py @@ -349,6 +349,7 @@ class MessageUpdated(ApplicationEvent): account: str jid: JID msgtxt: str + nickname: Optional[str] properties: Any correct_id: str diff --git a/gajim/common/modules/mam.py b/gajim/common/modules/mam.py index b62e9a82b..b0eaae21a 100644 --- a/gajim/common/modules/mam.py +++ b/gajim/common/modules/mam.py @@ -313,9 +313,11 @@ class MAM(BaseModule): correct_id = parse_correction(properties) if correct_id is not None: + nickname = properties.muc_nickname or properties.nickname app.ged.raise_event(MessageUpdated(account=self._account, jid=jid, msgtxt=properties.body, + nickname=nickname, properties=properties, correct_id=correct_id)) app.storage.archive.store_message_correction( diff --git a/gajim/common/modules/message.py b/gajim/common/modules/message.py index 514bbd33b..e0cc5f027 100644 --- a/gajim/common/modules/message.py +++ b/gajim/common/modules/message.py @@ -192,9 +192,11 @@ class Message(BaseModule): correct_id = parse_correction(properties) if correct_id is not None: + nickname = properties.muc_nickname or properties.nickname event = MessageUpdated(account=self._account, jid=event_attr['jid'], msgtxt=msgtxt, + nickname=nickname, properties=properties, correct_id=correct_id) diff --git a/gajim/gtk/chat_list.py b/gajim/gtk/chat_list.py index b873c05ca..4f88d9e9c 100644 --- a/gajim/gtk/chat_list.py +++ b/gajim/gtk/chat_list.py @@ -433,7 +433,7 @@ class ChatList(Gtk.ListBox, EventHelper): return if event.correct_id == row.message_id: - row.set_message_text(event.msgtxt) + row.set_message_text(event.msgtxt, event.nickname) def _on_message_moderated(self, event: events.MessageModerated) -> None: row = self._chats.get((event.account, event.jid)) diff --git a/gajim/gtk/controls/base.py b/gajim/gtk/controls/base.py index 3887cf919..026b78a23 100644 --- a/gajim/gtk/controls/base.py +++ b/gajim/gtk/controls/base.py @@ -327,7 +327,8 @@ class BaseControl(ChatCommandProcessor, CommandTools, EventHelper): getattr(self, method_name)(event) def _on_message_updated(self, event: events.MessageUpdated) -> None: - self.conversation_view.correct_message(event.correct_id, event.msgtxt) + self.conversation_view.correct_message( + event.correct_id, event.msgtxt, event.nickname) def _on_message_moderated(self, event: events.MessageModerated) -> None: text = get_retraction_text( diff --git a/gajim/gtk/controls/chat.py b/gajim/gtk/controls/chat.py index c64b64150..ffc3b0f66 100644 --- a/gajim/gtk/controls/chat.py +++ b/gajim/gtk/controls/chat.py @@ -415,7 +415,7 @@ class ChatControl(BaseControl): if event.correct_id: self.conversation_view.correct_message( - event.correct_id, event.message) + event.correct_id, event.message, self.get_our_nick()) return self.add_message(event.message, diff --git a/gajim/gtk/conversation/message_widget.py b/gajim/gtk/conversation/message_widget.py index 7a3f7c099..ba5da2cab 100644 --- a/gajim/gtk/conversation/message_widget.py +++ b/gajim/gtk/conversation/message_widget.py @@ -60,8 +60,10 @@ class MessageWidget(Gtk.Box): self.add_content(result) def _add_action_phrase(self, text: str, nickname: str): + self.clear() widget = PlainWidget(self._account, self._selectable) widget.add_action_phrase(text, nickname) + widget.show_all() self.add(widget) def add_content(self, content: ContentT) -> None: diff --git a/gajim/gtk/conversation/rows/message.py b/gajim/gtk/conversation/rows/message.py index f21bcb13c..59c42b9b6 100644 --- a/gajim/gtk/conversation/rows/message.py +++ b/gajim/gtk/conversation/rows/message.py @@ -417,9 +417,9 @@ class MessageRow(BaseRow): self._message_widget.add_with_styling(text) self.get_style_context().add_class('retracted-message') - def set_correction(self, text: str) -> None: + def set_correction(self, text: str, nickname: Optional[str]) -> None: if not isinstance(self._message_widget, PreviewWidget): - self._message_widget.add_with_styling(text) + self._message_widget.add_with_styling(text, nickname) self._has_receipt = False self._message_icons.set_receipt_icon_visible(False) diff --git a/gajim/gtk/conversation/view.py b/gajim/gtk/conversation/view.py index 14acd95e5..c8acedd26 100644 --- a/gajim/gtk/conversation/view.py +++ b/gajim/gtk/conversation/view.py @@ -487,10 +487,14 @@ class ConversationView(Gtk.ListBox): if self.autoscroll or force: GLib.idle_add(self.emit, 'scroll-to-end') - def correct_message(self, correct_id: str, text: str) -> None: + def correct_message(self, + correct_id: str, + text: str, + nickname: Optional[str] + ) -> None: message_row = self._get_row_by_message_id(correct_id) if message_row is not None: - message_row.set_correction(text) + message_row.set_correction(text, nickname) message_row.set_merged(False) def show_message_retraction(self, stanza_id: str, text: str) -> None: |