1 #ifndef __GDK_EVENTS_H__
2 #define __GDK_EVENTS_H__
4 #include <gdk/gdkcolor.h>
5 #include <gdk/gdktypes.h>
6 #include <gdk/gdkdnd.h>
7 #include <gdk/gdkinput.h>
11 #define GDK_TYPE_EVENT (gdk_event_get_type ())
13 #define GDK_PRIORITY_EVENTS (G_PRIORITY_DEFAULT)
14 #define GDK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20)
17 typedef struct _GdkEventAny GdkEventAny;
18 typedef struct _GdkEventExpose GdkEventExpose;
19 typedef struct _GdkEventNoExpose GdkEventNoExpose;
20 typedef struct _GdkEventVisibility GdkEventVisibility;
21 typedef struct _GdkEventMotion GdkEventMotion;
22 typedef struct _GdkEventButton GdkEventButton;
23 typedef struct _GdkEventScroll GdkEventScroll;
24 typedef struct _GdkEventKey GdkEventKey;
25 typedef struct _GdkEventFocus GdkEventFocus;
26 typedef struct _GdkEventCrossing GdkEventCrossing;
27 typedef struct _GdkEventConfigure GdkEventConfigure;
28 typedef struct _GdkEventProperty GdkEventProperty;
29 typedef struct _GdkEventSelection GdkEventSelection;
30 typedef struct _GdkEventOwnerChange GdkEventOwnerChange;
31 typedef struct _GdkEventProximity GdkEventProximity;
32 typedef struct _GdkEventClient GdkEventClient;
33 typedef struct _GdkEventDND GdkEventDND;
34 typedef struct _GdkEventWindowState GdkEventWindowState;
35 typedef struct _GdkEventSetting GdkEventSetting;
36 typedef struct _GdkEventGrabBroken GdkEventGrabBroken;
38 typedef union _GdkEvent GdkEvent;
40 typedef void (*GdkEventFunc) (GdkEvent *event,
45 typedef void GdkXEvent; /* Can be cast to window system specific
46 * even type, XEvent on X11, MSG on Win32.
50 GDK_FILTER_CONTINUE, /* Event not handled, continue processesing */
51 GDK_FILTER_TRANSLATE, /* Native event translated into a GDK event and
52 stored in the "event" structure that was
54 GDK_FILTER_REMOVE /* Terminate processing, removing event */
57 typedef GdkFilterReturn (*GdkFilterFunc) (GdkXEvent *xevent,
63 * Nothing: No event occurred.
64 * Delete: A window delete event was sent by the window manager.
65 * The specified window should be deleted.
66 * Destroy: A window has been destroyed.
67 * Expose: Part of a window has been uncovered.
68 * NoExpose: Same as expose, but no expose event was generated.
69 * VisibilityNotify: A window has become fully/partially/not obscured.
70 * MotionNotify: The mouse has moved.
71 * ButtonPress: A mouse button was pressed.
72 * ButtonRelease: A mouse button was release.
73 * KeyPress: A key was pressed.
74 * KeyRelease: A key was released.
75 * EnterNotify: A window was entered.
76 * LeaveNotify: A window was exited.
77 * FocusChange: The focus window has changed. (The focus window gets
79 * Resize: A window has been resized.
80 * Map: A window has been mapped. (It is now visible on the screen).
81 * Unmap: A window has been unmapped. (It is no longer visible on
83 * Scroll: A mouse wheel was scrolled either up or down.
91 GDK_MOTION_NOTIFY = 3,
93 GDK_2BUTTON_PRESS = 5,
94 GDK_3BUTTON_PRESS = 6,
95 GDK_BUTTON_RELEASE = 7,
98 GDK_ENTER_NOTIFY = 10,
99 GDK_LEAVE_NOTIFY = 11,
100 GDK_FOCUS_CHANGE = 12,
104 GDK_PROPERTY_NOTIFY = 16,
105 GDK_SELECTION_CLEAR = 17,
106 GDK_SELECTION_REQUEST = 18,
107 GDK_SELECTION_NOTIFY = 19,
108 GDK_PROXIMITY_IN = 20,
109 GDK_PROXIMITY_OUT = 21,
112 GDK_DRAG_MOTION = 24,
113 GDK_DRAG_STATUS = 25,
115 GDK_DROP_FINISHED = 27,
116 GDK_CLIENT_EVENT = 28,
117 GDK_VISIBILITY_NOTIFY = 29,
120 GDK_WINDOW_STATE = 32,
122 GDK_OWNER_CHANGE = 34,
126 /* Event masks. (Used to select what types of events a window
131 GDK_EXPOSURE_MASK = 1 << 1,
132 GDK_POINTER_MOTION_MASK = 1 << 2,
133 GDK_POINTER_MOTION_HINT_MASK = 1 << 3,
134 GDK_BUTTON_MOTION_MASK = 1 << 4,
135 GDK_BUTTON1_MOTION_MASK = 1 << 5,
136 GDK_BUTTON2_MOTION_MASK = 1 << 6,
137 GDK_BUTTON3_MOTION_MASK = 1 << 7,
138 GDK_BUTTON_PRESS_MASK = 1 << 8,
139 GDK_BUTTON_RELEASE_MASK = 1 << 9,
140 GDK_KEY_PRESS_MASK = 1 << 10,
141 GDK_KEY_RELEASE_MASK = 1 << 11,
142 GDK_ENTER_NOTIFY_MASK = 1 << 12,
143 GDK_LEAVE_NOTIFY_MASK = 1 << 13,
144 GDK_FOCUS_CHANGE_MASK = 1 << 14,
145 GDK_STRUCTURE_MASK = 1 << 15,
146 GDK_PROPERTY_CHANGE_MASK = 1 << 16,
147 GDK_VISIBILITY_NOTIFY_MASK = 1 << 17,
148 GDK_PROXIMITY_IN_MASK = 1 << 18,
149 GDK_PROXIMITY_OUT_MASK = 1 << 19,
150 GDK_SUBSTRUCTURE_MASK = 1 << 20,
151 GDK_SCROLL_MASK = 1 << 21,
152 GDK_ALL_EVENTS_MASK = 0x3FFFFE
157 GDK_VISIBILITY_UNOBSCURED,
158 GDK_VISIBILITY_PARTIAL,
159 GDK_VISIBILITY_FULLY_OBSCURED
160 } GdkVisibilityState;
168 } GdkScrollDirection;
170 /* Types of enter/leave notifications.
176 * Unknown: An unknown type of enter/leave event occurred.
180 GDK_NOTIFY_ANCESTOR = 0,
181 GDK_NOTIFY_VIRTUAL = 1,
182 GDK_NOTIFY_INFERIOR = 2,
183 GDK_NOTIFY_NONLINEAR = 3,
184 GDK_NOTIFY_NONLINEAR_VIRTUAL = 4,
185 GDK_NOTIFY_UNKNOWN = 5
188 /* Enter/leave event modes.
202 GDK_PROPERTY_NEW_VALUE,
208 GDK_WINDOW_STATE_WITHDRAWN = 1 << 0,
209 GDK_WINDOW_STATE_ICONIFIED = 1 << 1,
210 GDK_WINDOW_STATE_MAXIMIZED = 1 << 2,
211 GDK_WINDOW_STATE_STICKY = 1 << 3,
212 GDK_WINDOW_STATE_FULLSCREEN = 1 << 4,
213 GDK_WINDOW_STATE_ABOVE = 1 << 5,
214 GDK_WINDOW_STATE_BELOW = 1 << 6
219 GDK_SETTING_ACTION_NEW,
220 GDK_SETTING_ACTION_CHANGED,
221 GDK_SETTING_ACTION_DELETED
226 GDK_OWNER_CHANGE_NEW_OWNER,
227 GDK_OWNER_CHANGE_DESTROY,
228 GDK_OWNER_CHANGE_CLOSE
238 struct _GdkEventExpose
245 gint count; /* If non-zero, how many more events follow. */
248 struct _GdkEventNoExpose
255 struct _GdkEventVisibility
260 GdkVisibilityState state;
263 struct _GdkEventMotion
275 gdouble x_root, y_root;
278 struct _GdkEventButton
290 gdouble x_root, y_root;
293 struct _GdkEventScroll
302 GdkScrollDirection direction;
304 gdouble x_root, y_root;
317 guint16 hardware_keycode;
321 struct _GdkEventCrossing
326 GdkWindow *subwindow;
332 GdkCrossingMode mode;
333 GdkNotifyType detail;
338 struct _GdkEventFocus
346 struct _GdkEventConfigure
356 struct _GdkEventProperty
366 struct _GdkEventSelection
375 GdkNativeWindow requestor;
378 struct _GdkEventOwnerChange
383 GdkNativeWindow owner;
384 GdkOwnerChange reason;
387 guint32 selection_time;
390 /* This event type will be used pretty rarely. It only is important
391 for XInput aware programs that are drawing their own cursor */
393 struct _GdkEventProximity
402 struct _GdkEventClient
407 GdkAtom message_type;
416 struct _GdkEventSetting
421 GdkSettingAction action;
425 struct _GdkEventWindowState
430 GdkWindowState changed_mask;
431 GdkWindowState new_window_state;
434 struct _GdkEventGrabBroken {
441 /* Event types for DND */
443 struct _GdkEventDND {
447 GdkDragContext *context;
450 gshort x_root, y_root;
457 GdkEventExpose expose;
458 GdkEventNoExpose no_expose;
459 GdkEventVisibility visibility;
460 GdkEventMotion motion;
461 GdkEventButton button;
462 GdkEventScroll scroll;
464 GdkEventCrossing crossing;
465 GdkEventFocus focus_change;
466 GdkEventConfigure configure;
467 GdkEventProperty property;
468 GdkEventSelection selection;
469 GdkEventOwnerChange owner_change;
470 GdkEventProximity proximity;
471 GdkEventClient client;
473 GdkEventWindowState window_state;
474 GdkEventSetting setting;
475 GdkEventGrabBroken grab_broken;
478 GType gdk_event_get_type (void) G_GNUC_CONST;
480 gboolean gdk_events_pending (void);
481 GdkEvent* gdk_event_get (void);
483 GdkEvent* gdk_event_peek (void);
484 GdkEvent* gdk_event_get_graphics_expose (GdkWindow *window);
485 void gdk_event_put (GdkEvent *event);
487 GdkEvent* gdk_event_new (GdkEventType type);
488 GdkEvent* gdk_event_copy (GdkEvent *event);
489 void gdk_event_free (GdkEvent *event);
491 guint32 gdk_event_get_time (GdkEvent *event);
492 gboolean gdk_event_get_state (GdkEvent *event,
493 GdkModifierType *state);
494 gboolean gdk_event_get_coords (GdkEvent *event,
497 gboolean gdk_event_get_root_coords (GdkEvent *event,
500 gboolean gdk_event_get_axis (GdkEvent *event,
503 void gdk_event_handler_set (GdkEventFunc func,
505 GDestroyNotify notify);
507 void gdk_event_set_screen (GdkEvent *event,
509 GdkScreen *gdk_event_get_screen (GdkEvent *event);
511 void gdk_set_show_events (gboolean show_events);
512 gboolean gdk_get_show_events (void);
514 #ifndef GDK_MULTIHEAD_SAFE
515 void gdk_add_client_message_filter (GdkAtom message_type,
519 gboolean gdk_setting_get (const gchar *name,
521 #endif /* GDK_MULTIHEAD_SAFE */
525 #endif /* __GDK_EVENTS_H__ */