1
/* GDK - The GIMP Drawing Kit
2
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2 of the License, or (at your option) any later version.
9
* This library is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with this library; if not, write to the
16
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17
* Boston, MA 02111-1307, USA.
21
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
22
* file for a list of people on the GTK+ Team. See the ChangeLog
23
* files for a list of changes. These files are distributed with
24
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
27
#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
28
#error "Only <gdk/gdk.h> can be included directly."
31
#ifndef __GDK_EVENTS_H__
32
#define __GDK_EVENTS_H__
34
#include <gdk/gdkcolor.h>
35
#include <gdk/gdktypes.h>
36
#include <gdk/gdkdnd.h>
37
#include <gdk/gdkinput.h>
41
#define GDK_TYPE_EVENT (gdk_event_get_type ())
43
#define GDK_PRIORITY_EVENTS (G_PRIORITY_DEFAULT)
44
#define GDK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20)
47
typedef struct _GdkEventAny GdkEventAny;
48
typedef struct _GdkEventExpose GdkEventExpose;
49
typedef struct _GdkEventNoExpose GdkEventNoExpose;
50
typedef struct _GdkEventVisibility GdkEventVisibility;
51
typedef struct _GdkEventMotion GdkEventMotion;
52
typedef struct _GdkEventButton GdkEventButton;
53
typedef struct _GdkEventScroll GdkEventScroll;
54
typedef struct _GdkEventKey GdkEventKey;
55
typedef struct _GdkEventFocus GdkEventFocus;
56
typedef struct _GdkEventCrossing GdkEventCrossing;
57
typedef struct _GdkEventConfigure GdkEventConfigure;
58
typedef struct _GdkEventProperty GdkEventProperty;
59
typedef struct _GdkEventSelection GdkEventSelection;
60
typedef struct _GdkEventOwnerChange GdkEventOwnerChange;
61
typedef struct _GdkEventProximity GdkEventProximity;
62
typedef struct _GdkEventClient GdkEventClient;
63
typedef struct _GdkEventDND GdkEventDND;
64
typedef struct _GdkEventWindowState GdkEventWindowState;
65
typedef struct _GdkEventSetting GdkEventSetting;
66
typedef struct _GdkEventGrabBroken GdkEventGrabBroken;
68
typedef union _GdkEvent GdkEvent;
70
typedef void (*GdkEventFunc) (GdkEvent *event,
75
typedef void GdkXEvent; /* Can be cast to window system specific
76
* even type, XEvent on X11, MSG on Win32.
80
GDK_FILTER_CONTINUE, /* Event not handled, continue processesing */
81
GDK_FILTER_TRANSLATE, /* Native event translated into a GDK event and
82
stored in the "event" structure that was
84
GDK_FILTER_REMOVE /* Terminate processing, removing event */
87
typedef GdkFilterReturn (*GdkFilterFunc) (GdkXEvent *xevent,
93
* Nothing: No event occurred.
94
* Delete: A window delete event was sent by the window manager.
95
* The specified window should be deleted.
96
* Destroy: A window has been destroyed.
97
* Expose: Part of a window has been uncovered.
98
* NoExpose: Same as expose, but no expose event was generated.
99
* VisibilityNotify: A window has become fully/partially/not obscured.
100
* MotionNotify: The mouse has moved.
101
* ButtonPress: A mouse button was pressed.
102
* ButtonRelease: A mouse button was release.
103
* KeyPress: A key was pressed.
104
* KeyRelease: A key was released.
105
* EnterNotify: A window was entered.
106
* LeaveNotify: A window was exited.
107
* FocusChange: The focus window has changed. (The focus window gets
109
* Resize: A window has been resized.
110
* Map: A window has been mapped. (It is now visible on the screen).
111
* Unmap: A window has been unmapped. (It is no longer visible on
113
* Scroll: A mouse wheel was scrolled either up or down.
121
GDK_MOTION_NOTIFY = 3,
122
GDK_BUTTON_PRESS = 4,
123
GDK_2BUTTON_PRESS = 5,
124
GDK_3BUTTON_PRESS = 6,
125
GDK_BUTTON_RELEASE = 7,
128
GDK_ENTER_NOTIFY = 10,
129
GDK_LEAVE_NOTIFY = 11,
130
GDK_FOCUS_CHANGE = 12,
134
GDK_PROPERTY_NOTIFY = 16,
135
GDK_SELECTION_CLEAR = 17,
136
GDK_SELECTION_REQUEST = 18,
137
GDK_SELECTION_NOTIFY = 19,
138
GDK_PROXIMITY_IN = 20,
139
GDK_PROXIMITY_OUT = 21,
142
GDK_DRAG_MOTION = 24,
143
GDK_DRAG_STATUS = 25,
145
GDK_DROP_FINISHED = 27,
146
GDK_CLIENT_EVENT = 28,
147
GDK_VISIBILITY_NOTIFY = 29,
150
GDK_WINDOW_STATE = 32,
152
GDK_OWNER_CHANGE = 34,
153
GDK_GRAB_BROKEN = 35,
155
GDK_EVENT_LAST /* helper variable for decls */
158
/* Event masks. (Used to select what types of events a window
163
GDK_EXPOSURE_MASK = 1 << 1,
164
GDK_POINTER_MOTION_MASK = 1 << 2,
165
GDK_POINTER_MOTION_HINT_MASK = 1 << 3,
166
GDK_BUTTON_MOTION_MASK = 1 << 4,
167
GDK_BUTTON1_MOTION_MASK = 1 << 5,
168
GDK_BUTTON2_MOTION_MASK = 1 << 6,
169
GDK_BUTTON3_MOTION_MASK = 1 << 7,
170
GDK_BUTTON_PRESS_MASK = 1 << 8,
171
GDK_BUTTON_RELEASE_MASK = 1 << 9,
172
GDK_KEY_PRESS_MASK = 1 << 10,
173
GDK_KEY_RELEASE_MASK = 1 << 11,
174
GDK_ENTER_NOTIFY_MASK = 1 << 12,
175
GDK_LEAVE_NOTIFY_MASK = 1 << 13,
176
GDK_FOCUS_CHANGE_MASK = 1 << 14,
177
GDK_STRUCTURE_MASK = 1 << 15,
178
GDK_PROPERTY_CHANGE_MASK = 1 << 16,
179
GDK_VISIBILITY_NOTIFY_MASK = 1 << 17,
180
GDK_PROXIMITY_IN_MASK = 1 << 18,
181
GDK_PROXIMITY_OUT_MASK = 1 << 19,
182
GDK_SUBSTRUCTURE_MASK = 1 << 20,
183
GDK_SCROLL_MASK = 1 << 21,
184
GDK_ALL_EVENTS_MASK = 0x3FFFFE
189
GDK_VISIBILITY_UNOBSCURED,
190
GDK_VISIBILITY_PARTIAL,
191
GDK_VISIBILITY_FULLY_OBSCURED
192
} GdkVisibilityState;
200
} GdkScrollDirection;
202
/* Types of enter/leave notifications.
208
* Unknown: An unknown type of enter/leave event occurred.
212
GDK_NOTIFY_ANCESTOR = 0,
213
GDK_NOTIFY_VIRTUAL = 1,
214
GDK_NOTIFY_INFERIOR = 2,
215
GDK_NOTIFY_NONLINEAR = 3,
216
GDK_NOTIFY_NONLINEAR_VIRTUAL = 4,
217
GDK_NOTIFY_UNKNOWN = 5
220
/* Enter/leave event modes.
230
GDK_CROSSING_GTK_GRAB,
231
GDK_CROSSING_GTK_UNGRAB,
232
GDK_CROSSING_STATE_CHANGED
237
GDK_PROPERTY_NEW_VALUE,
243
GDK_WINDOW_STATE_WITHDRAWN = 1 << 0,
244
GDK_WINDOW_STATE_ICONIFIED = 1 << 1,
245
GDK_WINDOW_STATE_MAXIMIZED = 1 << 2,
246
GDK_WINDOW_STATE_STICKY = 1 << 3,
247
GDK_WINDOW_STATE_FULLSCREEN = 1 << 4,
248
GDK_WINDOW_STATE_ABOVE = 1 << 5,
249
GDK_WINDOW_STATE_BELOW = 1 << 6
254
GDK_SETTING_ACTION_NEW,
255
GDK_SETTING_ACTION_CHANGED,
256
GDK_SETTING_ACTION_DELETED
261
GDK_OWNER_CHANGE_NEW_OWNER,
262
GDK_OWNER_CHANGE_DESTROY,
263
GDK_OWNER_CHANGE_CLOSE
273
struct _GdkEventExpose
280
gint count; /* If non-zero, how many more events follow. */
283
struct _GdkEventNoExpose
290
struct _GdkEventVisibility
295
GdkVisibilityState state;
298
struct _GdkEventMotion
310
gdouble x_root, y_root;
313
struct _GdkEventButton
325
gdouble x_root, y_root;
328
struct _GdkEventScroll
337
GdkScrollDirection direction;
339
gdouble x_root, y_root;
352
guint16 hardware_keycode;
354
guint is_modifier : 1;
357
struct _GdkEventCrossing
362
GdkWindow *subwindow;
368
GdkCrossingMode mode;
369
GdkNotifyType detail;
374
struct _GdkEventFocus
382
struct _GdkEventConfigure
392
struct _GdkEventProperty
402
struct _GdkEventSelection
411
GdkNativeWindow requestor;
414
struct _GdkEventOwnerChange
419
GdkNativeWindow owner;
420
GdkOwnerChange reason;
423
guint32 selection_time;
426
/* This event type will be used pretty rarely. It only is important
427
for XInput aware programs that are drawing their own cursor */
429
struct _GdkEventProximity
438
struct _GdkEventClient
443
GdkAtom message_type;
452
struct _GdkEventSetting
457
GdkSettingAction action;
461
struct _GdkEventWindowState
466
GdkWindowState changed_mask;
467
GdkWindowState new_window_state;
470
struct _GdkEventGrabBroken {
476
GdkWindow *grab_window;
479
/* Event types for DND */
481
struct _GdkEventDND {
485
GdkDragContext *context;
488
gshort x_root, y_root;
495
GdkEventExpose expose;
496
GdkEventNoExpose no_expose;
497
GdkEventVisibility visibility;
498
GdkEventMotion motion;
499
GdkEventButton button;
500
GdkEventScroll scroll;
502
GdkEventCrossing crossing;
503
GdkEventFocus focus_change;
504
GdkEventConfigure configure;
505
GdkEventProperty property;
506
GdkEventSelection selection;
507
GdkEventOwnerChange owner_change;
508
GdkEventProximity proximity;
509
GdkEventClient client;
511
GdkEventWindowState window_state;
512
GdkEventSetting setting;
513
GdkEventGrabBroken grab_broken;
516
GType gdk_event_get_type (void) G_GNUC_CONST;
518
gboolean gdk_events_pending (void);
519
GdkEvent* gdk_event_get (void);
521
GdkEvent* gdk_event_peek (void);
522
#ifndef GDK_DISABLE_DEPRECATED
523
GdkEvent* gdk_event_get_graphics_expose (GdkWindow *window);
525
void gdk_event_put (const GdkEvent *event);
527
GdkEvent* gdk_event_new (GdkEventType type);
528
GdkEvent* gdk_event_copy (const GdkEvent *event);
529
void gdk_event_free (GdkEvent *event);
531
guint32 gdk_event_get_time (const GdkEvent *event);
532
gboolean gdk_event_get_state (const GdkEvent *event,
533
GdkModifierType *state);
534
gboolean gdk_event_get_coords (const GdkEvent *event,
537
gboolean gdk_event_get_root_coords (const GdkEvent *event,
540
gboolean gdk_event_get_axis (const GdkEvent *event,
543
void gdk_event_request_motions (const GdkEventMotion *event);
544
void gdk_event_handler_set (GdkEventFunc func,
546
GDestroyNotify notify);
548
void gdk_event_set_screen (GdkEvent *event,
550
GdkScreen *gdk_event_get_screen (const GdkEvent *event);
552
void gdk_set_show_events (gboolean show_events);
553
gboolean gdk_get_show_events (void);
555
#ifndef GDK_MULTIHEAD_SAFE
556
void gdk_add_client_message_filter (GdkAtom message_type,
560
gboolean gdk_setting_get (const gchar *name,
562
#endif /* GDK_MULTIHEAD_SAFE */
566
#endif /* __GDK_EVENTS_H__ */