Types and Values
union GdkEvent
A GdkEvent contains a union of all of the event types,
and allows access to the data fields in a number of ways.
The event type is always the first field in all of the event types, and
can always be accessed with the following code, no matter what type of
event it is:
To access other fields of the event, the pointer to the event
can be cast to the appropriate event type, or the union member
name can be used. For example if the event type is GDK_BUTTON_PRESS
then the x coordinate of the button press can be accessed with:
or:
struct GdkEventAny
struct GdkEventAny {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
};
Contains the fields which are common to all event structs.
Any event pointer can safely be cast to a pointer to a GdkEventAny to
access these fields.
struct GdkEventKey
struct GdkEventKey {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
guint state;
guint keyval;
gint length;
gchar *string;
guint16 hardware_keycode;
guint8 group;
guint is_modifier : 1;
};
Describes a key press or key release event.
struct GdkEventButton
struct GdkEventButton {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
gdouble x;
gdouble y;
gdouble *axes;
guint state;
guint button;
GdkDevice *device;
gdouble x_root, y_root;
};
Used for button press and button release events. The
type
field will be one of GDK_BUTTON_PRESS,
GDK_2BUTTON_PRESS, GDK_3BUTTON_PRESS or GDK_BUTTON_RELEASE,
Double and triple-clicks result in a sequence of events being received.
For double-clicks the order of events will be:
Note that the first click is received just like a normal
button press, while the second click results in a GDK_2BUTTON_PRESS
being received just after the GDK_BUTTON_PRESS.
Triple-clicks are very similar to double-clicks, except that
GDK_3BUTTON_PRESS is inserted after the third click. The order of the
events is:
For a double click to occur, the second button press must occur within
1/4 of a second of the first. For a triple click to occur, the third
button press must also occur within 1/2 second of the first button press.
struct GdkEventTouch
struct GdkEventTouch {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
gdouble x;
gdouble y;
gdouble *axes;
guint state;
GdkEventSequence *sequence;
gboolean emulating_pointer;
GdkDevice *device;
gdouble x_root, y_root;
};
Used for touch events.
type
field will be one of GDK_TOUCH_BEGIN, GDK_TOUCH_UPDATE,
GDK_TOUCH_END or GDK_TOUCH_CANCEL.
Touch events are grouped into sequences by means of the sequence
field, which can also be obtained with gdk_event_get_event_sequence().
Each sequence begins with a GDK_TOUCH_BEGIN event, followed by
any number of GDK_TOUCH_UPDATE events, and ends with a GDK_TOUCH_END
(or GDK_TOUCH_CANCEL) event. With multitouch devices, there may be
several active sequences at the same time.
struct GdkEventScroll
struct GdkEventScroll {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
gdouble x;
gdouble y;
guint state;
GdkScrollDirection direction;
GdkDevice *device;
gdouble x_root, y_root;
gdouble delta_x;
gdouble delta_y;
guint is_stop : 1;
};
Generated from button presses for the buttons 4 to 7. Wheel mice are
usually configured to generate button press events for buttons 4 and 5
when the wheel is turned.
Some GDK backends can also generate “smooth” scroll events, which
can be recognized by the GDK_SCROLL_SMOOTH scroll direction. For
these, the scroll deltas can be obtained with
gdk_event_get_scroll_deltas().
struct GdkEventMotion
struct GdkEventMotion {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
gdouble x;
gdouble y;
gdouble *axes;
guint state;
gint16 is_hint;
GdkDevice *device;
gdouble x_root, y_root;
};
Generated when the pointer moves.
struct GdkEventExpose
struct GdkEventExpose {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkRectangle area;
cairo_region_t *region;
gint count; /* If non-zero, how many more events follow. */
};
Generated when all or part of a window becomes visible and needs to be
redrawn.
struct GdkEventVisibility
struct GdkEventVisibility {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkVisibilityState state;
};
GdkEventVisibility has been deprecated since version 3.12 and should not be used in newly-written code.
Modern composited windowing systems with pervasive
transparency make it impossible to track the visibility of a window
reliably, so this event can not be guaranteed to provide useful
information.
Generated when the window visibility status has changed.
struct GdkEventCrossing
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;
};
Generated when the pointer enters or leaves a window.
struct GdkEventFocus
struct GdkEventFocus {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
gint16 in;
};
Describes a change of keyboard focus.
struct GdkEventConfigure
struct GdkEventConfigure {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
gint x, y;
gint width;
gint height;
};
Generated when a window size or position has changed.
struct GdkEventProperty
struct GdkEventProperty {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkAtom atom;
guint32 time;
guint state;
};
Describes a property change on a window.
struct GdkEventSelection
struct GdkEventSelection {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkAtom selection;
GdkAtom target;
GdkAtom property;
guint32 time;
GdkWindow *requestor;
};
Generated when a selection is requested or ownership of a selection
is taken over by another client application.
struct GdkEventDND
struct GdkEventDND {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkDragContext *context;
guint32 time;
gshort x_root, y_root;
};
Generated during DND operations.
struct GdkEventProximity
struct GdkEventProximity {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
GdkDevice *device;
};
Proximity events are generated when using GDK’s wrapper for the
XInput extension. The XInput extension is an add-on for standard X
that allows you to use nonstandard devices such as graphics tablets.
A proximity event indicates that the stylus has moved in or out of
contact with the tablet, or perhaps that the user’s finger has moved
in or out of contact with a touch screen.
This event type will be used pretty rarely. It only is important for
XInput aware programs that are drawing their own cursor.
struct GdkEventWindowState
struct GdkEventWindowState {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkWindowState changed_mask;
GdkWindowState new_window_state;
};
Generated when the state of a toplevel window changes.
struct GdkEventSetting
struct GdkEventSetting {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkSettingAction action;
char *name;
};
Generated when a setting is modified.
struct GdkEventOwnerChange
struct GdkEventOwnerChange {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkWindow *owner;
GdkOwnerChange reason;
GdkAtom selection;
guint32 time;
guint32 selection_time;
};
Generated when the owner of a selection changes. On X11, this
information is only available if the X server supports the XFIXES
extension.
Since: 2.6
struct GdkEventGrabBroken
struct GdkEventGrabBroken {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
gboolean keyboard;
gboolean implicit;
GdkWindow *grab_window;
};
Generated when a pointer or keyboard grab is broken. On X11, this happens
when the grab window becomes unviewable (i.e. it or one of its ancestors
is unmapped), or if the same application grabs the pointer or keyboard
again. Note that implicit grabs (which are initiated by button presses)
can also cause GdkEventGrabBroken events.
Since: 2.8
struct GdkEventTouchpadSwipe
struct GdkEventTouchpadSwipe {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
gint8 phase;
gint8 n_fingers;
guint32 time;
gdouble x;
gdouble y;
gdouble dx;
gdouble dy;
gdouble x_root, y_root;
guint state;
};
Generated during touchpad swipe gestures.
struct GdkEventTouchpadPinch
struct GdkEventTouchpadPinch {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
gint8 phase;
gint8 n_fingers;
guint32 time;
gdouble x;
gdouble y;
gdouble dx;
gdouble dy;
gdouble angle_delta;
gdouble scale;
gdouble x_root, y_root;
guint state;
};
Generated during touchpad swipe gestures.
struct GdkEventPadButton
struct GdkEventPadButton {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
guint group;
guint button;
guint mode;
};
Generated during GDK_SOURCE_TABLET_PAD button presses and releases.
Since: 3.22
struct GdkEventPadAxis
struct GdkEventPadAxis {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
guint group;
guint index;
guint mode;
gdouble value;
};
Generated during GDK_SOURCE_TABLET_PAD interaction with tactile sensors.
Since: 3.22
struct GdkEventPadGroupMode
struct GdkEventPadGroupMode {
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
guint group;
guint mode;
};
Generated during GDK_SOURCE_TABLET_PAD mode switches in a group.
Since: 3.22
enum GdkVisibilityState
Specifies the visiblity status of a window for a GdkEventVisibility.
enum GdkNotifyType
Specifies the kind of crossing for GdkEventCrossing.
See the X11 protocol specification of LeaveNotify for
full details of crossing event generation.
enum GdkPropertyState
Specifies the type of a property change for a GdkEventProperty.
enum GdkWindowState
Specifies the state of a toplevel window.
enum GdkSettingAction
Specifies the kind of modification applied to a setting in a
GdkEventSetting.
enum GdkOwnerChange
Specifies why a selection ownership was changed.