[gnome-shell] keyboard: Handle touch events



commit a84fb99c0aca9fd6eeb83a270c48113133e89de2
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Jul 24 18:24:56 2014 +0200

    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 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index cfce861..3805fb0 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;
     },


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]