Merge lp://qastaging/~banw/compiz/compiz.a11y-shotcuts into lp://qastaging/compiz/0.9.13

Proposed by Colomban Wendling
Status: Needs review
Proposed branch: lp://qastaging/~banw/compiz/compiz.a11y-shotcuts
Merge into: lp://qastaging/compiz/0.9.13
Diff against target: 1045 lines (+586/-41)
12 files modified
include/core/action.h (+3/-0)
include/core/screen.h (+1/-0)
plugins/ezoom/src/ezoom.cpp (+6/-0)
plugins/neg/src/neg.cpp (+5/-0)
plugins/showmouse/src/showmouse.cpp (+6/-0)
src/action.cpp (+37/-21)
src/event.cpp (+328/-15)
src/eventmanagement.h (+2/-0)
src/privateaction.h (+2/-0)
src/privatescreen.h (+11/-0)
src/screen.cpp (+136/-5)
src/window.cpp (+49/-0)
To merge this branch: bzr merge lp://qastaging/~banw/compiz/compiz.a11y-shotcuts
Reviewer Review Type Date Requested Status
Andrea Azzarone Pending
Review via email: mp+320091@code.qastaging.launchpad.net

Description of the change

This is an attempt at solving https://bugs.launchpad.net/compiz/+bug/1653072

The current state is still WIP, but I'd like general opinion, and specific comments on how to fix some parts.

This uses XI2 Raw events to get mouse and keyboard events during active grabs (menus, etc.). Actions need be configured to use those, so it's opt-in.

I initially tried XI2 "normal" events, which include all possibly useful context, but simply listening to those prevent Core events from being dispatched on the window, so it would require using XI2 *only*, which sounds like a large change -- and even then, grabs might affect these too (on Master Devices?), I'm not 100% sure of how this works.

See the FIXMEs and alike in the code for the area that need attention and possibly a fix.

To post a comment you must log in.
Revision history for this message
Samuel thibault (samuel-thibault) wrote :

Yes, normal XI2 event are very probably affected by grabs, and so AIUI raw events are the only way.

I have commented along the patch. Overall the approach seems sound to me.

Revision history for this message
Samuel thibault (samuel-thibault) wrote :

Checking things again, it seems XI2 normal events are not affected by grabs, or
at least the ones I have tried: inside gtk3 menus and in screen saver

I can confirm that listening to XI2 normal events prevents core events from
being delivered, but that's only for compiz for the windows not created by
compiz, so it's not a problem for other applications. For compiz itself, I don't
think it is a problem that core events are not delivered any more: once XI2 is
enabled, I don't see a reason for doing anything with the core events (on the
contrary, that would lead to duplicates), so their processing could just be
disabled in that case. Was it only needed so as to detect whether grabbing was
enabled or not? That can be detected more easily with FocusIn/Out with mode
NotifyGrab/Ungrab.

I'll try to rework the solution with XI2 normal events only.

Revision history for this message
Samuel thibault (samuel-thibault) wrote :

I have finished reworking it, pushed to https://code.launchpad.net/~samuel-thibault/compiz/shortcuts

Unmerged revisions

4109. By Colomban Wendling

showmouse: Allow actions to be triggered during grabs

4108. By Colomban Wendling

neg: Allow actions to be triggered during grabs

4107. By Colomban Wendling

ezoom: Allow actions to be triggered during grabs

4106. By Colomban Wendling

Initial WIP working attempt at actions ignoring active grabs

This is useful for plugins that should still work e.g. inside menus, or
in the unlock screen. Typically, this includes accessibility-related
plugins.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches