summaryrefslogtreecommitdiff
path: root/gdk/gdkevents.h
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>1999-10-01 23:18:30 +0000
committerOwen Taylor <otaylor@src.gnome.org>1999-10-01 23:18:30 +0000
commit637a466d5ca1fbda2acbf5d52779dd5097b5a9e2 (patch)
tree781d1f31b75758b3b9a3d19ce4a7c55349b2ba82 /gdk/gdkevents.h
parent74d88d870aea60625b8f1ed522e86faa223ca487 (diff)
downloadgtk+-637a466d5ca1fbda2acbf5d52779dd5097b5a9e2.tar.gz
Started
Fri Oct 1 18:03:36 1999 Owen Taylor <otaylor@redhat.com> * docs/Changes-1.4.txt: Started * gtk/Makefile.am (gdk_headers): Include all the new headers. * gdk/*.h gdk/*.c: Split gdk.h into lots of itty-bitty little pieces. * gdk/gdkprivate.h gdk/gdkcc.c: Moved GdkColorContext private into C file. * gdkinput.h gdkinputprivate.h - renamed the internal gdkinput header to gdkinputprivate.h. * gdk/gdk.h gdk/gdk.c: Removed gdk_time* functions which have been unused since before 1.2.
Diffstat (limited to 'gdk/gdkevents.h')
-rw-r--r--gdk/gdkevents.h406
1 files changed, 406 insertions, 0 deletions
diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h
new file mode 100644
index 0000000000..607ca82711
--- /dev/null
+++ b/gdk/gdkevents.h
@@ -0,0 +1,406 @@
+#ifndef __GDK_EVENTS_H__
+#define __GDK_EVENTS_H__
+
+#include <gdk/gdktypes.h>
+#include <gdk/gdkdnd.h>
+#include <gdk/gdkinput.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define GDK_PRIORITY_EVENTS (G_PRIORITY_DEFAULT)
+
+typedef struct _GdkEventAny GdkEventAny;
+typedef struct _GdkEventExpose GdkEventExpose;
+typedef struct _GdkEventNoExpose GdkEventNoExpose;
+typedef struct _GdkEventVisibility GdkEventVisibility;
+typedef struct _GdkEventMotion GdkEventMotion;
+typedef struct _GdkEventButton GdkEventButton;
+typedef struct _GdkEventKey GdkEventKey;
+typedef struct _GdkEventFocus GdkEventFocus;
+typedef struct _GdkEventCrossing GdkEventCrossing;
+typedef struct _GdkEventConfigure GdkEventConfigure;
+typedef struct _GdkEventProperty GdkEventProperty;
+typedef struct _GdkEventSelection GdkEventSelection;
+typedef struct _GdkEventProximity GdkEventProximity;
+typedef struct _GdkEventClient GdkEventClient;
+
+typedef struct _GdkEventDND GdkEventDND;
+
+typedef union _GdkEvent GdkEvent;
+
+typedef void (*GdkEventFunc) (GdkEvent *event,
+ gpointer data);
+
+/* Event filtering */
+
+typedef void GdkXEvent; /* Can be cast to XEvent */
+
+typedef enum {
+ GDK_FILTER_CONTINUE, /* Event not handled, continue processesing */
+ GDK_FILTER_TRANSLATE, /* Translated event stored */
+ GDK_FILTER_REMOVE /* Terminate processing, removing event */
+} GdkFilterReturn;
+
+typedef GdkFilterReturn (*GdkFilterFunc) (GdkXEvent *xevent,
+ GdkEvent *event,
+ gpointer data);
+
+
+/* Event types.
+ * Nothing: No event occurred.
+ * Delete: A window delete event was sent by the window manager.
+ * The specified window should be deleted.
+ * Destroy: A window has been destroyed.
+ * Expose: Part of a window has been uncovered.
+ * NoExpose: Same as expose, but no expose event was generated.
+ * VisibilityNotify: A window has become fully/partially/not obscured.
+ * MotionNotify: The mouse has moved.
+ * ButtonPress: A mouse button was pressed.
+ * ButtonRelease: A mouse button was release.
+ * KeyPress: A key was pressed.
+ * KeyRelease: A key was released.
+ * EnterNotify: A window was entered.
+ * LeaveNotify: A window was exited.
+ * FocusChange: The focus window has changed. (The focus window gets
+ * keyboard events).
+ * Resize: A window has been resized.
+ * Map: A window has been mapped. (It is now visible on the screen).
+ * Unmap: A window has been unmapped. (It is no longer visible on
+ * the screen).
+ */
+typedef enum
+{
+ GDK_NOTHING = -1,
+ GDK_DELETE = 0,
+ GDK_DESTROY = 1,
+ GDK_EXPOSE = 2,
+ GDK_MOTION_NOTIFY = 3,
+ GDK_BUTTON_PRESS = 4,
+ GDK_2BUTTON_PRESS = 5,
+ GDK_3BUTTON_PRESS = 6,
+ GDK_BUTTON_RELEASE = 7,
+ GDK_KEY_PRESS = 8,
+ GDK_KEY_RELEASE = 9,
+ GDK_ENTER_NOTIFY = 10,
+ GDK_LEAVE_NOTIFY = 11,
+ GDK_FOCUS_CHANGE = 12,
+ GDK_CONFIGURE = 13,
+ GDK_MAP = 14,
+ GDK_UNMAP = 15,
+ GDK_PROPERTY_NOTIFY = 16,
+ GDK_SELECTION_CLEAR = 17,
+ GDK_SELECTION_REQUEST = 18,
+ GDK_SELECTION_NOTIFY = 19,
+ GDK_PROXIMITY_IN = 20,
+ GDK_PROXIMITY_OUT = 21,
+ GDK_DRAG_ENTER = 22,
+ GDK_DRAG_LEAVE = 23,
+ GDK_DRAG_MOTION = 24,
+ GDK_DRAG_STATUS = 25,
+ GDK_DROP_START = 26,
+ GDK_DROP_FINISHED = 27,
+ GDK_CLIENT_EVENT = 28,
+ GDK_VISIBILITY_NOTIFY = 29,
+ GDK_NO_EXPOSE = 30
+} 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_ALL_EVENTS_MASK = 0x0FFFFF
+} GdkEventMask;
+
+typedef enum {
+ GDK_VISIBILITY_UNOBSCURED,
+ GDK_VISIBILITY_PARTIAL,
+ GDK_VISIBILITY_FULLY_OBSCURED
+} GdkVisibilityState;
+
+/* Types of enter/leave notifications.
+ * Ancestor:
+ * Virtual:
+ * Inferior:
+ * Nonlinear:
+ * NonlinearVirtual:
+ * Unknown: An unknown type of enter/leave event occurred.
+ */
+typedef enum
+{
+ GDK_NOTIFY_ANCESTOR = 0,
+ GDK_NOTIFY_VIRTUAL = 1,
+ GDK_NOTIFY_INFERIOR = 2,
+ GDK_NOTIFY_NONLINEAR = 3,
+ GDK_NOTIFY_NONLINEAR_VIRTUAL = 4,
+ GDK_NOTIFY_UNKNOWN = 5
+} GdkNotifyType;
+
+/* Enter/leave event modes.
+ * NotifyNormal
+ * NotifyGrab
+ * NotifyUngrab
+ */
+typedef enum
+{
+ GDK_CROSSING_NORMAL,
+ GDK_CROSSING_GRAB,
+ GDK_CROSSING_UNGRAB
+} GdkCrossingMode;
+
+typedef enum
+{
+ GDK_PROPERTY_NEW_VALUE,
+ GDK_PROPERTY_DELETE
+} GdkPropertyState;
+
+struct _GdkEventAny
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+};
+
+struct _GdkEventExpose
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkRectangle area;
+ gint count; /* If non-zero, how many more events follow. */
+};
+
+struct _GdkEventNoExpose
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ /* XXX: does anyone need the X major_code or minor_code fields? */
+};
+
+struct _GdkEventVisibility
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkVisibilityState state;
+};
+
+struct _GdkEventMotion
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ guint32 time;
+ gdouble x;
+ gdouble y;
+ gdouble pressure;
+ gdouble xtilt;
+ gdouble ytilt;
+ guint state;
+ gint16 is_hint;
+ GdkInputSource source;
+ guint32 deviceid;
+ gdouble x_root, y_root;
+};
+
+struct _GdkEventButton
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ guint32 time;
+ gdouble x;
+ gdouble y;
+ gdouble pressure;
+ gdouble xtilt;
+ gdouble ytilt;
+ guint state;
+ guint button;
+ GdkInputSource source;
+ guint32 deviceid;
+ gdouble x_root, y_root;
+};
+
+struct _GdkEventKey
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ guint32 time;
+ guint state;
+ guint keyval;
+ gint length;
+ gchar *string;
+};
+
+struct _GdkEventCrossing
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkWindow *subwindow;
+ guint32 time;
+ gdouble x;
+ gdouble y;
+ gdouble x_root;
+ gdouble y_root;
+ GdkCrossingMode mode;
+ GdkNotifyType detail;
+ gboolean focus;
+ guint state;
+};
+
+struct _GdkEventFocus
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ gint16 in;
+};
+
+struct _GdkEventConfigure
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ gint16 x, y;
+ gint16 width;
+ gint16 height;
+};
+
+struct _GdkEventProperty
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkAtom atom;
+ guint32 time;
+ guint state;
+};
+
+struct _GdkEventSelection
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkAtom selection;
+ GdkAtom target;
+ GdkAtom property;
+ guint32 requestor;
+ guint32 time;
+};
+
+/* This event type will be used pretty rarely. It only is important
+ for XInput aware programs that are drawing their own cursor */
+
+struct _GdkEventProximity
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ guint32 time;
+ GdkInputSource source;
+ guint32 deviceid;
+};
+
+struct _GdkEventClient
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkAtom message_type;
+ gushort data_format;
+ union {
+ char b[20];
+ short s[10];
+ long l[5];
+ } data;
+};
+
+/* Event types for DND */
+
+struct _GdkEventDND {
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkDragContext *context;
+
+ guint32 time;
+ gshort x_root, y_root;
+};
+
+union _GdkEvent
+{
+ GdkEventType type;
+ GdkEventAny any;
+ GdkEventExpose expose;
+ GdkEventNoExpose no_expose;
+ GdkEventVisibility visibility;
+ GdkEventMotion motion;
+ GdkEventButton button;
+ GdkEventKey key;
+ GdkEventCrossing crossing;
+ GdkEventFocus focus_change;
+ GdkEventConfigure configure;
+ GdkEventProperty property;
+ GdkEventSelection selection;
+ GdkEventProximity proximity;
+ GdkEventClient client;
+ GdkEventDND dnd;
+};
+
+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);
+
+GdkEvent* gdk_event_copy (GdkEvent *event);
+void gdk_event_free (GdkEvent *event);
+guint32 gdk_event_get_time (GdkEvent *event);
+
+void gdk_event_handler_set (GdkEventFunc func,
+ gpointer data,
+ GDestroyNotify notify);
+
+void gdk_set_show_events (gint show_events);
+gint gdk_get_show_events (void);
+
+/*
+ * The following function adds a global filter for all client
+ * messages of type message_type
+ */
+void gdk_add_client_message_filter (GdkAtom message_type,
+ GdkFilterFunc func,
+ gpointer data);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __GDK_EVENTS_H__ */