gtk2/gdk/x11
Samuel Thibault 01455399e8 gdk: do not deactivate surface on keyboard grabs
When pressing e.g. a window manager shortcut, which acquires keyboard grab,
Xorg would send FocusOut NotifyGrab then FocusIn NotifyUngrab.  Currently
gdk would then deactivate the current surface, which makes accessibility
screen readers think that we have switched to a non-accessible application
and came back again, and thus reannounce the application frame etc. which we
don't want when e.g. just raising volume.

And actually, receiving FocusOut NotifyGrab does not mean losing the
X focus, it only means an application aqcuired a grab, i.e. it is
temporarily stealing keyboard events. On Wayland, this isn't even
notified actually.

This commit makes gdk only deactivate surfaces when there was an actual
focus switch to another window, as determined by has_focus_window (instead
of just has_focus), which happens either normally through FocusOut with
NotifyNormal, or during grabs through FocusOut with NotifyWhileGrabbed.

Fixes #85
2018-04-30 10:57:53 +02:00
..
gdkapplaunchcontext-x11.c Remove gdk_window_add_filter 2018-02-07 15:12:03 -05:00
gdkasync.c Remove gdk_window_add_filter 2018-02-07 15:12:03 -05:00
gdkasync.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkcairocontext-x11.c cairocontext: Remove fallback implementations 2018-04-24 23:24:55 +02:00
gdkcairocontext-x11.h x11: Move implementation of Cairo context backends 2018-04-24 23:16:13 +02:00
gdkclipboard-x11.c Remove gdk_window_add_filter 2018-02-07 15:12:03 -05:00
gdkclipboard-x11.h x11: Refactor code 2017-12-13 00:56:52 +01:00
gdkcursor-x11.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdevice-core-x11.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkdevice-xi2.c Always use #ifdef for G_ENABLE_DEBUG 2018-04-21 19:18:20 +02:00
gdkdevicemanager-core-x11.c gdk: do not deactivate surface on keyboard grabs 2018-04-30 10:57:53 +02:00
gdkdevicemanager-x11.c Remove gdk_window_add_filter 2018-02-07 15:12:03 -05:00
gdkdevicemanager-xi2.c Merge branch 'detect-synaptics-touchpads-v2' into 'master' 2018-03-20 17:03:15 +00:00
gdkdevicemanagerprivate-core.h GdkWindow -> GdkSurface initial type rename 2018-03-20 11:40:08 +01:00
gdkdisplay-x11.c gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
gdkdisplay-x11.h surface: Remove queue_antiexpose() 2018-03-21 00:43:28 +01:00
gdkdnd-x11.c dnd: Make GdkDragContext::device a (construct-only) property 2018-04-27 14:32:28 +02:00
gdkeventsource.c gdk: do not deactivate surface on keyboard grabs 2018-04-30 10:57:53 +02:00
gdkeventsource.h x11: Refactor xevent filtering some more 2017-12-13 01:55:56 +01:00
gdkeventtranslator.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkeventtranslator.h Fix up indentation after GdkSurface rename 2018-03-21 09:06:31 +01:00
gdkglcontext-x11.c drawcontext: Only pass the region that matters 2018-04-24 23:16:58 +02:00
gdkglcontext-x11.h GdkWindow -> GdkSurface: File renames 2018-03-20 11:46:11 +01:00
gdkkeys-x11.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkmain-x11.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkmonitor-x11.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkmonitor-x11.h x11: Port to new monitor api 2016-04-27 23:18:16 -04:00
gdkprivate-x11.h Fix up indentation after GdkSurface rename 2018-03-21 09:06:31 +01:00
gdkproperty-x11.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkscreen-x11.c gdk: Protect against negative GDK_SCALE values 2018-04-10 09:43:47 +02:00
gdkscreen-x11.h Fix up indentation after GdkSurface rename 2018-03-21 09:06:31 +01:00
gdkselection-x11.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkselectioninputstream-x11.c GdkWindow -> GdkSurface: File renames 2018-03-20 11:46:11 +01:00
gdkselectioninputstream-x11.h x11: Improve fallbacks for text 2017-12-03 05:46:46 +01:00
gdkselectionoutputstream-x11.c GdkWindow -> GdkSurface: File renames 2018-03-20 11:46:11 +01:00
gdkselectionoutputstream-x11.h x11: Refactor code 2017-12-13 00:56:52 +01:00
gdksettings.c Stop using settings for modules 2018-02-18 09:41:29 -05:00
gdksurface-x11.c x11: Move implementation of Cairo context backends 2018-04-24 23:16:13 +02:00
gdksurface-x11.h x11: Make the frame clock work in GL and Vulkan 2018-03-30 16:50:28 +02:00
gdktextlistconverter-x11.c Drop gdk_atom_intern 2017-12-13 23:39:03 -05:00
gdktextlistconverter-x11.h x11: Implement claiming the X Selection with the clipboard 2017-12-03 05:46:47 +01:00
gdkvisual-x11.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkvisual-x11.h x11: Drop GdkX11Visual as public api 2017-11-17 13:03:11 -05:00
gdkvulkancontext-x11.c drawcontext: Only pass the region that matters 2018-04-24 23:16:58 +02:00
gdkvulkancontext-x11.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkx11applaunchcontext.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkx11device-core.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkx11device-xi2.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkx11device.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkx11devicemanager-core.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkx11devicemanager-xi2.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkx11devicemanager-xi.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkx11devicemanager.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkx11display.h Fix up indentation after GdkSurface rename 2018-03-21 09:06:31 +01:00
gdkx11dnd.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkx11glcontext.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkx11keys.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkx11monitor.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkx11property.h x11: Get rid of default Atom converters 2017-12-14 13:35:32 +01:00
gdkx11screen.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkx11selection.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkx11surface.h Fix up indentation after GdkSurface rename 2018-03-21 09:06:31 +01:00
gdkx11utils.h x11: Remove gdk_x11_grab_server() 2017-11-02 12:47:50 +01:00
gdkx-autocleanups.h GdkWindow -> GdkSurface initial type rename 2018-03-20 11:40:08 +01:00
gdkx.h GdkWindow -> GdkSurface: File renames 2018-03-20 11:46:11 +01:00
gdkxftdefaults.c x11: Stop using GdkScreen in api 2017-11-17 10:51:55 -05:00
gdkxid.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
meson.build gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
MwmUtil.h Change FSF Address 2012-02-27 17:06:11 +00:00
xsettings-client.c GdkSurface: Rename various functions and variables 2018-03-20 12:05:26 +01:00
xsettings-client.h Remove gdk_window_add_filter 2018-02-07 15:12:03 -05:00