Unverified Commit 4bbd328d authored by dmMaze's avatar dmMaze Committed by GitHub
Browse files

Merge pull request #718 from minicom365/dev

Fix IME input bug
parents 62aa2ac0 41e494cc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -183,7 +183,7 @@ sh scripts/build-macos-app.sh
* ```Ctrl++```/```Ctrl+-``` (또는 ```Ctrl+Shift+=```) 로 이미지 크기를 조절합니다
* ```Ctrl+G```/```Ctrl+F``` 로 모든페이지 혹은 현재페이지 내에서 검색합니다.
* ```0-9``` 로 텍스트 레이어의 불투명도를 조정합니다.
* For text editing: bold - ```Ctrl+B```, underline - ```Ctrl+U```, Italics - ```Ctrl+I``` 
* 텍스트 스타일: 두껍게 - ```Ctrl+B```, 밑줄 - ```Ctrl+U```, 이탤릭 - ```Ctrl+I``` 
* 텍스트 스타일 패널 -> 효과에서 텍스트 그림자 및 투명도를 설정합니다.  
* ```Alt+Arrow Keys``` 및 ```Alt+WASD``` (또는 텍스트 편집 모드에서 ```pageDown``` 및 ```pageUp```) 로 텍스트 블록 사이를 전환합니다.
  
+6 −17
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@ class SourceTextEdit(QTextEdit):
            self.text_content_changed = True
            if self.hasFocus():
                self.change_from = from_
                self.change_added = added
                self.change_added = added - removed

    def adjustSize(self):
        h = self.document().documentLayout().documentSize().toSize().height()
@@ -190,20 +190,9 @@ class SourceTextEdit(QTextEdit):
                    added_text = self.input_method_text
                    change_from = self.input_method_from
                    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()
@@ -250,13 +239,13 @@ class SourceTextEdit(QTextEdit):
        return super().focusOutEvent(event)

    def inputMethodEvent(self, e: QInputMethodEvent) -> None:
        if self.pre_editing is False:
            cursor = self.textCursor()
            self.input_method_from = cursor.selectionStart()
        if e.preeditString() == '':
            self.pre_editing = False
            self.input_method_text = e.commitString()
        else:
            if self.pre_editing is False:
                cursor = self.textCursor()
                self.input_method_from = cursor.selectionStart()
            self.pre_editing = True
        super().inputMethodEvent(e)

+4 −11
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ def propagate_user_edit(src_edit: Union[TransTextEdit, TextBlkItem], target_edit
            cursor.setPosition(pos)
            cursor.setPosition(pos + removed, QTextCursor.MoveMode.KeepAnchor)
            cursor.removeSelectedText()
    target_edit.old_undo_steps = target_edit.document().availableUndoSteps()


class MoveBlkItemsCommand(QUndoCommand):
@@ -265,12 +266,7 @@ class TextItemEditCommand(QUndoCommand):
        self.op_counter = 0
        self.edit = trans_edit
        self.blkitem = blkitem
        self.num_steps = min(num_steps, 2)
        if blkitem.input_method_from == -1:
            if not blkitem.is_formatting:
                self.num_steps = 1
        else:
            blkitem.input_method_from = -1
        self.num_steps = num_steps
        self.is_formatting = blkitem.is_formatting

    def redo(self):
@@ -292,14 +288,11 @@ class TextItemEditCommand(QUndoCommand):
class TextEditCommand(QUndoCommand):
    def __init__(self, edit: Union[SourceTextEdit, TransTextEdit], num_steps: int, blkitem: TextBlkItem) -> None:
        super().__init__()
        # TODO: remove it for transtextedit
        self.edit = edit
        self.blkitem = blkitem
        self.op_counter = 0
        self.num_steps = min(num_steps, 2)
        if edit.input_method_from == -1:
            self.num_steps = 1
        else:
            edit.input_method_from = -1
        self.num_steps = num_steps

    def redo(self):
        if self.op_counter == 0:
+6 −22
Original line number Diff line number Diff line
@@ -72,13 +72,13 @@ class TextBlkItem(QGraphicsTextItem):
        self.setCacheMode(QGraphicsItem.CacheMode.DeviceCoordinateCache)

    def inputMethodEvent(self, e: QInputMethodEvent):
        if self.pre_editing == False:
            cursor = self.textCursor()
            self.input_method_from = cursor.selectionStart()
        if e.preeditString() == '':
            self.pre_editing = False
            self.input_method_text = e.commitString()
        else:
            if self.pre_editing is False:
                cursor = self.textCursor()
                self.input_method_from = cursor.selectionStart()
            self.pre_editing = True
        super().inputMethodEvent(e)
        
@@ -99,26 +99,10 @@ class TextBlkItem(QGraphicsTextItem):
                        change_from = self.input_method_from
                        input_method_used = True
            
                        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) 

@@ -410,7 +394,7 @@ class TextBlkItem(QGraphicsTextItem):
        if not self.pre_editing:
            if self.hasFocus():
                self.change_from = from_
                self.change_added = added
                self.change_added = added - removed

    def keyPressEvent(self, e: QKeyEvent) -> None: