Go to file
Samuel Thibault 364d649815 dix: do not send focus event when grab actually does not change
c67f2eac56 ("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>
2018-11-19 13:56:51 -05:00
composite Switch automatic composite update to WorkQueue 2018-10-03 10:28:52 +02:00
config config/udev: Include header <sys/sysmacros.h> to use major/minor 2018-11-14 10:26:48 -05:00
damageext Use ARRAY_SIZE all over the tree 2017-10-30 13:45:20 -04:00
dbe meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
dix dix: do not send focus event when grab actually does not change 2018-11-19 13:56:51 -05:00
doc dix: Remove LegalModifier() 2018-09-28 16:25:17 -04:00
dri3 dri3: Switch fds_from_pixmap to stdint types. 2018-05-08 11:59:41 -04:00
exa exa: Use PictureMatchFormat for source-only picture format description 2018-06-01 11:57:15 +02:00
fb fboverlay: move bpp checks above malloc 2018-09-12 12:26:48 +10:00
glamor glamor: Add support for exporting depth 15/8 pixmaps 2018-10-23 17:00:50 +00:00
glx glx: check for indirect context in CreateContextAttribsARB() 2018-09-10 14:54:23 +00:00
hw xwayland: Move command line fd initialization to InitOutput 2018-11-13 10:06:03 -05:00
include config/udev: Include header <sys/sysmacros.h> to use major/minor 2018-11-14 10:26:48 -05:00
m4 Add ax_pthread.m4 to m4/ 2016-05-29 19:20:51 -07:00
man dix: Remove the magic WhenMapped backing store hack 2018-10-23 18:37:46 +00:00
mi mi: Factor out miSaveScreen 2018-09-28 16:25:01 -04:00
miext miext/damage: take care of the coordinate mode in damagePolyPoint 2018-09-25 21:27:08 -07:00
os os: Establish new connections synchronously not on the work queue 2018-11-13 10:36:40 -05:00
present present: Remove present_event_abandon() 2018-10-25 15:05:12 +00:00
pseudoramiX Unvalidated lengths 2017-10-10 23:33:34 +02:00
randr randr: rrCheckPixmapBounding should only increase screen size 2018-08-24 09:55:48 +02:00
record Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
render animcur: Fix crash when removing a master device 2018-04-24 14:28:27 -04:00
test test: Initialize the pixmap in damage test 2018-09-28 20:02:54 +00:00
Xext shm: Pick the shm dir at run time, not build time. 2018-09-19 21:36:16 +00:00
xfixes xfixes: Restore monitoring of animated cursors 2018-02-14 13:52:45 -05:00
Xi Xi: Use current device active grab to deliver touch events if any 2018-11-12 02:57:10 +00:00
xkb xkb: Write the _XKB_RULES_NAMES window property synchronously 2018-11-13 10:36:18 -05:00
.appveyor.yml appveyor: use meson 2018-03-21 10:16:44 -04:00
.dir-locals.el Add .dir-locals.el 2013-08-17 12:17:36 +02:00
.gitignore .gitignore: Add new autotools file 'test-driver' 2014-04-21 13:41:42 -07:00
.gitlab-ci.yml gitlab: Skip the docker-in-docker step 2018-09-12 20:43:42 +00:00
.travis.yml travis: Drop Xcode 8.2 2018-03-21 12:15:28 -04:00
autogen.sh autogen: Set a default subject prefix for patches 2016-02-08 17:41:38 -05:00
configure.ac shm: Pick the shm dir at run time, not build time. 2018-09-19 21:36:16 +00:00
COPYING modesetting: Merge modesetting's COPYING into the xserver's. 2014-09-15 12:46:02 -07:00
devbook.am doc: Create a script to filter xmlto output 2015-01-05 14:24:06 -08:00
docbook.am docbook.am: embed css styles inside the HTML HEAD element 2011-09-21 14:07:49 -07:00
Makefile.am automake: Fix 'make dist' 2018-03-28 15:11:16 -04:00
manpages.am man: Fix automake seddery 2018-05-08 12:15:30 -04:00
meson_options.txt xorg: Don't log "Build Operating System: Linux 4.9.0-5-amd64 x86_64 Debian" 2018-09-19 13:15:04 -07:00
meson.build meson: Fix building with -Ddga=false 2018-09-06 16:42:04 -04:00
README README: Add link to fd.o CoC 2017-04-11 08:51:34 -04:00
xorg-server.m4 xorg-server.m4: just all cflags instead of just sdkdir 2018-09-20 20:12:24 +01:00
xorg-server.pc.in xfree86: link modules against Xorg symbols on Cygwin 2012-04-05 21:57:07 -05:00
xserver.ent.in doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00

					X Server

The X server accepts requests from client applications to create windows,
which are (normally rectangular) "virtual screens" that the client program
can draw into.

Windows are then composed on the actual screen by the X server
(or by a separate composite manager) as directed by the window manager,
which usually communicates with the user via graphical controls such as buttons
and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the
following article:
https://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the
Xorg mailing list:

        https://lists.freedesktop.org/mailman/listinfo/xorg

Please submit bug reports to the Xorg bugzilla:

        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg

The master development code repository can be found at:

        git://anongit.freedesktop.org/git/xorg/xserver

        https://cgit.freedesktop.org/xorg/xserver

For patch submission instructions, see:

	https://www.x.org/wiki/Development/Documentation/SubmittingPatches

For more information on the git code manager, see:

        https://wiki.x.org/wiki/GitPage

As with other projects hosted on freedesktop.org, X.Org follows its
Code of Conduct, based on the Contributor Covenant. Please conduct
yourself in a respectful and civilized manner when using the above
mailing lists, bug trackers, etc:

	https://www.freedesktop.org/wiki/CodeOfConduct