Gestures: flick, long-press alternates, trackpad, layer slide, rollover
- PointerTracker: per-finger gesture state machine (pure, unit-tested) - AlternatesPicker + AlternatesPopup.qml: long-press choices, finger selects - Space long-press trackpad moves the cursor with arrow keysyms - Slide from .?123 onto a symbol types it and switches back - New finger commits pending taps (iOS rollover) - Flick animation: secondary symbol slides down as the finger moves - Transparent popup margin with an input region that passes clicks through - tst_keyboardsurface: end-to-end gesture tests on the real QML Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+14
-2
@@ -8,17 +8,29 @@ Window {
|
||||
required property KeyboardController controller
|
||||
property var placement: null // FloatingWindow, set from C++
|
||||
|
||||
// Transparent room above the keyboard for long-press popups on the top row.
|
||||
readonly property real popupMargin: 90
|
||||
// Outside this, input passes through to whatever is below the window.
|
||||
readonly property rect inputRegion: keyboard.alternates.open
|
||||
? Qt.rect(0, 0, width, height)
|
||||
: Qt.rect(panel.x, panel.y, panel.width, panel.height)
|
||||
|
||||
width: 1000
|
||||
height: 340
|
||||
height: 340 + popupMargin
|
||||
visible: false
|
||||
color: "transparent"
|
||||
|
||||
onInputRegionChanged: placement?.setInputRegion(inputRegion)
|
||||
onPlacementChanged: placement?.setInputRegion(inputRegion)
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
id: panel
|
||||
anchors { fill: parent; topMargin: root.popupMargin }
|
||||
radius: Theme.windowRadius
|
||||
color: Theme.background
|
||||
|
||||
Keyboard {
|
||||
id: keyboard
|
||||
anchors { left: parent.left; right: parent.right; top: parent.top; bottom: handle.top }
|
||||
anchors.margins: 2
|
||||
model: root.layoutModel
|
||||
|
||||
Reference in New Issue
Block a user