[clutter/clutter-1.18] wayland: Keep track of button modifier state



commit a4440b718d17dccf9a7def882b42bb2f976510e9
Author: Jonas Ådahl <jadahl gmail com>
Date:   Wed Sep 18 21:56:06 2013 +0200

    wayland: Keep track of button modifier state
    
    Keep track of the button modifier mask state in
    ClutterInputDeviceWayland and push its state to new button events going
    out.
    
    Signed-off-by: Jonas Ådahl <jadahl gmail com>
    
    https://bugzilla.gnome.org/show_bug.cgi?id=708781

 clutter/wayland/clutter-input-device-wayland.c |   14 ++++++++++++++
 clutter/wayland/clutter-input-device-wayland.h |    1 +
 2 files changed, 15 insertions(+), 0 deletions(-)
---
diff --git a/clutter/wayland/clutter-input-device-wayland.c b/clutter/wayland/clutter-input-device-wayland.c
index 94a8186..1dc6c7c 100644
--- a/clutter/wayland/clutter-input-device-wayland.c
+++ b/clutter/wayland/clutter-input-device-wayland.c
@@ -107,6 +107,7 @@ clutter_wayland_handle_button (void *data,
   ClutterStageCogl          *stage_cogl;
   ClutterEvent              *event;
   ClutterEventType           type;
+  ClutterModifierType        modifier_mask = 0;
 
   if (!device->pointer_focus)
     return;
@@ -130,15 +131,28 @@ clutter_wayland_handle_button (void *data,
   switch (button) {
   case 272:
     event->button.button = 1;
+    modifier_mask = CLUTTER_BUTTON1_MASK;
     break;
   case 273:
     event->button.button = 3;
+    modifier_mask = CLUTTER_BUTTON2_MASK;
     break;
   case 274:
     event->button.button = 2;
+    modifier_mask = CLUTTER_BUTTON3_MASK;
     break;
   }
 
+  if (modifier_mask)
+    {
+      if (state)
+        device->button_modifier_state |= modifier_mask;
+      else
+        device->button_modifier_state &= ~modifier_mask;
+    }
+
+  event->button.modifier_state = device->button_modifier_state;
+
   _clutter_event_push (event, FALSE);
 }
 
diff --git a/clutter/wayland/clutter-input-device-wayland.h b/clutter/wayland/clutter-input-device-wayland.h
index 22de8b1..d242ac4 100644
--- a/clutter/wayland/clutter-input-device-wayland.h
+++ b/clutter/wayland/clutter-input-device-wayland.h
@@ -53,6 +53,7 @@ struct _ClutterInputDeviceWayland
   guint                   repeat_time;
   guint                   repeat_source;
   gboolean                is_initial_repeat;
+  ClutterModifierType     button_modifier_state;
 };
 
 GType _clutter_input_device_wayland_get_type (void) G_GNUC_CONST;


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