summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-05-22 18:30:09 +0200
committerCarlos Garnacho <carlosg@gnome.org>2015-06-04 21:24:05 +0200
commit0cea6ffca97cb5f1f9ba23685a259088f427ebb5 (patch)
treecdf5db8282271700f8622bef5dda65d3e74ccada
parent896e43cbd5dda3babb829ee59fe5c209e7dfc35e (diff)
downloadclutter-0cea6ffca97cb5f1f9ba23685a259088f427ebb5.tar.gz
event: Add pinch/swipe gesture event types and structs
-rw-r--r--clutter/clutter-enums.h24
-rw-r--r--clutter/clutter-event.c64
-rw-r--r--clutter/clutter-event.h35
-rw-r--r--clutter/clutter-main.c8
4 files changed, 131 insertions, 0 deletions
diff --git a/clutter/clutter-enums.h b/clutter/clutter-enums.h
index 9dd1b66c0..3f31d80aa 100644
--- a/clutter/clutter-enums.h
+++ b/clutter/clutter-enums.h
@@ -757,6 +757,22 @@ typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
* event added in 1.10
* @CLUTTER_TOUCH_CANCEL: A touch event sequence has been canceled;
* event added in 1.10
+ * @CLUTTER_TOUCHPAD_PINCH_BEGIN: A pinch gesture has started; event
+ * added in 1.24
+ * @CLUTTER_TOUCHPAD_PINCH_UPDATE: A pinch gesture has been updated; event
+ * added in 1.24
+ * @CLUTTER_TOUCHPAD_PINCH_END: A pinch gesture has finished; event
+ * added in 1.24
+ * @CLUTTER_TOUCHPAD_PINCH_CANCEL: A pinch gesture was cancelled; event
+ * added in 1.24
+ * @CLUTTER_TOUCHPAD_SWIPE_BEGIN: A swipe gesture has started; event
+ * added in 1.24
+ * @CLUTTER_TOUCHPAD_SWIPE_UPDATE: A swipe gesture has been updated; event
+ * added in 1.24
+ * @CLUTTER_TOUCHPAD_SWIPE_END: A swipe gesture has finished; event
+ * added in 1.24
+ * @CLUTTER_TOUCHPAD_SWIPE_CANCEL: A swipe gesture was cancelled; event
+ * added in 1.24
* @CLUTTER_EVENT_LAST: Marks the end of the #ClutterEventType enumeration;
* added in 1.10
*
@@ -782,6 +798,14 @@ typedef enum { /*< prefix=CLUTTER >*/
CLUTTER_TOUCH_UPDATE,
CLUTTER_TOUCH_END,
CLUTTER_TOUCH_CANCEL,
+ CLUTTER_TOUCHPAD_PINCH_BEGIN,
+ CLUTTER_TOUCHPAD_PINCH_UPDATE,
+ CLUTTER_TOUCHPAD_PINCH_END,
+ CLUTTER_TOUCHPAD_PINCH_CANCEL,
+ CLUTTER_TOUCHPAD_SWIPE_BEGIN,
+ CLUTTER_TOUCHPAD_SWIPE_UPDATE,
+ CLUTTER_TOUCHPAD_SWIPE_END,
+ CLUTTER_TOUCHPAD_SWIPE_CANCEL,
CLUTTER_EVENT_LAST /* helper */
} ClutterEventType;
diff --git a/clutter/clutter-event.c b/clutter/clutter-event.c
index 26d561153..1fcd0e470 100644
--- a/clutter/clutter-event.c
+++ b/clutter/clutter-event.c
@@ -436,6 +436,22 @@ clutter_event_get_position (const ClutterEvent *event,
case CLUTTER_SCROLL:
clutter_point_init (position, event->scroll.x, event->scroll.y);
break;
+
+ case CLUTTER_TOUCHPAD_PINCH_BEGIN:
+ case CLUTTER_TOUCHPAD_PINCH_UPDATE:
+ case CLUTTER_TOUCHPAD_PINCH_END:
+ case CLUTTER_TOUCHPAD_PINCH_CANCEL:
+ clutter_point_init (position, event->touchpad_pinch.x,
+ event->touchpad_pinch.y);
+ break;
+
+ case CLUTTER_TOUCHPAD_SWIPE_BEGIN:
+ case CLUTTER_TOUCHPAD_SWIPE_UPDATE:
+ case CLUTTER_TOUCHPAD_SWIPE_END:
+ case CLUTTER_TOUCHPAD_SWIPE_CANCEL:
+ clutter_point_init (position, event->touchpad_swipe.x,
+ event->touchpad_swipe.y);
+ break;
}
}
@@ -498,6 +514,22 @@ clutter_event_set_coords (ClutterEvent *event,
event->scroll.x = x;
event->scroll.y = y;
break;
+
+ case CLUTTER_TOUCHPAD_PINCH_BEGIN:
+ case CLUTTER_TOUCHPAD_PINCH_UPDATE:
+ case CLUTTER_TOUCHPAD_PINCH_END:
+ case CLUTTER_TOUCHPAD_PINCH_CANCEL:
+ event->touchpad_pinch.x = x;
+ event->touchpad_pinch.y = y;
+ break;
+
+ case CLUTTER_TOUCHPAD_SWIPE_BEGIN:
+ case CLUTTER_TOUCHPAD_SWIPE_UPDATE:
+ case CLUTTER_TOUCHPAD_SWIPE_END:
+ case CLUTTER_TOUCHPAD_SWIPE_CANCEL:
+ event->touchpad_swipe.x = x;
+ event->touchpad_swipe.y = y;
+ break;
}
}
@@ -1097,6 +1129,17 @@ clutter_event_set_device (ClutterEvent *event,
case CLUTTER_KEY_RELEASE:
event->key.device = device;
break;
+
+ case CLUTTER_TOUCHPAD_PINCH_BEGIN:
+ case CLUTTER_TOUCHPAD_PINCH_UPDATE:
+ case CLUTTER_TOUCHPAD_PINCH_END:
+ case CLUTTER_TOUCHPAD_PINCH_CANCEL:
+ case CLUTTER_TOUCHPAD_SWIPE_BEGIN:
+ case CLUTTER_TOUCHPAD_SWIPE_UPDATE:
+ case CLUTTER_TOUCHPAD_SWIPE_END:
+ case CLUTTER_TOUCHPAD_SWIPE_CANCEL:
+ /* FIXME */
+ break;
}
}
@@ -1171,6 +1214,17 @@ clutter_event_get_device (const ClutterEvent *event)
case CLUTTER_KEY_RELEASE:
device = event->key.device;
break;
+
+ case CLUTTER_TOUCHPAD_PINCH_BEGIN:
+ case CLUTTER_TOUCHPAD_PINCH_UPDATE:
+ case CLUTTER_TOUCHPAD_PINCH_END:
+ case CLUTTER_TOUCHPAD_PINCH_CANCEL:
+ case CLUTTER_TOUCHPAD_SWIPE_BEGIN:
+ case CLUTTER_TOUCHPAD_SWIPE_UPDATE:
+ case CLUTTER_TOUCHPAD_SWIPE_END:
+ case CLUTTER_TOUCHPAD_SWIPE_CANCEL:
+ /* FIXME */
+ break;
}
return device;
@@ -1608,6 +1662,16 @@ clutter_event_get_axes (const ClutterEvent *event,
case CLUTTER_MOTION:
retval = event->motion.axes;
break;
+
+ case CLUTTER_TOUCHPAD_PINCH_BEGIN:
+ case CLUTTER_TOUCHPAD_PINCH_UPDATE:
+ case CLUTTER_TOUCHPAD_PINCH_END:
+ case CLUTTER_TOUCHPAD_PINCH_CANCEL:
+ case CLUTTER_TOUCHPAD_SWIPE_BEGIN:
+ case CLUTTER_TOUCHPAD_SWIPE_UPDATE:
+ case CLUTTER_TOUCHPAD_SWIPE_END:
+ case CLUTTER_TOUCHPAD_SWIPE_CANCEL:
+ break;
}
if (retval != NULL)
diff --git a/clutter/clutter-event.h b/clutter/clutter-event.h
index 9e3969349..330e9008f 100644
--- a/clutter/clutter-event.h
+++ b/clutter/clutter-event.h
@@ -115,6 +115,8 @@ typedef struct _ClutterScrollEvent ClutterScrollEvent;
typedef struct _ClutterStageStateEvent ClutterStageStateEvent;
typedef struct _ClutterCrossingEvent ClutterCrossingEvent;
typedef struct _ClutterTouchEvent ClutterTouchEvent;
+typedef struct _ClutterTouchpadPinchEvent ClutterTouchpadPinchEvent;
+typedef struct _ClutterTouchpadSwipeEvent ClutterTouchpadSwipeEvent;
/**
* ClutterAnyEvent:
@@ -384,6 +386,37 @@ struct _ClutterTouchEvent
ClutterInputDevice *device;
};
+struct _ClutterTouchpadPinchEvent
+{
+ ClutterEventType type;
+ guint32 time;
+ ClutterEventFlags flags;
+ ClutterStage *stage;
+ ClutterActor *source;
+
+ gfloat x;
+ gfloat y;
+ gfloat dx;
+ gfloat dy;
+ gfloat angle_delta;
+ gfloat scale;
+};
+
+struct _ClutterTouchpadSwipeEvent
+{
+ ClutterEventType type;
+ guint32 time;
+ ClutterEventFlags flags;
+ ClutterStage *stage;
+ ClutterActor *source;
+
+ guint n_fingers;
+ gfloat x;
+ gfloat y;
+ gfloat dx;
+ gfloat dy;
+};
+
/**
* ClutterEvent:
*
@@ -404,6 +437,8 @@ union _ClutterEvent
ClutterStageStateEvent stage_state;
ClutterCrossingEvent crossing;
ClutterTouchEvent touch;
+ ClutterTouchpadPinchEvent touchpad_pinch;
+ ClutterTouchpadSwipeEvent touchpad_swipe;
};
/**
diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index 5fc12c93d..1346b5758 100644
--- a/clutter/clutter-main.c
+++ b/clutter/clutter-main.c
@@ -2290,6 +2290,14 @@ _clutter_process_event_details (ClutterActor *stage,
case CLUTTER_BUTTON_PRESS:
case CLUTTER_BUTTON_RELEASE:
case CLUTTER_SCROLL:
+ case CLUTTER_TOUCHPAD_PINCH_BEGIN:
+ case CLUTTER_TOUCHPAD_PINCH_UPDATE:
+ case CLUTTER_TOUCHPAD_PINCH_END:
+ case CLUTTER_TOUCHPAD_PINCH_CANCEL:
+ case CLUTTER_TOUCHPAD_SWIPE_BEGIN:
+ case CLUTTER_TOUCHPAD_SWIPE_UPDATE:
+ case CLUTTER_TOUCHPAD_SWIPE_END:
+ case CLUTTER_TOUCHPAD_SWIPE_CANCEL:
{
ClutterActor *actor;
gfloat x, y;