2007-09-17 Emmanuele Bassi <ebassi@openedhand.com>
authorEmmanuele Bassi <ebassi@openedhand.com>
Mon, 17 Sep 2007 11:34:03 +0000 (11:34 +0000)
committerEmmanuele Bassi <ebassi@openedhand.com>
Mon, 17 Sep 2007 11:34:03 +0000 (11:34 +0000)
Merge from stable

* clutter/eglnative/clutter-event-egl.c:
Flag every device click after the first as motion events
instead of button presses. (#505, Shreyas Srinivasan)

ChangeLog
clutter/eglnative/clutter-event-egl.c

index d044ce4..77732d9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-09-17  Emmanuele Bassi  <ebassi@openedhand.com>
+
+       Merge from stable
+
+       * clutter/eglnative/clutter-event-egl.c:
+       Flag every device click after the first as motion events
+       instead of button presses. (#505, Shreyas Srinivasan)
+
 2007-09-10  Matthew Allum  <mallum@openedhand.com>
 
        Port from stable branch.
index 1f15cae..d36bc67 100644 (file)
@@ -191,11 +191,13 @@ clutter_event_dispatch (GSource     *source,
   struct ts_sample    tsevent;
 #endif
   ClutterMainContext *clutter_context;
-  static gint         last_x, last_y;
+  static gint         last_x = 0, last_y = 0;
+  static gboolean     clicked = FALSE;
 
   clutter_threads_enter ();
 
   clutter_context = clutter_context_get_default ();
+
 #ifdef HAVE_TSLIB
   /* FIXME while would be better here but need to deal with lockups */
   if ((!clutter_events_pending()) && 
@@ -218,10 +220,20 @@ clutter_event_dispatch (GSource     *source,
       event->button.modifier_state = 0;
       event->button.button = 1;
 
-      if (tsevent.pressure) 
-       event->button.type = event->type = CLUTTER_BUTTON_PRESS;
+      if (tsevent.pressure && !clicked)
+        {
+         event->button.type = event->type = CLUTTER_BUTTON_PRESS;
+          clicked = TRUE;
+        }
+      else if (tsevent.pressure && clicked)
+        {
+          event->motion.type = event->type = CLUTTER_MOTION;
+        }
       else
-       event->button.type = event->type = CLUTTER_BUTTON_RELEASE;
+        {
+         event->button.type = event->type = CLUTTER_BUTTON_RELEASE;
+          clicked = FALSE;
+        }
 
       _clutter_event_button_generate (backend, event);