diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2015-01-19 21:12:26 -0800 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2015-01-19 21:56:32 -0800 |
commit | 7e7c8ecbd404858a144b21e087208061d0bb1907 (patch) | |
tree | 1cf0487eabb78113f62d9dacd9f4d786e0e2a65d /src/backends/x11/meta-backend-x11.c | |
parent | d561b3b18f73a66bcd7947dce7ab1aab9e09965a (diff) | |
download | mutter-7e7c8ecbd404858a144b21e087208061d0bb1907.tar.gz |
backend-x11: Also spoof Enter/Leave notifies as well
So that we track when the user enters/exits the frame window
appropriately. This fixes a rogue cursor appearing when the window
doesn't define one.
Diffstat (limited to 'src/backends/x11/meta-backend-x11.c')
-rw-r--r-- | src/backends/x11/meta-backend-x11.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c index 8705a3d1d..cc94e3ecc 100644 --- a/src/backends/x11/meta-backend-x11.c +++ b/src/backends/x11/meta-backend-x11.c @@ -129,6 +129,21 @@ translate_device_event (MetaBackendX11 *x11, } } +static void +translate_crossing_event (MetaBackendX11 *x11, + XIEnterEvent *enter_event) +{ + /* Throw out weird events generated by grabs. */ + if (enter_event->mode == XINotifyGrab || + enter_event->mode == XINotifyUngrab) + { + enter_event->event = None; + return; + } + + enter_event->event = meta_backend_x11_get_xwindow (x11); +} + /* Clutter makes the assumption that there is only one X window * per stage, which is a valid assumption to make for a generic * application toolkit. As such, it will ignore any events sent @@ -161,6 +176,10 @@ maybe_spoof_event_as_stage_event (MetaBackendX11 *x11, case XI_TouchEnd: translate_device_event (x11, (XIDeviceEvent *) input_event); break; + case XI_Enter: + case XI_Leave: + translate_crossing_event (x11, (XIEnterEvent *) input_event); + break; default: break; } |