diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt index 605dbeb3ec..386e2587b2 100644 --- a/docs/reference/gdk/gdk3-sections.txt +++ b/docs/reference/gdk/gdk3-sections.txt @@ -781,11 +781,13 @@ gdk_event_get_root_coords gdk_event_get_scroll_direction gdk_event_get_state gdk_event_get_time +gdk_event_get_touch_id gdk_event_request_motions gdk_events_get_angle gdk_events_get_center gdk_events_get_distance gdk_event_triggers_context_menu +gdk_event_get_touch_id gdk_event_handler_set diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols index 21f1667fc9..5f37e05ea6 100644 --- a/gdk/gdk.symbols +++ b/gdk/gdk.symbols @@ -168,6 +168,7 @@ gdk_event_get_scroll_direction gdk_event_get_source_device gdk_event_get_state gdk_event_get_time +gdk_event_get_touch_id gdk_event_get_type gdk_event_handler_set gdk_event_mask_get_type diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 6aeedfd58c..76e793823b 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -1722,6 +1722,45 @@ gdk_event_get_screen (const GdkEvent *event) return NULL; } +/** + * gdk_event_get_touch_id: + * @event: a #GdkEvent + * @touch_id: return location of the touch ID of a touch event + * + * If @event if of type %GDK_TOUCH_MOTION, %GDK_TOUCH_PRESS or + * %GDK_TOUCH_RELEASE, fills in @touch_id and returns %TRUE, + * else it returns %FALSE. + * + * Returns: %TRUE if the touch ID can be extracted from @event. + **/ +gboolean +gdk_event_get_touch_id (const GdkEvent *event, + guint *touch_id) +{ + if (!event) + return FALSE; + + if (event->type == GDK_TOUCH_MOTION) + { + if (touch_id) + *touch_id = event->motion.touch_id; + return TRUE; + } + else if (event->type == GDK_TOUCH_PRESS || + event->type == GDK_TOUCH_RELEASE) + { + if (touch_id) + *touch_id = event->button.touch_id; + return TRUE; + } + else + { + if (touch_id) + *touch_id = 0; + return FALSE; + } +} + /** * gdk_set_show_events: * @show_events: %TRUE to output event debugging information. diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h index 101ba21698..f9c6817ec6 100644 --- a/gdk/gdkevents.h +++ b/gdk/gdkevents.h @@ -1173,6 +1173,9 @@ void gdk_event_set_screen (GdkEvent *event, GdkScreen *screen); GdkScreen *gdk_event_get_screen (const GdkEvent *event); +gboolean gdk_event_get_touch_id (const GdkEvent *event, + guint *touch_id); + void gdk_set_show_events (gboolean show_events); gboolean gdk_get_show_events (void);