From b64e41c6382bba00f68eabe8ab382354eab8c53d Mon Sep 17 00:00:00 2001 From: minicom <3387910@naver.com> Date: Sat, 11 Jan 2025 01:35:04 +0900 Subject: [PATCH] Restore full-width character processing code --- ui/textedit_area.py | 12 ++++++++++++ ui/textitem.py | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/ui/textedit_area.py b/ui/textedit_area.py index ae84b26..c057471 100644 --- a/ui/textedit_area.py +++ b/ui/textedit_area.py @@ -192,7 +192,19 @@ def handle_content_change(self): input_method_used = True self.input_method_from = -1 elif self.change_added > 0: + text = self.toPlainText() + len_text = len(text) cursor = self.textCursor() + + if self.change_added > len_text or change_from + self.change_added > len_text: + self.change_added = 1 + change_from = self.textCursor().position() - 1 + cursor.setPosition(change_from) + cursor.setPosition(change_from + self.change_added, QTextCursor.MoveMode.KeepAnchor) + added_text = cursor.selectedText() + if added_text == '…' or added_text == '—': + self.change_added = 2 + change_from -= 1 cursor.setPosition(change_from) cursor.setPosition(change_from + self.change_added, QTextCursor.MoveMode.KeepAnchor) added_text = cursor.selectedText() diff --git a/ui/textitem.py b/ui/textitem.py index 1e2874b..9d06a5f 100644 --- a/ui/textitem.py +++ b/ui/textitem.py @@ -102,7 +102,25 @@ def on_content_changed(self): self.input_method_from = -1 elif self.change_added > 0: + len_text = len(self.toPlainText()) cursor = self.textCursor() + + # if self.change_added > len_text: + # self.change_added = 1 + # change_from = self.textCursor().position() - 1 + # input_method_used = True + # cursor.setPosition(change_from) + # cursor.setPosition(change_from + self.change_added, QTextCursor.MoveMode.KeepAnchor) + if self.change_added > len_text or change_from + self.change_added > len_text: + self.change_added = 1 + change_from = self.textCursor().position() - 1 + cursor.setPosition(change_from) + cursor.setPosition(change_from + self.change_added, QTextCursor.MoveMode.KeepAnchor) + added_text = cursor.selectedText() + if added_text == '…' or added_text == '—': + self.change_added = 2 + change_from -= 1 + cursor.setPosition(change_from) cursor.setPosition(change_from + self.change_added, QTextCursor.MoveMode.KeepAnchor)