unlocking closes a keyboard nobody asked for
This commit is contained in:
parent
269c151899
commit
a5f0fadba8
1 changed files with 22 additions and 0 deletions
|
|
@ -251,6 +251,28 @@ Scope {
|
||||||
GlobalStates.oskOpen = false;
|
GlobalStates.oskOpen = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unlocking must not leave a keyboard behind.
|
||||||
|
//
|
||||||
|
// Nothing asks for one — the lock module never touches `oskOpen`, and only
|
||||||
|
// polkit takes a hold. squeekboard/stevia self-show whenever input-method
|
||||||
|
// focus lands on them (GlobalStates' own note: "self-showed / self-hid
|
||||||
|
// every couple of seconds, ending in Visible=true with no keyboard in front
|
||||||
|
// of the user"), and the surfaces coming back at unlock are exactly such a
|
||||||
|
// focus change. So this is not a hold to release, it is a keyboard nobody
|
||||||
|
// requested — closed on the unlock edge, the same place the state machine
|
||||||
|
// treats as "the session is yours again".
|
||||||
|
//
|
||||||
|
// `userClose()`, not `oskOpen = false`: it drops holds too, so a stale
|
||||||
|
// polkit hold taken before the lock cannot re-assert the keyboard the
|
||||||
|
// instant this clears.
|
||||||
|
Connections {
|
||||||
|
target: GlobalStates
|
||||||
|
function onScreenLockSecureChanged() {
|
||||||
|
if (!GlobalStates.screenLockSecure && GlobalStates.oskOpen)
|
||||||
|
root.userClose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
IpcHandler {
|
IpcHandler {
|
||||||
target: "osk"
|
target: "osk"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue