From e22285eea99f1b1f7419bf9499d414403ac1d8c647f58c565136b00734f63a99 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Tue, 10 Jan 2012 13:16:02 +0000 Subject: [PATCH] - U_dix-send-focus-events-to-the-immediate-parent-44079.patch/ U_dix-on-PointerRootWin-send-a-FocusIn-to-the-sprite-w.patch * fixed very visible bug in XI2 handling exposed by a gtk+ bugfix (bnc #740332, fdo #44079) OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=368 --- ...otWin-send-a-FocusIn-to-the-sprite-w.patch | 32 ++++++++++++ ...events-to-the-immediate-parent-44079.patch | 52 +++++++++++++++++++ xorg-x11-server.changes | 8 +++ xorg-x11-server.spec | 6 ++- 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 U_dix-on-PointerRootWin-send-a-FocusIn-to-the-sprite-w.patch create mode 100644 U_dix-send-focus-events-to-the-immediate-parent-44079.patch diff --git a/U_dix-on-PointerRootWin-send-a-FocusIn-to-the-sprite-w.patch b/U_dix-on-PointerRootWin-send-a-FocusIn-to-the-sprite-w.patch new file mode 100644 index 0000000..083857f --- /dev/null +++ b/U_dix-on-PointerRootWin-send-a-FocusIn-to-the-sprite-w.patch @@ -0,0 +1,32 @@ +From 3ce102c362cadcd7087bdcf48440d9498eaf77d0 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Thu, 5 Jan 2012 07:08:01 -0500 +Subject: [PATCH] dix: on PointerRootWin send a FocusIn to the sprite window + too + +XTS XSetDeviceFocus-7 + +Signed-off-by: Peter Hutterer +Reviewed-by: Chase Douglas +--- + dix/enterleave.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/dix/enterleave.c b/dix/enterleave.c +index 2b8c7c5..89a82ab 100644 +--- a/dix/enterleave.c ++++ b/dix/enterleave.c +@@ -1299,7 +1299,10 @@ DeviceFocusEvents(DeviceIntPtr dev, + for (i = 0; i < nscreens; i++) + DeviceFocusEvent(dev, XI_FocusIn, mode, in, screenInfo.screens[i]->root); + if (to == PointerRootWin) ++ { + DeviceFocusInEvents(dev, GetCurrentRootWindow(dev), sprite->win, mode, NotifyPointer); ++ DeviceFocusEvent(dev, XI_FocusIn, mode, NotifyPointer, sprite->win); ++ } + } + else + { +-- +1.7.7 + diff --git a/U_dix-send-focus-events-to-the-immediate-parent-44079.patch b/U_dix-send-focus-events-to-the-immediate-parent-44079.patch new file mode 100644 index 0000000..dab812f --- /dev/null +++ b/U_dix-send-focus-events-to-the-immediate-parent-44079.patch @@ -0,0 +1,52 @@ +From a125aabda3a5cf27aa98cb61f16e49280b66f451 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 +Reviewed-by: Chase Douglas +Reviewed-by: Keith Packard +--- + 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 + diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index cd596a7..43539f3 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Tue Jan 10 10:33:52 UTC 2012 - sndirsch@suse.com + +- U_dix-send-focus-events-to-the-immediate-parent-44079.patch/ + U_dix-on-PointerRootWin-send-a-FocusIn-to-the-sprite-w.patch + * fixed very visible bug in XI2 handling exposed by a gtk+ + bugfix (bnc #740332, fdo #44079) + ------------------------------------------------------------------- Wed Nov 30 17:18:16 CET 2011 - ro@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index eb5778d..b9e7837 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -1,7 +1,7 @@ # # spec file for package xorg-x11-server # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -95,6 +95,8 @@ Patch220: Use-external-tool-for-creating-backtraces-on-crashes.patch Patch222: sync-fix.patch Patch223: U_Don-t-call-deleted-Block-WakeupHandler.patch Patch224: u_record-fix-sig11.patch +Patch225: U_dix-send-focus-events-to-the-immediate-parent-44079.patch +Patch226: U_dix-on-PointerRootWin-send-a-FocusIn-to-the-sprite-w.patch %description This package contains the X.Org Server. @@ -204,6 +206,8 @@ popd %patch222 -p1 %patch223 -p2 %patch224 -p1 +%patch225 -p1 +%patch226 -p1 %build pushd xorg-docs-*