diff --git a/src/wayland/meta-wayland-seat.c b/src/wayland/meta-wayland-seat.c index bea428555..3e521ae2f 100644 --- a/src/wayland/meta-wayland-seat.c +++ b/src/wayland/meta-wayland-seat.c @@ -435,12 +435,24 @@ meta_wayland_seat_update (MetaWaylandSeat *seat, switch (clutter_event_type (event)) { + case CLUTTER_ENTER: + case CLUTTER_LEAVE: + if (clutter_event_get_event_sequence (event)) + { + if (meta_wayland_seat_has_touch (seat)) + meta_wayland_touch_update (seat->touch, event); + } + else + { + if (meta_wayland_seat_has_pointer (seat)) + meta_wayland_pointer_update (seat->pointer, event); + } + break; + case CLUTTER_MOTION: case CLUTTER_BUTTON_PRESS: case CLUTTER_BUTTON_RELEASE: case CLUTTER_SCROLL: - case CLUTTER_ENTER: - case CLUTTER_LEAVE: if (meta_wayland_seat_has_pointer (seat)) meta_wayland_pointer_update (seat->pointer, event); break; diff --git a/src/wayland/meta-wayland-touch.c b/src/wayland/meta-wayland-touch.c index cfb8fd256..67e92e6b2 100644 --- a/src/wayland/meta-wayland-touch.c +++ b/src/wayland/meta-wayland-touch.c @@ -226,7 +226,7 @@ meta_wayland_touch_update (MetaWaylandTouch *touch, sequence = clutter_event_get_event_sequence (event); event_type = clutter_event_type (event); - if (event_type == CLUTTER_TOUCH_BEGIN) + if (event_type == CLUTTER_ENTER) { MetaWaylandSurface *surface = NULL; MetaBackend *backend; @@ -256,7 +256,8 @@ meta_wayland_touch_update (MetaWaylandTouch *touch, if (!touch_info) return; - if (event_type != CLUTTER_TOUCH_BEGIN && + if ((event_type == CLUTTER_TOUCH_UPDATE || + event_type == CLUTTER_TOUCH_END) && !touch_info->begin_delivered) { g_hash_table_remove (touch->touches, sequence);