Make QPA think the tabbox is the active window
ClosedPublic

Authored by gladhorn on Nov 4 2018, 4:37 PM.

Details

Summary

Without pretendingn to activate the Window, Qt will not send
the right signals for accessibility, thus screen readers not working.

Diff Detail

Repository
R108 KWin
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
gladhorn created this revision.Nov 4 2018, 4:37 PM
Restricted Application added a project: KWin. · View Herald TranscriptNov 4 2018, 4:37 PM
gladhorn requested review of this revision.Nov 4 2018, 4:37 PM

Would you mind testing if replacing the following also works with Orca?
(sorry, I don't have a setup where I can right now)

QWindowSystemInterface::handleWindowActivated(w)

We ideally don't want to risk changing anything on the X stack there's potential for side effects, and it won't work at all on QtWayland.

I believe this is the important line that your code will be triggering which we can call directly.

graesslin requested changes to this revision.Nov 5 2018, 8:37 AM
graesslin added a subscriber: graesslin.

This is problematic: KWin cannot activate it's own windows and trying to do so is undefined behavior. We need a way to have this working without going into the API which will do X11 stuff as David says.

This revision now requires changes to proceed.Nov 5 2018, 8:37 AM
gladhorn updated this revision to Diff 44923.Nov 5 2018, 5:16 PM
gladhorn retitled this revision from Request activation of the tabbox handler window to Make QPA think the tabbox is the active window.
gladhorn edited the summary of this revision. (Show Details)
gladhorn removed a reviewer: graesslin.

Use qpa api instead of actually requesting the window to be activated.

davidedmundson accepted this revision.Nov 5 2018, 5:19 PM

Awesome, thanks.

This revision is now accepted and ready to land.Nov 5 2018, 5:19 PM

Awesome, thanks.

Thanks for coming up with the idea :) Now it will be just the second part... figuring out a nice way to trick the qml parts to have an active focus around.

This revision was automatically updated to reflect the committed changes.