https://bugs.kde.org/show_bug.cgi?id=370676

--- Comment #38 from nyanpasu64 <nyanpas...@tuta.io> ---
I think qtvirtualkeyboard-plugin doesn't so much "fix" kscreenlocker but
workaround the bug. Pressing Tab leaves the entire screen invisible, but once
you move your mouse, the virtual keyboard button (not the password field) is
focused, and typing your password does nothing. I think this is a bug in of
itself.

The bug lies in Qt Quick, where pressing Tab when *all* focusable items have
invisible *parents* hangs the app. Installing the virtual keyboard causes
kscreenlocker to add an extra button which itself becomes invisible while its
parent remains visible
(https://invent.kde.org/plasma/plasma-workspace/-/blob/0d491641f3ea148417283819994228aab6896041/lookandfeel/contents/lockscreen/LockScreenUi.qml#L523-535).
This coincidentally avoids the condition necessary to trigger the Qt Quick hang
bug. The upstream bug reports are:

- I reported https://bugreports.qt.io/browse/QTBUG-96762 (marked as duplicate
of below)
- https://bugreports.qt.io/browse/QTBUG-87190 (unfixed)

Qt Quick has a long history of tab focus bugs:

- https://bugreports.qt.io/browse/QTBUG-81839 (marked as duplicate of below)
- https://bugreports.qt.io/browse/QTBUG-81510 (fixed in 5.14.2 and 5.15.0)
- https://bugreports.qt.io/browse/QTBUG-65943 (unfixed)
- https://bugreports.qt.io/browse/QTBUG-59181 (fixed in 5.12.0)

(And Qt Widgets has scenarios where Tab followed by Shift+Tab doesn't return to
the starting widget, which is less severe than a hang. Tab navigation is hard.)

Idea: When the password entry is hidden, intercept Tab presses and treat it
like moving the mouse (show the lock screen and focus the password field),
rather than letting Qt search for an item to focus. When the password entry is
shown, let Tab switch widgets as usual.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to