From a84fb99c0aca9fd6eeb83a270c48113133e89de2 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 24 Jul 2014 18:24:56 +0200 Subject: [PATCH] keyboard: Handle touch events Handle touch events, so that an interacted button locks to a single sequence, but multiple sequences are free to interact with multiple key buttons. https://bugzilla.gnome.org/show_bug.cgi?id=733633 --- js/ui/keyboard.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index cfce86142..3805fb0b7 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -90,6 +90,25 @@ const Key = new Lang.Class({ key.release(); 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(); + + 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; },