From 7003a6d69189a11d0b93a22037eda28efb904486 Mon Sep 17 00:00:00 2001 From: lovetox <philipp@hoerist.com> Date: Mon, 19 Apr 2021 21:47:00 +0200 Subject: [PATCH] Make Correction Work again --- gajim/common/styling.py | 3 ++- gajim/gtk/conversation/message_widget.py | 18 +++++++++++++++--- gajim/gtk/conversation/rows/info.py | 2 +- gajim/gtk/conversation/rows/message.py | 22 ++++++++-------------- gajim/gtk/conversation/view.py | 16 +++------------- 5 files changed, 29 insertions(+), 32 deletions(-) diff --git a/gajim/common/styling.py b/gajim/common/styling.py index 7ffc5e7828..1f5ccc95fc 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 cb4fab76c9..ab741d7f58 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 d66221b939..db1fd3f2ad 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 7979305a19..a278b0bf93 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 0898aeca4f..04fa705ecb 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_): -- GitLab