Revert "Revert "keyboard: Handle touch events""
And make these only handled on wayland. There's a plethora of issues
around touch passive grab and touch/pointer doubly handling to use
these right away on X11, so we stick to single-touch/pointer there.
This reverts commit 032a688a72
.
https://bugzilla.gnome.org/show_bug.cgi?id=750287
This commit is contained in:
parent
60706f72d4
commit
a7b0910566
@ -114,6 +114,35 @@ const Key = new Lang.Class({
|
|||||||
key.release();
|
key.release();
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}));
|
}));
|
||||||
|
button.connect('touch-event', Lang.bind(this,
|
||||||
|
function (actor, event) {
|
||||||
|
let device = event.get_device();
|
||||||
|
let sequence = event.get_event_sequence();
|
||||||
|
|
||||||
|
// 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 (!this._touchPressed &&
|
||||||
|
event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||||
|
device.sequence_grab(sequence, actor);
|
||||||
|
this._touchPressed = true;
|
||||||
|
key.press();
|
||||||
|
} else if (this._touchPressed &&
|
||||||
|
event.type() == Clutter.EventType.TOUCH_END &&
|
||||||
|
device.sequence_get_grabbed_actor(sequence) == actor) {
|
||||||
|
device.sequence_ungrab(sequence);
|
||||||
|
this._touchPressed = false;
|
||||||
|
key.release();
|
||||||
|
}
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}));
|
||||||
|
|
||||||
return button;
|
return button;
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user