From: Carlos Garnacho Date: Wed, 28 Dec 2011 00:37:01 +0000 (+0100) Subject: gdk: Add internal API to set "pointer emulated" flag on events X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=a490d2ebda584fe5145f5031ea7c1f0d2e1ec83b;p=~andy%2Fgtk gdk: Add internal API to set "pointer emulated" flag on events This flag will be used for non-pointer events that are emulated from eg. touch events, or pointer events being emulated. --- diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 778ae3acb..295a63e5e 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -485,7 +485,31 @@ gdk_event_is_allocated (const GdkEvent *event) return FALSE; } - + +void +_gdk_event_set_pointer_emulated (GdkEvent *event, + gboolean emulated) +{ + if (gdk_event_is_allocated (event)) + { + GdkEventPrivate *private = (GdkEventPrivate *) event; + + if (emulated) + private->flags |= GDK_EVENT_POINTER_EMULATED; + else + private->flags &= ~(GDK_EVENT_POINTER_EMULATED); + } +} + +gboolean +_gdk_event_get_pointer_emulated (GdkEvent *event) +{ + if (gdk_event_is_allocated (event)) + return (((GdkEventPrivate *) event)->flags & GDK_EVENT_POINTER_EMULATED) != 0; + + return FALSE; +} + /** * gdk_event_copy: * @event: a #GdkEvent diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index 099a6817c..1a4466f05 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -148,7 +148,13 @@ typedef enum /* Following flag is set for events on the event queue during * translation and cleared afterwards. */ - GDK_EVENT_PENDING = 1 << 0 + GDK_EVENT_PENDING = 1 << 0, + + /* The following flag is set for: + * 1) touch events emulating pointer events + * 2) pointer events being emulated by a touch sequence. + */ + GDK_EVENT_POINTER_EMULATED = 1 << 1 } GdkEventFlags; struct _GdkEventPrivate @@ -273,6 +279,10 @@ GdkEvent* _gdk_event_unqueue (GdkDisplay *display); void _gdk_event_filter_unref (GdkWindow *window, GdkEventFilter *filter); +void _gdk_event_set_pointer_emulated (GdkEvent *event, + gboolean emulated); +gboolean _gdk_event_get_pointer_emulated (GdkEvent *event); + void _gdk_event_emit (GdkEvent *event); GList* _gdk_event_queue_find_first (GdkDisplay *display); void _gdk_event_queue_remove_link (GdkDisplay *display,