Improve autocompletion of Emojis

Now it start automatically for emojis, and also the first time you use
tab you jump to the first selected emoji or face.
This commit is contained in:
Carl Schwan
2020-11-24 17:54:15 +01:00
parent c93b724746
commit 8da4ff1585

View File

@@ -219,6 +219,7 @@ ToolBar {
TextArea {
property real progress: 0
property bool autoAppeared: false;
Layout.fillWidth: true
@@ -279,24 +280,23 @@ ToolBar {
Keys.onBacktabPressed: if (isAutoCompleting) autoCompleteListView.decrementCurrentIndex()
Keys.onTabPressed: {
if (isAutoCompleting) {
if (isAutoCompleting && autoAppeared === false) {
autoAppeared = false;
autoCompleteListView.incrementCurrentIndex()
} else {
autoAppeared = false;
autoCompleteBeginPosition = text.substring(0, cursorPosition).lastIndexOf(" ") + 1
var autoCompletePrefix = text.substring(0, cursorPosition).split(" ").pop()
let autoCompletePrefix = text.substring(0, cursorPosition).split(" ").pop()
if (!autoCompletePrefix) return
if (autoCompletePrefix.startsWith(":")) {
autoCompleteBeginPosition = text.substring(0, cursorPosition).lastIndexOf(" ") + 1
autoCompleteModel = emojiModel.filterModel(autoCompletePrefix)
if (autoCompleteModel.length === 0) return
isAutoCompleting = true
autoCompleteEndPosition = cursorPosition
} else {
autoCompleteModel = currentRoom.getUsers(autoCompletePrefix)
if (autoCompleteModel.length === 0) return
isAutoCompleting = true
autoCompleteEndPosition = cursorPosition
}
if (autoCompleteModel.length === 0) return
isAutoCompleting = true
autoCompleteEndPosition = cursorPosition
}
replaceAutoComplete(autoCompleteListView.currentItem.autoCompleteText)
}
@@ -305,21 +305,30 @@ ToolBar {
timeoutTimer.restart()
repeatTimer.start()
currentRoom.cachedInput = text
autoAppeared = false;
if (cursorPosition !== autoCompleteBeginPosition && cursorPosition !== autoCompleteEndPosition) {
isAutoCompleting = false
autoCompleteListView.currentIndex = 0
isAutoCompleting = false;
autoCompleteListView.currentIndex = 0;
}
var autoCompletePrefix = text.substring(0, cursorPosition).split(" ").pop();
if (!autoCompletePrefix) return
if (autoCompletePrefix.startsWith("@")) {
autoCompletePrefix = autoCompletePrefix.substring(1);
autoCompleteBeginPosition = text.substring(0, cursorPosition).lastIndexOf(" ") + 1 // 1 = space
autoCompleteModel = currentRoom.getUsers(autoCompletePrefix)
if (autoCompleteModel.length === 0) return
let autoCompletePrefix = text.substring(0, cursorPosition).split(" ").pop();
if (!autoCompletePrefix) {
return;
}
if (autoCompletePrefix.startsWith("@") || autoCompletePrefix.startsWith(":")) {
if (autoCompletePrefix.startsWith("@")) {
autoCompletePrefix = autoCompletePrefix.substring(1);
autoCompleteBeginPosition = text.substring(0, cursorPosition).lastIndexOf(" ") + 1 // 1 = space
autoCompleteModel = currentRoom.getUsers(autoCompletePrefix);
} else {
autoCompleteModel = emojiModel.filterModel(autoCompletePrefix);
}
if (autoCompleteModel.length === 0) {
return;
}
isAutoCompleting = true
autoAppeared = true;
autoCompleteEndPosition = cursorPosition
}
}