diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2011-12-28 01:37:01 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2012-02-18 17:48:51 +0100 |
commit | 77f071b5ff982db296dc58e8a47cfb4fe0358d3e (patch) | |
tree | 563ae64ce935e86b83e6481f18b3ec62dfa354a9 | |
parent | fb35e29a1955c1b975ccd754923e01707cface18 (diff) | |
download | gtk+-77f071b5ff982db296dc58e8a47cfb4fe0358d3e.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 791087cc16..d11518bdfe 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -490,7 +490,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 678dff9278..150c90928c 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -150,7 +150,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 @@ -281,6 +287,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, |