From c67f2eac56518163981af59f5accb7c79bc00f6a Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 9 Apr 2018 14:35:30 +0200 Subject: [PATCH] dix: always send focus event on grab change Focus events are useless when 'from' and 'to' are the same. But when this is the result of a (Un)GrabKeyboard request, we should always send them, including when the window manager had previously used XSetInputFocus to specify the focus on a window which happens to be now taking a grab. This is notably needed for window manager using XI to always get keyboard events even during grabs, so they can determine exactly when grabbing is active. Signed-off-by: Samuel Thibault Reviewed-by: Peter Hutterer --- dix/enterleave.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dix/enterleave.c b/dix/enterleave.c index 1b341f2de..a2f625bc9 100644 --- a/dix/enterleave.c +++ b/dix/enterleave.c @@ -1562,7 +1562,7 @@ DoFocusEvents(DeviceIntPtr pDev, WindowPtr from, WindowPtr to, int mode) if (!IsKeyboardDevice(pDev)) return; - if (from == to) + if (from == to && mode != NotifyGrab && mode != NotifyUngrab) return; CoreFocusEvents(pDev, from, to, mode);