]> Pileus Git - ~andy/gtk/commitdiff
gdk: Add internal API to set "pointer emulated" flag on events
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 28 Dec 2011 00:37:01 +0000 (01:37 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 1 Mar 2012 21:25:19 +0000 (16:25 -0500)
This flag will be used for non-pointer events that are emulated
from eg. touch events, or pointer events being emulated.

gdk/gdkevents.c
gdk/gdkinternals.h

index 778ae3acbec9d5bb184f6c569e30bfb113bc4a37..295a63e5e2b65a09fecaf1287cb07a273a27e55f 100644 (file)
@@ -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
index 099a6817c22488e9bb97a858f52f815bb285dfa3..1a4466f0547588e94f2856858f21b619ecac693a 100644 (file)
@@ -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,