Files
ssuptandGitHub 3481b5614b Fix pointer navigation in Quattro launcher menus (#6343)
Accumulate sub-threshold movement so slow motion with a flat acceleration profile updates selection. Sample pointer state on row entry and carry pointer intent through subordinate menus while preserving predictable keyboard selection.
2026-07-22 15:27:56 -07:00

76 lines
1.5 KiB
QML

import QtQuick
import Quickshell
import qs.Ui
ShellRoot {
id: root
function fail(message) {
console.log("RESULT fail " + message)
Qt.quit()
}
function runChecks() {
if (gate.moved(row, { x: 2, y: 3 })) {
fail("the default initial sample was accepted")
return
}
if (gate.moved(row, { x: 3, y: 4 })) {
fail("threshold-sized jitter was accepted")
return
}
if (!gate.moved(row, { x: 5, y: 4 })) {
fail("real pointer movement was ignored")
return
}
gate.reset()
if (gate.moved(row, { x: 7, y: 8 })) {
fail("reset accepted its initial sample")
return
}
if (gate.moved(row, { x: 7.6, y: 8 })) {
fail("sub-threshold movement was accepted too early")
return
}
if (!gate.moved(row, { x: 8.2, y: 8 })) {
fail("slow cumulative movement was ignored")
return
}
gate.allowInitialSample()
if (!gate.moved(row, { x: 9, y: 10 })) {
fail("the explicitly allowed initial sample was ignored")
return
}
if (gate.moved(row, { x: 9, y: 10 })) {
fail("the initial sample exception was not consumed")
return
}
console.log("RESULT pass")
Qt.quit()
}
Component.onCompleted: Qt.callLater(runChecks)
Item {
id: card
width: 200
height: 200
Item {
id: row
x: 20
y: 30
width: 100
height: 40
}
}
PointerMoveGate {
id: gate
referenceItem: card
}
}