]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkevents.h
GtkWindow: Add gtk_window_has_group()
[~andy/gtk] / gdk / gdkevents.h
index 23231e54233b98e82c9ad5712da487a419c1e4f6..f8f6d1a61a80847b906e5ebeca2702f262147b70 100644 (file)
  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GTK+ Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
  */
 
+#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
+#error "Only <gdk/gdk.h> can be included directly."
+#endif
+
 #ifndef __GDK_EVENTS_H__
 #define __GDK_EVENTS_H__
 
 #include <gdk/gdkcolor.h>
 #include <gdk/gdktypes.h>
 #include <gdk/gdkdnd.h>
-#include <gdk/gdkinput.h>
+#include <gdk/gdkdevice.h>
 
 G_BEGIN_DECLS
 
@@ -68,10 +72,25 @@ typedef void (*GdkEventFunc) (GdkEvent *event,
 
 /* Event filtering */
 
+/**
+ * GdkXEvent:
+ *
+ * Used to represent native events (<type>XEvent</type>s for the X11
+ * backend, <type>MSG</type>s for Win32).
+ */
 typedef void GdkXEvent;          /* Can be cast to window system specific
                           * even type, XEvent on X11, MSG on Win32.
                           */
 
+/**
+ * GdkFilterReturn:
+ * @GDK_FILTER_CONTINUE: event not handled, continue processing.
+ * @GDK_FILTER_TRANSLATE: native event translated into a GDK event and stored
+ *  in the <literal>event</literal> structure that was passed in.
+ * @GDK_FILTER_REMOVE: event handled, terminate processing.
+ *
+ * Specifies the result of applying a #GdkFilterFunc to a native event.
+ */
 typedef enum {
   GDK_FILTER_CONTINUE,   /* Event not handled, continue processesing */
   GDK_FILTER_TRANSLATE,          /* Native event translated into a GDK event and
@@ -80,6 +99,23 @@ typedef enum {
   GDK_FILTER_REMOVE      /* Terminate processing, removing event */
 } GdkFilterReturn;
 
+/**
+ * GdkFilterFunc:
+ * @xevent: the native event to filter.
+ * @event: the GDK event to which the X event will be translated.
+ * @data: user data set when the filter was installed.
+ *
+ * Specifies the type of function used to filter native events before they are
+ * converted to GDK events.
+ *
+ * When a filter is called, @event is unpopulated, except for
+ * <literal>event->window</literal>. The filter may translate the native
+ * event to a GDK event and store the result in @event, or handle it without
+ * translation. If the filter translates the event and processing should
+ * continue, it should return %GDK_FILTER_TRANSLATE.
+ *
+ * Returns: a #GdkFilterReturn value.
+ */
 typedef GdkFilterReturn (*GdkFilterFunc) (GdkXEvent *xevent,
                                          GdkEvent *event,
                                          gpointer  data);
@@ -146,38 +182,11 @@ typedef enum
   GDK_WINDOW_STATE      = 32,
   GDK_SETTING           = 33,
   GDK_OWNER_CHANGE      = 34,
-  GDK_GRAB_BROKEN       = 35
+  GDK_GRAB_BROKEN       = 35,
+  GDK_DAMAGE            = 36,
+  GDK_EVENT_LAST        /* helper variable for decls */
 } GdkEventType;
 
-/* Event masks. (Used to select what types of events a window
- *  will receive).
- */
-typedef enum
-{
-  GDK_EXPOSURE_MASK            = 1 << 1,
-  GDK_POINTER_MOTION_MASK      = 1 << 2,
-  GDK_POINTER_MOTION_HINT_MASK = 1 << 3,
-  GDK_BUTTON_MOTION_MASK       = 1 << 4,
-  GDK_BUTTON1_MOTION_MASK      = 1 << 5,
-  GDK_BUTTON2_MOTION_MASK      = 1 << 6,
-  GDK_BUTTON3_MOTION_MASK      = 1 << 7,
-  GDK_BUTTON_PRESS_MASK                = 1 << 8,
-  GDK_BUTTON_RELEASE_MASK      = 1 << 9,
-  GDK_KEY_PRESS_MASK           = 1 << 10,
-  GDK_KEY_RELEASE_MASK         = 1 << 11,
-  GDK_ENTER_NOTIFY_MASK                = 1 << 12,
-  GDK_LEAVE_NOTIFY_MASK                = 1 << 13,
-  GDK_FOCUS_CHANGE_MASK                = 1 << 14,
-  GDK_STRUCTURE_MASK           = 1 << 15,
-  GDK_PROPERTY_CHANGE_MASK     = 1 << 16,
-  GDK_VISIBILITY_NOTIFY_MASK   = 1 << 17,
-  GDK_PROXIMITY_IN_MASK                = 1 << 18,
-  GDK_PROXIMITY_OUT_MASK       = 1 << 19,
-  GDK_SUBSTRUCTURE_MASK                = 1 << 20,
-  GDK_SCROLL_MASK               = 1 << 21,
-  GDK_ALL_EVENTS_MASK          = 0x3FFFFE
-} GdkEventMask;
-
 typedef enum
 {
   GDK_VISIBILITY_UNOBSCURED,
@@ -220,7 +229,10 @@ typedef enum
 {
   GDK_CROSSING_NORMAL,
   GDK_CROSSING_GRAB,
-  GDK_CROSSING_UNGRAB
+  GDK_CROSSING_UNGRAB,
+  GDK_CROSSING_GTK_GRAB,
+  GDK_CROSSING_GTK_UNGRAB,
+  GDK_CROSSING_STATE_CHANGED
 } GdkCrossingMode;
 
 typedef enum
@@ -342,6 +354,7 @@ struct _GdkEventKey
   gchar *string;
   guint16 hardware_keycode;
   guint8 group;
+  guint is_modifier : 1;
 };
 
 struct _GdkEventCrossing
@@ -509,32 +522,47 @@ gboolean  gdk_events_pending              (void);
 GdkEvent* gdk_event_get                        (void);
 
 GdkEvent* gdk_event_peek                (void);
-GdkEvent* gdk_event_get_graphics_expose (GdkWindow     *window);
-void      gdk_event_put                        (GdkEvent       *event);
+void      gdk_event_put                        (const GdkEvent *event);
 
 GdkEvent* gdk_event_new                 (GdkEventType    type);
-GdkEvent* gdk_event_copy               (GdkEvent       *event);
+GdkEvent* gdk_event_copy               (const GdkEvent *event);
 void     gdk_event_free                (GdkEvent       *event);
 
-guint32   gdk_event_get_time            (GdkEvent        *event);
-gboolean  gdk_event_get_state           (GdkEvent        *event,
+guint32   gdk_event_get_time            (const GdkEvent  *event);
+gboolean  gdk_event_get_state           (const GdkEvent  *event,
                                          GdkModifierType *state);
-gboolean  gdk_event_get_coords         (GdkEvent        *event,
+gboolean  gdk_event_get_coords         (const GdkEvent  *event,
                                         gdouble         *x_win,
                                         gdouble         *y_win);
-gboolean  gdk_event_get_root_coords    (GdkEvent        *event,
+gboolean  gdk_event_get_root_coords    (const GdkEvent  *event,
                                         gdouble         *x_root,
                                         gdouble         *y_root);
-gboolean  gdk_event_get_axis            (GdkEvent        *event,
+gboolean  gdk_event_get_axis            (const GdkEvent  *event,
                                          GdkAxisUse       axis_use,
                                          gdouble         *value);
+void       gdk_event_set_device         (GdkEvent        *event,
+                                         GdkDevice       *device);
+GdkDevice* gdk_event_get_device         (const GdkEvent  *event);
+void      gdk_event_request_motions     (const GdkEventMotion *event);
+
+gboolean  gdk_events_get_distance       (GdkEvent        *event1,
+                                         GdkEvent        *event2,
+                                         gdouble         *distance);
+gboolean  gdk_events_get_angle          (GdkEvent        *event1,
+                                         GdkEvent        *event2,
+                                         gdouble         *angle);
+gboolean  gdk_events_get_center         (GdkEvent        *event1,
+                                         GdkEvent        *event2,
+                                         gdouble         *x,
+                                         gdouble         *y);
+
 void     gdk_event_handler_set         (GdkEventFunc    func,
                                         gpointer        data,
                                         GDestroyNotify  notify);
 
-void       gdk_event_set_screen (GdkEvent  *event,
-                                GdkScreen *screen);
-GdkScreen *gdk_event_get_screen (GdkEvent  *event);
+void       gdk_event_set_screen         (GdkEvent        *event,
+                                         GdkScreen       *screen);
+GdkScreen *gdk_event_get_screen         (const GdkEvent  *event);
 
 void     gdk_set_show_events           (gboolean        show_events);
 gboolean  gdk_get_show_events          (void);