diff options
-rw-r--r-- | src/virtualkeyboard/content/components/Keyboard.qml | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/virtualkeyboard/content/components/Keyboard.qml b/src/virtualkeyboard/content/components/Keyboard.qml index 347f1076..954c6f2f 100644 --- a/src/virtualkeyboard/content/components/Keyboard.qml +++ b/src/virtualkeyboard/content/components/Keyboard.qml @@ -493,7 +493,7 @@ Item { InputContext.inputEngine.virtualKeyCancel() keyboardInputArea.initialKey = null alternativeKeys.openedByNavigationKeyLongPress = keyboard.navigationModeActive - } else if (keyboard.activeKey.key === Qt.Key_Context1) { + } else if (keyboard.activeKey.key === Qt.Key_Context1 && !keyboard.symbolMode) { InputContext.inputEngine.virtualKeyCancel() keyboardInputArea.dragSymbolMode = true keyboard.symbolMode = true @@ -1078,14 +1078,28 @@ Item { InputContext.inputEngine.virtualKeyCancel() setActiveKey(key) press(key, false) - if (dragSymbolMode) - pressAndHoldTimer.restart() + if (dragSymbolMode) { + if (key && key.functionKey && key.key !== Qt.Key_Context1) + pressAndHoldTimer.restart() + else + pressAndHoldTimer.stop() + } } } } onReleased: { - if (containsPoint(touchPoints, activeTouchPoint)) + if (containsPoint(touchPoints, activeTouchPoint)) { + if (dragSymbolMode) { + var key = keyOnPoint(activeTouchPoint.x, activeTouchPoint.y) + if (key && key.key === Qt.Key_Context1) { + dragSymbolMode = false + InputContext.inputEngine.virtualKeyCancel() + reset() + return + } + } releaseActiveKey(); + } } onCanceled: { if (containsPoint(touchPoints, activeTouchPoint)) |