summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2011-12-28 01:37:01 +0100
committerCarlos Garnacho <carlosg@gnome.org>2012-02-18 17:48:51 +0100
commit77f071b5ff982db296dc58e8a47cfb4fe0358d3e (patch)
tree563ae64ce935e86b83e6481f18b3ec62dfa354a9
parentfb35e29a1955c1b975ccd754923e01707cface18 (diff)
downloadgtk+-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.c26
-rw-r--r--gdk/gdkinternals.h12
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,