Skip to content
Snippets Groups Projects

dix: do not send focus event when grab actually does not change

Merged Matthieu Herrb requested to merge mherrb/xserver:server-1.20-branch into server-1.20-branch

c67f2eac ("dix: always send focus event on grab change") made dix always sent events when it's a NotifyGrab or NotifyUngrab, even if from == to, because 'from' can just come from a previous XSetInputFocus call.

However, when an application calls XGrabKeyboard several times on the same window, we are now sending spurious FocusOut+FocusIn with NotifyGrab, even if the grab does not actually change. This makes screen readers for blind people spuriously emit activity events which disturb screen reading workflow when e.g. switching between menus.

This commit avoids calling DoFocusEvents in that precise case, i.e. when oldWin is a previous grab and the new grab is the same window.

Signed-off-by: Samuel Thibault samuel.thibault@ens-lyon.org Reviewed-by: Adam Jackson ajax@redhat.com

Edited by Matthieu Herrb

Merge request reports

Pipeline #132407 passed

Pipeline passed for 271934db on mherrb:server-1.20-branch

Approval is optional

Merged by Adam JacksonAdam Jackson 4 years ago (Apr 15, 2020 8:19pm UTC)

Merge details

  • Changes merged into with 271934db.
  • Did not delete the source branch.

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
Please register or sign in to reply
Loading