diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2011-12-28 01:37:01 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2012-03-01 01:34:02 -0500 |
commit | 5b01c7e691c261b29936a94125d3920a77f11fca (patch) | |
tree | ce23a46dac0eae7072d132e375ab17bbf2de8a8a | |
parent | 73fc7c7fe512afc85295db9c6e5c34f5d6b21747 (diff) | |
download | gtk+-5b01c7e691c261b29936a94125d3920a77f11fca.tar.gz |
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.
-rw-r--r-- | gdk/gdkevents.c | 26 | ||||
-rw-r--r-- | gdk/gdkinternals.h | 12 |
2 files changed, 36 insertions, 2 deletions
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 778ae3acbe..295a63e5e2 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 099a6817c2..1a4466f054 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, |