diff --git a/gajim/common/styling.py b/gajim/common/styling.py index 7ffc5e782857c1e84b9a2fd6859c8e1ec874cbd6..1f5ccc95fcb01f35a83572f9e04dcf4cc38cae09 100644 --- a/gajim/common/styling.py +++ b/gajim/common/styling.py @@ -127,6 +127,7 @@ class StrikeSpan(StyleObject): @dataclass class ParsingResult: + text: str blocks: list @@ -144,7 +145,7 @@ def process(text, nested=False): result = process(block.unquote(), nested=True) block.blocks = result.blocks - return ParsingResult(blocks) + return ParsingResult(text, blocks) def _parse_blocks(text, nested): diff --git a/gajim/gtk/conversation/message_widget.py b/gajim/gtk/conversation/message_widget.py index cb4fab76c9c808c5132b6a156719c550709ee95e..ab741d7f58616e79615e8d45cdabbbcb75f64dba 100644 --- a/gajim/gtk/conversation/message_widget.py +++ b/gajim/gtk/conversation/message_widget.py @@ -24,8 +24,15 @@ def __init__(self, account): Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL) self._account = account - def add_content(self, blocks): - for block in blocks: + self._content = None + + def get_content(self): + return self._content + + def add_content(self, content): + self.clear() + self._content = content + for block in content.blocks: if block.name == 'plain': widget = PlainWidget(self._account) widget.add_content(block) @@ -40,8 +47,13 @@ def add_content(self, blocks): if block.name == 'quote': message_widget = MessageWidget(self._account) - message_widget.add_content(block.blocks) + message_widget.add_content(block) widget = QuoteWidget(self._account) widget.attach_message_widget(message_widget) self.add(widget) continue + + self.show_all() + + def clear(self): + self.foreach(self.remove) diff --git a/gajim/gtk/conversation/rows/info.py b/gajim/gtk/conversation/rows/info.py index d66221b939ed9d40cea2c9a55986dc318eddea04..db1fd3f2ad2dcefcb28ae0e583c931dc85359f8b 100644 --- a/gajim/gtk/conversation/rows/info.py +++ b/gajim/gtk/conversation/rows/info.py @@ -60,7 +60,7 @@ def __init__(self, result = process(text) message_widget = MessageWidget(account) - message_widget.add_content(result.blocks) + message_widget.add_content(result) self.grid.attach(message_widget, 1, 0, 1, 1) self.show_all() diff --git a/gajim/gtk/conversation/rows/message.py b/gajim/gtk/conversation/rows/message.py index 7979305a19f9fb0db7f68822c385de81329f990f..a278b0bf9320a409c2656db78c1242d2f6083e04 100644 --- a/gajim/gtk/conversation/rows/message.py +++ b/gajim/gtk/conversation/rows/message.py @@ -82,8 +82,8 @@ def __init__(self, 'conversation-mention-highlight') result = process(text) - message_widget = MessageWidget(account) - message_widget.add_content(result.blocks) + self._message_widget = MessageWidget(account) + self._message_widget.add_content(result) self._meta_box = Gtk.Box(spacing=6) self._meta_box.pack_start( @@ -129,7 +129,7 @@ def __init__(self, avatar_placeholder.add(self._avatar_surface) bottom_box = Gtk.Box(spacing=6) - bottom_box.add(message_widget) + bottom_box.add(self._message_widget) bottom_box.add(MoreMenuButton(self, history_mode=history_mode)) self.grid.attach(avatar_placeholder, 0, 0, 1, 2) @@ -214,21 +214,15 @@ def set_receipt(self): def set_displayed(self): self._has_displayed = True - def set_correction(self, message_id, text, other_text_tags, kind, name, - additional_data=None): - self._corrections.append(self.textview.get_text()) - self.textview.clear() + def set_correction(self, text, message_id): + self._corrections.append(self._message_widget.get_content().text) + result = process(text) + self._message_widget.add_content(result) + self._has_receipt = False self._message_icons.set_receipt_icon_visible(False) self._message_icons.set_correction_icon_visible(True) - self.textview.print_text( - text, - other_text_tags=other_text_tags, - kind=kind, - name=name, - additional_data=additional_data) - corrections = '\n'.join(line for line in self._corrections) corrections = reduce_chars_newlines( corrections, max_chars=150, max_lines=10) diff --git a/gajim/gtk/conversation/view.py b/gajim/gtk/conversation/view.py index 0898aeca4f4687393401d917fc814f0c9621bf78..04fa705ecb95e78686c8b7448c76948aee0271e7 100644 --- a/gajim/gtk/conversation/view.py +++ b/gajim/gtk/conversation/view.py @@ -150,14 +150,7 @@ def add_message(self, history_mode=self._history_mode) else: if correct_id: - self.correct_message( - correct_id, - message_id, - text, - other_text_tags, - kind, - name, - additional_data=additional_data) + self.correct_message(correct_id, message_id, text) return avatar = self._get_avatar(kind, name) @@ -371,13 +364,10 @@ def scroll_to_end(self, force=False): if self.autoscroll or force: GLib.idle_add(scroll_to_end, self.get_parent().get_parent()) - def correct_message(self, correct_id, message_id, text, - other_text_tags, kind, name, additional_data=None): + def correct_message(self, correct_id, message_id, text): message_row = self._get_row_by_message_id(correct_id) if message_row is not None: - message_row.set_correction( - message_id, text, other_text_tags, kind, name, - additional_data=additional_data) + message_row.set_correction(text, message_id) message_row.set_merged(False) def show_receipt(self, id_):