#ifndef __GDK_EVENTS_H__
#define __GDK_EVENTS_H__
+#include <gdk/gdkcolor.h>
#include <gdk/gdktypes.h>
#include <gdk/gdkdnd.h>
#include <gdk/gdkinput.h>
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)
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;
/* 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 */
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
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;
GdkWindow *window;
gint8 send_event;
GdkRectangle area;
+ GdkRegion *region;
gint count; /* If non-zero, how many more events follow. */
};
GdkEventType type;
GdkWindow *window;
gint8 send_event;
- /* XXX: does anyone need the X major_code or minor_code fields? */
};
struct _GdkEventVisibility
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;
};
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;
};
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;
};
guint keyval;
gint length;
gchar *string;
+ guint16 hardware_keycode;
+ guint8 group;
};
struct _GdkEventCrossing
GdkWindow *window;
gint8 send_event;
guint32 time;
- GdkInputSource source;
- guint32 deviceid;
+ GdkDevice *device;
};
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 {
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);
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
}