]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkevents.h
Merge from stable:
[~andy/gtk] / gdk / gdkevents.h
index 9997fbee2c9d05095a4b10aae682ca21d0205ccd..818bb27465ab24cd6d3be65f378022d2dec22c1a 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef __GDK_EVENTS_H__
 #define __GDK_EVENTS_H__
 
+#include <gdk/gdkcolor.h>
 #include <gdk/gdktypes.h>
 #include <gdk/gdkdnd.h>
 #include <gdk/gdkinput.h>
@@ -9,6 +10,8 @@
 extern "C" {
 #endif /* __cplusplus */
 
+#define GDK_TYPE_EVENT          (gdk_event_get_type ())
+
 #define GDK_PRIORITY_EVENTS    (G_PRIORITY_DEFAULT)
 #define GDK_PRIORITY_REDRAW     (G_PRIORITY_HIGH_IDLE + 20)
 
@@ -28,8 +31,9 @@ typedef struct _GdkEventProperty    GdkEventProperty;
 typedef struct _GdkEventSelection   GdkEventSelection;
 typedef struct _GdkEventProximity   GdkEventProximity;
 typedef struct _GdkEventClient     GdkEventClient;
-
 typedef struct _GdkEventDND         GdkEventDND;
+typedef struct _GdkEventWindowState GdkEventWindowState;
+typedef struct _GdkEventSetting     GdkEventSetting;
 
 typedef union  _GdkEvent           GdkEvent;
 
@@ -38,7 +42,9 @@ typedef void (*GdkEventFunc) (GdkEvent *event,
 
 /* Event filtering */
 
-typedef void GdkXEvent;          /* Can be cast to XEvent */
+typedef void GdkXEvent;          /* Can be cast to window system specific
+                          * even type, XEvent on X11, MSG on Win32.
+                          */
 
 typedef enum {
   GDK_FILTER_CONTINUE,   /* Event not handled, continue processesing */
@@ -108,7 +114,9 @@ typedef enum
   GDK_CLIENT_EVENT     = 28,
   GDK_VISIBILITY_NOTIFY = 29,
   GDK_NO_EXPOSE                = 30,
-  GDK_SCROLL            = 31
+  GDK_SCROLL            = 31,
+  GDK_WINDOW_STATE      = 32,
+  GDK_SETTING           = 33
 } GdkEventType;
 
 /* Event masks. (Used to select what types of events a window
@@ -191,6 +199,22 @@ typedef enum
   GDK_PROPERTY_DELETE
 } GdkPropertyState;
 
+typedef enum
+{
+  GDK_WINDOW_STATE_WITHDRAWN  = 1 << 0,
+  GDK_WINDOW_STATE_ICONIFIED  = 1 << 1,
+  GDK_WINDOW_STATE_MAXIMIZED  = 1 << 2,
+  GDK_WINDOW_STATE_STICKY     = 1 << 3,
+  GDK_WINDOW_STATE_FULLSCREEN = 1 << 4
+} GdkWindowState;
+
+typedef enum
+{
+  GDK_SETTING_ACTION_NEW,
+  GDK_SETTING_ACTION_CHANGED,
+  GDK_SETTING_ACTION_DELETED
+} GdkSettingAction;
+
 struct _GdkEventAny
 {
   GdkEventType type;
@@ -204,6 +228,7 @@ struct _GdkEventExpose
   GdkWindow *window;
   gint8 send_event;
   GdkRectangle area;
+  GdkRegion *region;
   gint count; /* If non-zero, how many more events follow. */
 };
 
@@ -212,7 +237,6 @@ struct _GdkEventNoExpose
   GdkEventType type;
   GdkWindow *window;
   gint8 send_event;
-  /* XXX: does anyone need the X major_code or minor_code fields? */
 };
 
 struct _GdkEventVisibility
@@ -231,13 +255,10 @@ struct _GdkEventMotion
   guint32 time;
   gdouble x;
   gdouble y;
-  gdouble pressure;
-  gdouble xtilt;
-  gdouble ytilt;
+  gdouble *axes;
   guint state;
   gint16 is_hint;
-  GdkInputSource source;
-  guint32 deviceid;
+  GdkDevice *device;
   gdouble x_root, y_root;
 };
 
@@ -249,13 +270,10 @@ struct _GdkEventButton
   guint32 time;
   gdouble x;
   gdouble y;
-  gdouble pressure;
-  gdouble xtilt;
-  gdouble ytilt;
+  gdouble *axes;
   guint state;
   guint button;
-  GdkInputSource source;
-  guint32 deviceid;
+  GdkDevice *device;
   gdouble x_root, y_root;
 };
 
@@ -267,13 +285,9 @@ struct _GdkEventScroll
   guint32 time;
   gdouble x;
   gdouble y;
-  gdouble pressure;
-  gdouble xtilt;
-  gdouble ytilt;
   guint state;
   GdkScrollDirection direction;
-  GdkInputSource source;
-  guint32 deviceid;
+  GdkDevice *device;
   gdouble x_root, y_root;
 };
 
@@ -287,6 +301,8 @@ struct _GdkEventKey
   guint keyval;
   gint length;
   gchar *string;
+  guint16 hardware_keycode;
+  guint8 group;
 };
 
 struct _GdkEventCrossing
@@ -355,8 +371,7 @@ struct _GdkEventProximity
   GdkWindow *window;
   gint8 send_event;
   guint32 time;
-  GdkInputSource source;
-  guint32 deviceid;
+  GdkDevice *device;
 };
 
 struct _GdkEventClient
@@ -373,6 +388,24 @@ struct _GdkEventClient
   } data;
 };
 
+struct _GdkEventSetting
+{
+  GdkEventType type;
+  GdkWindow *window;
+  gint8 send_event;
+  GdkSettingAction action;
+  char *name;
+};
+
+struct _GdkEventWindowState
+{
+  GdkEventType type;
+  GdkWindow *window;
+  gint8 send_event;
+  GdkWindowState changed_mask;
+  GdkWindowState new_window_state;
+};
+
 /* Event types for DND */
 
 struct _GdkEventDND {
@@ -404,8 +437,12 @@ union _GdkEvent
   GdkEventProximity        proximity;
   GdkEventClient           client;
   GdkEventDND               dnd;
+  GdkEventWindowState       window_state;
+  GdkEventSetting           setting;
 };
 
+GType     gdk_event_get_type            (void);
+
 gboolean  gdk_events_pending           (void);
 GdkEvent* gdk_event_get                        (void);
 
@@ -413,25 +450,41 @@ GdkEvent* gdk_event_peek                (void);
 GdkEvent* gdk_event_get_graphics_expose (GdkWindow     *window);
 void      gdk_event_put                        (GdkEvent       *event);
 
+GdkEvent* gdk_event_new                 (GdkEventType    type);
 GdkEvent* gdk_event_copy               (GdkEvent       *event);
 void     gdk_event_free                (GdkEvent       *event);
-guint32   gdk_event_get_time           (GdkEvent       *event);
 
+guint32   gdk_event_get_time            (GdkEvent        *event);
+gboolean  gdk_event_get_state           (GdkEvent        *event,
+                                         GdkModifierType *state);
+gboolean  gdk_event_get_coords         (GdkEvent        *event,
+                                        gdouble         *x_win,
+                                        gdouble         *y_win);
+gboolean  gdk_event_get_root_coords    (GdkEvent        *event,
+                                        gdouble         *x_root,
+                                        gdouble         *y_root);
+gboolean  gdk_event_get_axis            (GdkEvent        *event,
+                                         GdkAxisUse       axis_use,
+                                         gdouble         *value);
 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_set_show_events           (gboolean        show_events);
 gboolean  gdk_get_show_events          (void);
 
-/*
- * The following function adds a global filter for all client
- * messages of type message_type
- */
+#ifndef GDK_MULTIHEAD_SAFE
 void gdk_add_client_message_filter (GdkAtom       message_type,
                                    GdkFilterFunc func,
                                    gpointer      data);
 
+gboolean gdk_setting_get (const gchar *name,
+                         GValue      *value); 
+#endif /* GDK_MULTIHEAD_SAFE */
 
 #ifdef __cplusplus
 }