mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-26 05:31:07 +00:00
x11: Handle XINotifyPassiveGrab/Ungrab in focus events
The focus handling code is shared between core and XI2 implementations, so just handle the extra XI2 types for passive grabs. Those must be dealt with in the same way than active grabs. Focus events with this crossing mode could happen currently through the XIGrabFocusIn passive grab. https://bugzilla.gnome.org/show_bug.cgi?id=719762
This commit is contained in:
parent
3dbabbd2e5
commit
f6c9a33841
@ -842,6 +842,10 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window,
|
||||
*/
|
||||
if (toplevel->has_pointer &&
|
||||
mode != NotifyGrab &&
|
||||
#ifdef XINPUT_2
|
||||
mode != XINotifyPassiveGrab &&
|
||||
mode != XINotifyPassiveUngrab &&
|
||||
#endif /* XINPUT_2 */
|
||||
mode != NotifyUngrab)
|
||||
toplevel->has_pointer_focus = (focus_in) ? FALSE : TRUE;
|
||||
|
||||
@ -849,6 +853,10 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window,
|
||||
case NotifyNonlinear:
|
||||
case NotifyNonlinearVirtual:
|
||||
if (mode != NotifyGrab &&
|
||||
#ifdef XINPUT_2
|
||||
mode != XINotifyPassiveGrab &&
|
||||
mode != XINotifyPassiveUngrab &&
|
||||
#endif /* XINPUT_2 */
|
||||
mode != NotifyUngrab)
|
||||
toplevel->has_focus_window = (focus_in) ? TRUE : FALSE;
|
||||
/* We pretend that the focus moves to the grab
|
||||
@ -864,6 +872,10 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window,
|
||||
* grab is in effect
|
||||
*/
|
||||
if (mode != NotifyGrab &&
|
||||
#ifdef XINPUT_2
|
||||
mode != XINotifyPassiveGrab &&
|
||||
mode != XINotifyPassiveUngrab &&
|
||||
#endif /* XINPUT_2 */
|
||||
mode != NotifyUngrab)
|
||||
toplevel->has_pointer_focus = (focus_in) ? TRUE : FALSE;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user