Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2022-06-21 01:10:05 +0300
committerwurstsalat <mailtrash@posteo.de>2022-06-21 01:10:07 +0300
commit11ff1e707f34e5c7a0f892569495c29479c2f9f1 (patch)
tree8dd4ae27ec8f225c7570d32aee4192c18808a72a
parent5462da5a803fdc87932aaaa28065ebbfd6941ba0 (diff)
fix: Chat: Display corrections for /me messages correctly
Fixes #10933
-rw-r--r--gajim/common/events.py1
-rw-r--r--gajim/common/modules/mam.py2
-rw-r--r--gajim/common/modules/message.py2
-rw-r--r--gajim/gtk/chat_list.py2
-rw-r--r--gajim/gtk/controls/base.py3
-rw-r--r--gajim/gtk/controls/chat.py2
-rw-r--r--gajim/gtk/conversation/message_widget.py2
-rw-r--r--gajim/gtk/conversation/rows/message.py4
-rw-r--r--gajim/gtk/conversation/view.py8
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: