From 7ff4f26de8cedcce25a9bd987ade3bfcb17d22e9 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 5 Jan 2012 07:02:51 -0500 Subject: [PATCH] dix: send focus events to the immediate parent (#44079) For a transition from windows A to B, A->parent did not receive an event. DeviceFocusOutEvents sends to windows ]from, to[, so start with the actual window, not it's parent. X.Org Bug 44079 Signed-off-by: Peter Hutterer --- dix/enterleave.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dix/enterleave.c b/dix/enterleave.c index a39e640..2b8c7c5 100644 --- a/dix/enterleave.c +++ b/dix/enterleave.c @@ -1292,7 +1292,7 @@ DeviceFocusEvents(DeviceIntPtr dev, NotifyPointer); DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyNonlinear, from); /* next call catches the root too, if the screen changed */ - DeviceFocusOutEvents(dev, from->parent, NullWindow, mode, + DeviceFocusOutEvents(dev, from, NullWindow, mode, NotifyNonlinearVirtual); } /* Notify all the roots */ @@ -1321,7 +1321,7 @@ DeviceFocusEvents(DeviceIntPtr dev, if (IsParent(to, from)) { DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyAncestor, from); - DeviceFocusOutEvents(dev, from->parent, to, mode, + DeviceFocusOutEvents(dev, from, to, mode, NotifyVirtual); DeviceFocusEvent(dev, XI_FocusIn, mode, NotifyInferior, to); if ((IsParent(to, sprite->win)) && @@ -1353,7 +1353,7 @@ DeviceFocusEvents(DeviceIntPtr dev, NotifyPointer); DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyNonlinear, from); if (from->parent != NullWindow) - DeviceFocusOutEvents(dev, from->parent, common, mode, + DeviceFocusOutEvents(dev, from, common, mode, NotifyNonlinearVirtual); if (to->parent != NullWindow) DeviceFocusInEvents(dev, common, to, mode, NotifyNonlinearVirtual); -- 1.7.7.4