mirror of
https://github.com/overte-org/overte.git
synced 2025-04-17 08:56:36 +02:00
Fixup signal handling causing app errors; add keyboard navigation to emoji window
This commit is contained in:
parent
8b79dc3020
commit
cc9c9ec443
2 changed files with 40 additions and 15 deletions
|
@ -132,6 +132,18 @@ Rectangle {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
function selectEmoji(code) {
|
||||
sendToScript({
|
||||
"source": "SimplifiedEmoji.qml",
|
||||
"method": "selectedEmoji",
|
||||
"code": code
|
||||
});
|
||||
root.isSelected = true;
|
||||
root.currentCode = code;
|
||||
}
|
||||
|
||||
|
||||
Rectangle {
|
||||
id: emojiIconListContainer
|
||||
anchors.top: emojiIndicatorContainer.bottom
|
||||
|
@ -167,19 +179,25 @@ Rectangle {
|
|||
root.currentCode = model.code.utf;
|
||||
}
|
||||
onClicked: {
|
||||
sendToScript({
|
||||
"source": "SimplifiedEmoji.qml",
|
||||
"method": "selectedEmoji",
|
||||
"code": code.utf
|
||||
});
|
||||
root.isSelected = true;
|
||||
root.currentCode = model.code.utf;
|
||||
root.selectEmoji(model.code.utf);
|
||||
}
|
||||
}
|
||||
}
|
||||
cacheBuffer: 400
|
||||
focus: true
|
||||
highlight: Rectangle { color: Qt.rgba(1, 1, 1, 0.4); radius: 0 }
|
||||
highlight: Rectangle {
|
||||
color: Qt.rgba(1, 1, 1, 0.4)
|
||||
radius: 2
|
||||
}
|
||||
|
||||
KeyNavigation.backtab: emojiSearchTextField
|
||||
KeyNavigation.tab: emojiSearchTextField
|
||||
|
||||
Keys.onPressed: {
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
||||
root.selectEmoji(grid.model.get(grid.currentIndex).code.utf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SimplifiedControls.VerticalScrollBar {
|
||||
|
@ -216,10 +234,16 @@ Rectangle {
|
|||
}
|
||||
onAccepted: {
|
||||
root.filterEmoji(emojiSearchTextField.text);
|
||||
waitForMoreInputTimer.stop();
|
||||
if (filteredModel.count === 1) {
|
||||
root.selectEmoji(filteredModel.get(0).code.utf);
|
||||
} else {
|
||||
grid.forceActiveFocus();
|
||||
}
|
||||
}
|
||||
onFocusChanged: {
|
||||
emojiSearchTextField.autoScroll = focus;
|
||||
}
|
||||
|
||||
KeyNavigation.backtab: grid
|
||||
KeyNavigation.tab: grid
|
||||
}
|
||||
|
||||
Timer {
|
||||
|
|
|
@ -266,6 +266,7 @@ function endReactionWrapper(reaction) {
|
|||
case ("point"):
|
||||
if (mouseMoveEventsConnected) {
|
||||
Controller.mouseMoveEvent.disconnect(mouseMoveEvent);
|
||||
mouseMoveEventsConnected = false;
|
||||
}
|
||||
intersectedEntityOrAvatarID = null;
|
||||
deleteOldReticles();
|
||||
|
@ -554,13 +555,10 @@ function selectedEmoji(code) {
|
|||
|
||||
|
||||
function onEmojiAppClosed() {
|
||||
if (emojiAppWindow) {
|
||||
if (emojiAppWindow && emojiAppWindowSignalsConnected) {
|
||||
emojiAppWindow.fromQml.disconnect(onMessageFromEmojiApp);
|
||||
emojiAppWindow.closed.disconnect(onEmojiAppClosed);
|
||||
}
|
||||
if (mouseMoveEventsConnected) {
|
||||
Controller.mouseMoveEvent.disconnect(mouseMoveEvent);
|
||||
}
|
||||
emojiAppWindow = false;
|
||||
}
|
||||
|
||||
|
@ -607,6 +605,7 @@ var EMOJI_APP_WINDOW_FLAGS = 0x00000001 | // Qt::Window
|
|||
var emojiAppWindow = false;
|
||||
var POPOUT_SAFE_MARGIN_X = 30;
|
||||
var POPOUT_SAFE_MARGIN_Y = 30;
|
||||
var emojiAppWindowSignalsConnected = false;
|
||||
function toggleEmojiApp() {
|
||||
if (emojiAppWindow) {
|
||||
emojiAppWindow.close();
|
||||
|
@ -633,6 +632,8 @@ function toggleEmojiApp() {
|
|||
|
||||
emojiAppWindow.fromQml.connect(onMessageFromEmojiApp);
|
||||
emojiAppWindow.closed.connect(onEmojiAppClosed);
|
||||
emojiAppWindowSignalsConnected = true;
|
||||
|
||||
// The actual emoji module needs this qml window object so it can send messages
|
||||
// to update the Selected emoji UI
|
||||
emojiAPI.registerAvimojiQMLWindow(emojiAppWindow);
|
||||
|
|
Loading…
Reference in a new issue