summary refs log tree commit diff
diff options
context:
space:
mode:
authorMalte E <malte.e@mailbox.org>2022-03-20 17:12:13 +0100
committerMalte E <malte.e@mailbox.org>2022-03-20 17:12:13 +0100
commit86a81307fb3b97a346b5a82fe04d6ddb45278b3e (patch)
tree324501de0840476b674b93475c6ba9d57d1c8bac
parentTranslated using Weblate (Indonesian) (diff)
downloadnheko-86a81307fb3b97a346b5a82fe04d6ddb45278b3e.tar.xz
make completer work with input method
-rw-r--r--resources/qml/MessageInput.qml23
1 files changed, 14 insertions, 9 deletions
diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml
index 8090cd99..34f35973 100644
--- a/resources/qml/MessageInput.qml
+++ b/resources/qml/MessageInput.qml
@@ -147,11 +147,24 @@ Rectangle {
                 bottomPadding: 8
                 leftPadding: inputBar.showAllButtons? 0 : 8
                 focus: true
+                property string lastChar
                 onTextChanged: {
                     if (room)
                         room.input.updateState(selectionStart, selectionEnd, cursorPosition, text);
-
                     forceActiveFocus();
+                    if (cursorPosition > 0)
+                        lastChar = text.charAt(cursorPosition-1)
+                    else
+                        lastChar = ''
+                    if (lastChar == '@') {
+                        messageInput.openCompleter(selectionStart, "user");
+                    } else if (lastChar == ':') {
+                        messageInput.openCompleter(selectionStart, "emoji");
+                    } else if (lastChar == '#') {
+                        messageInput.openCompleter(selectionStart, "roomAliases");
+                    } else if (lastChar == "~") {
+                        messageInput.openCompleter(selectionStart, "customEmoji");
+                    }
                 }
                 onCursorPositionChanged: {
                     if (!room)
@@ -187,14 +200,6 @@ Rectangle {
                         messageInput.text = room.input.previousText();
                     } else if (event.modifiers == Qt.ControlModifier && event.key == Qt.Key_N) {
                         messageInput.text = room.input.nextText();
-                    } else if (event.key == Qt.Key_At) {
-                        messageInput.openCompleter(selectionStart, "user");
-                    } else if (event.key == Qt.Key_Colon) {
-                        messageInput.openCompleter(selectionStart, "emoji");
-                    } else if (event.key == Qt.Key_NumberSign) {
-                        messageInput.openCompleter(selectionStart, "roomAliases");
-                    } else if (event.text == "~") {
-                        messageInput.openCompleter(selectionStart, "customEmoji");
                     } else if (event.key == Qt.Key_Escape && popup.opened) {
                         completer.completerName = "";
                         popup.close();