From 843ed09b0954f256225b6aacc631a9131a191981 Mon Sep 17 00:00:00 2001 From: Andrea Azzarone Date: Mon, 4 Mar 2019 16:14:22 +0000 Subject: [PATCH] dnd: Only handle touch events in wayland There are serveral issues around touch passive grab and touch/pointer doubly handling to use these on X11, so we stick to single-touch/pointer there. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1015 --- js/ui/dnd.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/js/ui/dnd.js b/js/ui/dnd.js index 8483e89fc..755c49bb9 100644 --- a/js/ui/dnd.js +++ b/js/ui/dnd.js @@ -132,6 +132,16 @@ var _Draggable = new Lang.Class({ }, _onTouchEvent(actor, event) { + // We only handle touch events here on wayland. On X11 + // we do get emulated pointer events, which already works + // for single-touch cases. Besides, the X11 passive touch grab + // set up by Mutter will make us see first the touch events + // and later the pointer events, so it will look like two + // unrelated series of events, we want to avoid double handling + // in these cases. + if (!Meta.is_wayland_compositor()) + return Clutter.EVENT_PROPAGATE; + if (event.type() != Clutter.EventType.TOUCH_BEGIN || !global.display.is_pointer_emulating_sequence(event.get_event_sequence())) return Clutter.EVENT_PROPAGATE;