summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2011-12-28 01:37:01 +0100
committerMatthias Clasen <mclasen@redhat.com>2012-03-01 01:34:02 -0500
commit5b01c7e691c261b29936a94125d3920a77f11fca (patch)
treece23a46dac0eae7072d132e375ab17bbf2de8a8a
parent73fc7c7fe512afc85295db9c6e5c34f5d6b21747 (diff)
downloadgtk+-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.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 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,