diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2012-01-05 07:02:51 -0500 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-01-06 08:05:16 +1000 |
commit | a125aabda3a5cf27aa98cb61f16e49280b66f451 (patch) | |
tree | fe8705071fc1756436a178bdc0592c2d615b9250 | |
parent | 75953ccb9e9e5f1dbbaa44c714716a0049e22aae (diff) |
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 <http://bugs.freedesktop.org/show_bug.cgi?id=44079>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | dix/enterleave.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/dix/enterleave.c b/dix/enterleave.c index a39e64001..2b8c7c5c3 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); |