Daniel Brötzmann pushed to branch master at gajim / gajim


Commits:
11ff1e70 by wurstsalat at 2022-06-21T00:10:07+02:00
fix: Chat: Display corrections for /me messages correctly

Fixes #10933

- - - - -


9 changed files:

- gajim/common/events.py
- gajim/common/modules/mam.py
- gajim/common/modules/message.py
- gajim/gtk/chat_list.py
- gajim/gtk/controls/base.py
- gajim/gtk/controls/chat.py
- gajim/gtk/conversation/message_widget.py
- gajim/gtk/conversation/rows/message.py
- gajim/gtk/conversation/view.py


Changes:

=====================================
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
 


=====================================
gajim/common/modules/mam.py
=====================================
@@ -313,9 +313,11 @@ def _mam_message_received(self,
 
         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(


=====================================
gajim/common/modules/message.py
=====================================
@@ -192,9 +192,11 @@ def _message_received(self,
 
         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)
 


=====================================
gajim/gtk/chat_list.py
=====================================
@@ -433,7 +433,7 @@ def _on_message_updated(self, event: events.MessageUpdated) 
-> None:
             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))


=====================================
gajim/gtk/controls/base.py
=====================================
@@ -327,7 +327,8 @@ def process_event(self, event: events.ApplicationEvent) -> 
None:
         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(


=====================================
gajim/gtk/controls/chat.py
=====================================
@@ -415,7 +415,7 @@ def _on_message_sent(self, event: events.MessageSent) -> 
None:
 
         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,


=====================================
gajim/gtk/conversation/message_widget.py
=====================================
@@ -60,8 +60,10 @@ def add_with_styling(self,
         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:


=====================================
gajim/gtk/conversation/rows/message.py
=====================================
@@ -417,9 +417,9 @@ def set_retracted(self, text: str) -> None:
         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)


=====================================
gajim/gtk/conversation/view.py
=====================================
@@ -487,10 +487,14 @@ def scroll_to_end(self, force: bool = False) -> None:
         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:



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/11ff1e707f34e5c7a0f892569495c29479c2f9f1

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/11ff1e707f34e5c7a0f892569495c29479c2f9f1
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

Reply via email to