/* GDK - The GIMP Drawing Kit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ /* * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog * files for a list of changes. These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #ifndef __GDK_EVENTS_H__ #define __GDK_EVENTS_H__ #if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION) #error "Only can be included directly." #endif #include #include #include #include #include G_BEGIN_DECLS /** * SECTION:event_structs * @Short_description: Data structures specific to each type of event * @Title: Event Structures * * The event structures contain data specific to each type of event in GDK. * * > A common mistake is to forget to set the event mask of a widget so that * > the required events are received. */ #define GDK_TYPE_EVENT (gdk_event_get_type ()) #define GDK_TYPE_EVENT_SEQUENCE (gdk_event_sequence_get_type ()) #define GDK_EVENT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_EVENT, GdkEvent)) #define GDK_IS_EVENT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_EVENT)) /** * GDK_PRIORITY_EVENTS: * * This is the priority that events from the X server are given in the * [GLib Main Loop][glib-The-Main-Event-Loop]. */ #define GDK_PRIORITY_EVENTS (G_PRIORITY_DEFAULT) /** * GDK_PRIORITY_REDRAW: * * This is the priority that the idle handler processing window updates * is given in the * [GLib Main Loop][glib-The-Main-Event-Loop]. */ #define GDK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20) /** * GDK_EVENT_PROPAGATE: * * Use this macro as the return value for continuing the propagation of * an event handler. * * Since: 3.4 */ #define GDK_EVENT_PROPAGATE (FALSE) /** * GDK_EVENT_STOP: * * Use this macro as the return value for stopping the propagation of * an event handler. * * Since: 3.4 */ #define GDK_EVENT_STOP (TRUE) /** * GDK_BUTTON_PRIMARY: * * The primary button. This is typically the left mouse button, or the * right button in a left-handed setup. * * Since: 3.4 */ #define GDK_BUTTON_PRIMARY (1) /** * GDK_BUTTON_MIDDLE: * * The middle button. * * Since: 3.4 */ #define GDK_BUTTON_MIDDLE (2) /** * GDK_BUTTON_SECONDARY: * * The secondary button. This is typically the right mouse button, or the * left button in a left-handed setup. * * Since: 3.4 */ #define GDK_BUTTON_SECONDARY (3) typedef struct _GdkEventAny GdkEventAny; typedef struct _GdkEventExpose GdkEventExpose; typedef struct _GdkEventMotion GdkEventMotion; typedef struct _GdkEventButton GdkEventButton; typedef struct _GdkEventTouch GdkEventTouch; typedef struct _GdkEventScroll GdkEventScroll; typedef struct _GdkEventKey GdkEventKey; typedef struct _GdkEventFocus GdkEventFocus; typedef struct _GdkEventCrossing GdkEventCrossing; typedef struct _GdkEventConfigure GdkEventConfigure; typedef struct _GdkEventProximity GdkEventProximity; typedef struct _GdkEventDND GdkEventDND; typedef struct _GdkEventSetting GdkEventSetting; typedef struct _GdkEventGrabBroken GdkEventGrabBroken; typedef struct _GdkEventTouchpadSwipe GdkEventTouchpadSwipe; typedef struct _GdkEventTouchpadPinch GdkEventTouchpadPinch; typedef struct _GdkEventPadButton GdkEventPadButton; typedef struct _GdkEventPadAxis GdkEventPadAxis; typedef struct _GdkEventPadGroupMode GdkEventPadGroupMode; typedef struct _GdkEventSequence GdkEventSequence; typedef union _GdkEvent GdkEvent; /** * GdkEventFunc: * @event: the #GdkEvent to process. * @data: (closure): user data set when the event handler was installed with * gdk_event_handler_set(). * * Specifies the type of function passed to gdk_event_handler_set() to * handle all GDK events. */ typedef void (*GdkEventFunc) (GdkEvent *event, gpointer data); /* Event filtering */ /** * GdkXEvent: * * Used to represent native events (XEvents for the X11 * backend, MSGs for Win32). */ typedef void GdkXEvent; /* Can be cast to window system specific * even type, XEvent on X11, MSG on Win32. */ /** * GdkFilterReturn: * @GDK_FILTER_CONTINUE: event not handled, continue processing. * @GDK_FILTER_TRANSLATE: native event translated into a GDK event and stored * in the `event` structure that was passed in. * @GDK_FILTER_REMOVE: event handled, terminate processing. * * Specifies the result of applying a #GdkFilterFunc to a native event. */ typedef enum { GDK_FILTER_CONTINUE, /* Event not handled, continue processesing */ GDK_FILTER_TRANSLATE, /* Native event translated into a GDK event and stored in the "event" structure that was passed in */ GDK_FILTER_REMOVE /* Terminate processing, removing event */ } GdkFilterReturn; /** * GdkFilterFunc: * @xevent: the native event to filter. * @event: the GDK event to which the X event will be translated. * @data: (closure): user data set when the filter was installed. * * Specifies the type of function used to filter native events before they are * converted to GDK events. * * When a filter is called, @event is unpopulated, except for * `event->window`. The filter may translate the native * event to a GDK event and store the result in @event, or handle it without * translation. If the filter translates the event and processing should * continue, it should return %GDK_FILTER_TRANSLATE. * * Returns: a #GdkFilterReturn value. */ typedef GdkFilterReturn (*GdkFilterFunc) (GdkXEvent *xevent, GdkEvent *event, gpointer data); /** * GdkEventType: * @GDK_NOTHING: a special code to indicate a null event. * @GDK_DELETE: the window manager has requested that the toplevel window be * hidden or destroyed, usually when the user clicks on a special icon in the * title bar. * @GDK_DESTROY: the window has been destroyed. * @GDK_EXPOSE: all or part of the window has become visible and needs to be * redrawn. * @GDK_MOTION_NOTIFY: the pointer (usually a mouse) has moved. * @GDK_BUTTON_PRESS: a mouse button has been pressed. * @GDK_BUTTON_RELEASE: a mouse button has been released. * @GDK_KEY_PRESS: a key has been pressed. * @GDK_KEY_RELEASE: a key has been released. * @GDK_ENTER_NOTIFY: the pointer has entered the window. * @GDK_LEAVE_NOTIFY: the pointer has left the window. * @GDK_FOCUS_CHANGE: the keyboard focus has entered or left the window. * @GDK_CONFIGURE: the size, position or stacking order of the window has changed. * Note that GTK+ discards these events for %GDK_WINDOW_CHILD windows. * @GDK_MAP: the window has been mapped. * @GDK_UNMAP: the window has been unmapped. * @GDK_PROXIMITY_IN: an input device has moved into contact with a sensing * surface (e.g. a touchscreen or graphics tablet). * @GDK_PROXIMITY_OUT: an input device has moved out of contact with a sensing * surface. * @GDK_DRAG_ENTER: the mouse has entered the window while a drag is in progress. * @GDK_DRAG_LEAVE: the mouse has left the window while a drag is in progress. * @GDK_DRAG_MOTION: the mouse has moved in the window while a drag is in * progress. * @GDK_DRAG_STATUS: the status of the drag operation initiated by the window * has changed. * @GDK_DROP_START: a drop operation onto the window has started. * @GDK_DROP_FINISHED: the drop operation initiated by the window has completed. * @GDK_SCROLL: the scroll wheel was turned * @GDK_GRAB_BROKEN: a pointer or keyboard grab was broken. This event type * was added in 2.8. * @GDK_TOUCH_BEGIN: A new touch event sequence has just started. This event * type was added in 3.4. * @GDK_TOUCH_UPDATE: A touch event sequence has been updated. This event type * was added in 3.4. * @GDK_TOUCH_END: A touch event sequence has finished. This event type * was added in 3.4. * @GDK_TOUCH_CANCEL: A touch event sequence has been canceled. This event type * was added in 3.4. * @GDK_TOUCHPAD_SWIPE: A touchpad swipe gesture event, the current state * is determined by its phase field. This event type was added in 3.18. * @GDK_TOUCHPAD_PINCH: A touchpad pinch gesture event, the current state * is determined by its phase field. This event type was added in 3.18. * @GDK_PAD_BUTTON_PRESS: A tablet pad button press event. This event type * was added in 3.22. * @GDK_PAD_BUTTON_RELEASE: A tablet pad button release event. This event type * was added in 3.22. * @GDK_PAD_RING: A tablet pad axis event from a "ring". This event type was * added in 3.22. * @GDK_PAD_STRIP: A tablet pad axis event from a "strip". This event type was * added in 3.22. * @GDK_PAD_GROUP_MODE: A tablet pad group mode change. This event type was * added in 3.22. * @GDK_EVENT_LAST: marks the end of the GdkEventType enumeration. Added in 2.18 * * Specifies the type of the event. * * Do not confuse these events with the signals that GTK+ widgets emit. * Although many of these events result in corresponding signals being emitted, * the events are often transformed or filtered along the way. */ typedef enum { GDK_NOTHING, GDK_DELETE, GDK_DESTROY, GDK_EXPOSE, GDK_MOTION_NOTIFY, GDK_BUTTON_PRESS, GDK_BUTTON_RELEASE, GDK_KEY_PRESS, GDK_KEY_RELEASE, GDK_ENTER_NOTIFY, GDK_LEAVE_NOTIFY, GDK_FOCUS_CHANGE, GDK_CONFIGURE, GDK_MAP, GDK_UNMAP, GDK_PROXIMITY_IN, GDK_PROXIMITY_OUT, GDK_DRAG_ENTER, GDK_DRAG_LEAVE, GDK_DRAG_MOTION, GDK_DRAG_STATUS, GDK_DROP_START, GDK_DROP_FINISHED, GDK_SCROLL, GDK_GRAB_BROKEN, GDK_TOUCH_BEGIN, GDK_TOUCH_UPDATE, GDK_TOUCH_END, GDK_TOUCH_CANCEL, GDK_TOUCHPAD_SWIPE, GDK_TOUCHPAD_PINCH, GDK_PAD_BUTTON_PRESS, GDK_PAD_BUTTON_RELEASE, GDK_PAD_RING, GDK_PAD_STRIP, GDK_PAD_GROUP_MODE, GDK_EVENT_LAST /* helper variable for decls */ } GdkEventType; /** * GdkTouchpadGesturePhase: * @GDK_TOUCHPAD_GESTURE_PHASE_BEGIN: The gesture has begun. * @GDK_TOUCHPAD_GESTURE_PHASE_UPDATE: The gesture has been updated. * @GDK_TOUCHPAD_GESTURE_PHASE_END: The gesture was finished, changes * should be permanently applied. * @GDK_TOUCHPAD_GESTURE_PHASE_CANCEL: The gesture was cancelled, all * changes should be undone. * * Specifies the current state of a touchpad gesture. All gestures are * guaranteed to begin with an event with phase %GDK_TOUCHPAD_GESTURE_PHASE_BEGIN, * followed by 0 or several events with phase %GDK_TOUCHPAD_GESTURE_PHASE_UPDATE. * * A finished gesture may have 2 possible outcomes, an event with phase * %GDK_TOUCHPAD_GESTURE_PHASE_END will be emitted when the gesture is * considered successful, this should be used as the hint to perform any * permanent changes. * Cancelled gestures may be so for a variety of reasons, due to hardware * or the compositor, or due to the gesture recognition layers hinting the * gesture did not finish resolutely (eg. a 3rd finger being added during * a pinch gesture). In these cases, the last event will report the phase * %GDK_TOUCHPAD_GESTURE_PHASE_CANCEL, this should be used as a hint * to undo any visible/permanent changes that were done throughout the * progress of the gesture. * * See also #GdkEventTouchpadSwipe and #GdkEventTouchpadPinch. * */ typedef enum { GDK_TOUCHPAD_GESTURE_PHASE_BEGIN, GDK_TOUCHPAD_GESTURE_PHASE_UPDATE, GDK_TOUCHPAD_GESTURE_PHASE_END, GDK_TOUCHPAD_GESTURE_PHASE_CANCEL } GdkTouchpadGesturePhase; /** * GdkScrollDirection: * @GDK_SCROLL_UP: the window is scrolled up. * @GDK_SCROLL_DOWN: the window is scrolled down. * @GDK_SCROLL_LEFT: the window is scrolled to the left. * @GDK_SCROLL_RIGHT: the window is scrolled to the right. * @GDK_SCROLL_SMOOTH: the scrolling is determined by the delta values * in #GdkEventScroll. See gdk_event_get_scroll_deltas(). Since: 3.4 * * Specifies the direction for #GdkEventScroll. */ typedef enum { GDK_SCROLL_UP, GDK_SCROLL_DOWN, GDK_SCROLL_LEFT, GDK_SCROLL_RIGHT, GDK_SCROLL_SMOOTH } GdkScrollDirection; /** * GdkNotifyType: * @GDK_NOTIFY_ANCESTOR: the window is entered from an ancestor or * left towards an ancestor. * @GDK_NOTIFY_VIRTUAL: the pointer moves between an ancestor and an * inferior of the window. * @GDK_NOTIFY_INFERIOR: the window is entered from an inferior or * left towards an inferior. * @GDK_NOTIFY_NONLINEAR: the window is entered from or left towards * a window which is neither an ancestor nor an inferior. * @GDK_NOTIFY_NONLINEAR_VIRTUAL: the pointer moves between two windows * which are not ancestors of each other and the window is part of * the ancestor chain between one of these windows and their least * common ancestor. * @GDK_NOTIFY_UNKNOWN: an unknown type of enter/leave event occurred. * * Specifies the kind of crossing for #GdkEventCrossing. * * See the X11 protocol specification of LeaveNotify for * full details of crossing event generation. */ 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; /** * GdkCrossingMode: * @GDK_CROSSING_NORMAL: crossing because of pointer motion. * @GDK_CROSSING_GRAB: crossing because a grab is activated. * @GDK_CROSSING_UNGRAB: crossing because a grab is deactivated. * @GDK_CROSSING_GTK_GRAB: crossing because a GTK+ grab is activated. * @GDK_CROSSING_GTK_UNGRAB: crossing because a GTK+ grab is deactivated. * @GDK_CROSSING_STATE_CHANGED: crossing because a GTK+ widget changed * state (e.g. sensitivity). * @GDK_CROSSING_TOUCH_BEGIN: crossing because a touch sequence has begun, * this event is synthetic as the pointer might have not left the window. * @GDK_CROSSING_TOUCH_END: crossing because a touch sequence has ended, * this event is synthetic as the pointer might have not left the window. * @GDK_CROSSING_DEVICE_SWITCH: crossing because of a device switch (i.e. * a mouse taking control of the pointer after a touch device), this event * is synthetic as the pointer didn’t leave the window. * * Specifies the crossing mode for #GdkEventCrossing. */ typedef enum { GDK_CROSSING_NORMAL, GDK_CROSSING_GRAB, GDK_CROSSING_UNGRAB, GDK_CROSSING_GTK_GRAB, GDK_CROSSING_GTK_UNGRAB, GDK_CROSSING_STATE_CHANGED, GDK_CROSSING_TOUCH_BEGIN, GDK_CROSSING_TOUCH_END, GDK_CROSSING_DEVICE_SWITCH } GdkCrossingMode; /** * GdkWindowState: * @GDK_WINDOW_STATE_WITHDRAWN: the window is not shown. * @GDK_WINDOW_STATE_ICONIFIED: the window is minimized. * @GDK_WINDOW_STATE_MAXIMIZED: the window is maximized. * @GDK_WINDOW_STATE_STICKY: the window is sticky. * @GDK_WINDOW_STATE_FULLSCREEN: the window is maximized without * decorations. * @GDK_WINDOW_STATE_ABOVE: the window is kept above other windows. * @GDK_WINDOW_STATE_BELOW: the window is kept below other windows. * @GDK_WINDOW_STATE_FOCUSED: the window is presented as focused (with active decorations). * @GDK_WINDOW_STATE_TILED: the window is in a tiled state, Since 3.10. Since 3.91.2, this * is deprecated in favor of per-edge information. * @GDK_WINDOW_STATE_TOP_TILED: whether the top edge is tiled, Since 3.91.2 * @GDK_WINDOW_STATE_TOP_RESIZABLE: whether the top edge is resizable, Since 3.91.2 * @GDK_WINDOW_STATE_RIGHT_TILED: whether the right edge is tiled, Since 3.91.2 * @GDK_WINDOW_STATE_RIGHT_RESIZABLE: whether the right edge is resizable, Since 3.91.2 * @GDK_WINDOW_STATE_BOTTOM_TILED: whether the bottom edge is tiled, Since 3.91.2 * @GDK_WINDOW_STATE_BOTTOM_RESIZABLE: whether the bottom edge is resizable, Since 3.91.2 * @GDK_WINDOW_STATE_LEFT_TILED: whether the left edge is tiled, Since 3.91.2 * @GDK_WINDOW_STATE_LEFT_RESIZABLE: whether the left edge is resizable, Since 3.91.2 * * Specifies the state of a toplevel window. */ 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, GDK_WINDOW_STATE_ABOVE = 1 << 5, GDK_WINDOW_STATE_BELOW = 1 << 6, GDK_WINDOW_STATE_FOCUSED = 1 << 7, GDK_WINDOW_STATE_TILED = 1 << 8, GDK_WINDOW_STATE_TOP_TILED = 1 << 9, GDK_WINDOW_STATE_TOP_RESIZABLE = 1 << 10, GDK_WINDOW_STATE_RIGHT_TILED = 1 << 11, GDK_WINDOW_STATE_RIGHT_RESIZABLE = 1 << 12, GDK_WINDOW_STATE_BOTTOM_TILED = 1 << 13, GDK_WINDOW_STATE_BOTTOM_RESIZABLE = 1 << 14, GDK_WINDOW_STATE_LEFT_TILED = 1 << 15, GDK_WINDOW_STATE_LEFT_RESIZABLE = 1 << 16 } GdkWindowState; GDK_AVAILABLE_IN_ALL GType gdk_event_get_type (void) G_GNUC_CONST; GDK_AVAILABLE_IN_3_14 GType gdk_event_sequence_get_type (void) G_GNUC_CONST; GDK_AVAILABLE_IN_ALL GdkEvent* gdk_event_new (GdkEventType type); GDK_AVAILABLE_IN_ALL GdkEvent* gdk_event_copy (const GdkEvent *event); GDK_AVAILABLE_IN_ALL void gdk_event_free (GdkEvent *event); GDK_AVAILABLE_IN_3_10 GdkWindow *gdk_event_get_window (const GdkEvent *event); GDK_AVAILABLE_IN_ALL guint32 gdk_event_get_time (const GdkEvent *event); GDK_AVAILABLE_IN_ALL gboolean gdk_event_get_state (const GdkEvent *event, GdkModifierType *state); GDK_AVAILABLE_IN_ALL gboolean gdk_event_get_coords (const GdkEvent *event, gdouble *x_win, gdouble *y_win); GDK_AVAILABLE_IN_3_92 void gdk_event_set_coords (GdkEvent *event, gdouble x, gdouble y); GDK_AVAILABLE_IN_ALL gboolean gdk_event_get_root_coords (const GdkEvent *event, gdouble *x_root, gdouble *y_root); GDK_AVAILABLE_IN_3_2 gboolean gdk_event_get_button (const GdkEvent *event, guint *button); GDK_AVAILABLE_IN_3_2 gboolean gdk_event_get_click_count (const GdkEvent *event, guint *click_count); GDK_AVAILABLE_IN_3_2 gboolean gdk_event_get_keyval (const GdkEvent *event, guint *keyval); GDK_AVAILABLE_IN_3_92 void gdk_event_set_keyval (GdkEvent *event, guint keyval); GDK_AVAILABLE_IN_3_2 gboolean gdk_event_get_keycode (const GdkEvent *event, guint16 *keycode); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_key_is_modifier (const GdkEvent *event, gboolean *is_modifier); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_key_group (const GdkEvent *event, guint *group); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_string (const GdkEvent *event, const char **string); GDK_AVAILABLE_IN_3_2 gboolean gdk_event_get_scroll_direction (const GdkEvent *event, GdkScrollDirection *direction); GDK_AVAILABLE_IN_3_4 gboolean gdk_event_get_scroll_deltas (const GdkEvent *event, gdouble *delta_x, gdouble *delta_y); GDK_AVAILABLE_IN_3_20 gboolean gdk_event_is_scroll_stop_event (const GdkEvent *event); GDK_AVAILABLE_IN_ALL gboolean gdk_event_get_axis (const GdkEvent *event, GdkAxisUse axis_use, gdouble *value); GDK_AVAILABLE_IN_ALL void gdk_event_set_device (GdkEvent *event, GdkDevice *device); GDK_AVAILABLE_IN_ALL GdkDevice* gdk_event_get_device (const GdkEvent *event); GDK_AVAILABLE_IN_ALL void gdk_event_set_source_device (GdkEvent *event, GdkDevice *device); GDK_AVAILABLE_IN_ALL GdkDevice* gdk_event_get_source_device (const GdkEvent *event); GDK_AVAILABLE_IN_ALL void gdk_event_request_motions (const GdkEventMotion *event); GDK_AVAILABLE_IN_3_4 gboolean gdk_event_triggers_context_menu (const GdkEvent *event); GDK_AVAILABLE_IN_ALL gboolean gdk_events_get_distance (GdkEvent *event1, GdkEvent *event2, gdouble *distance); GDK_AVAILABLE_IN_ALL gboolean gdk_events_get_angle (GdkEvent *event1, GdkEvent *event2, gdouble *angle); GDK_AVAILABLE_IN_ALL gboolean gdk_events_get_center (GdkEvent *event1, GdkEvent *event2, gdouble *x, gdouble *y); GDK_AVAILABLE_IN_ALL void gdk_event_handler_set (GdkEventFunc func, gpointer data, GDestroyNotify notify); GDK_AVAILABLE_IN_3_94 void gdk_event_set_display (GdkEvent *event, GdkDisplay *display); GDK_AVAILABLE_IN_3_94 GdkDisplay *gdk_event_get_display (const GdkEvent *event); GDK_AVAILABLE_IN_3_4 GdkEventSequence *gdk_event_get_event_sequence (const GdkEvent *event); GDK_AVAILABLE_IN_3_10 GdkEventType gdk_event_get_event_type (const GdkEvent *event); GDK_AVAILABLE_IN_3_20 GdkSeat *gdk_event_get_seat (const GdkEvent *event); GDK_AVAILABLE_IN_ALL void gdk_set_show_events (gboolean show_events); GDK_AVAILABLE_IN_ALL gboolean gdk_get_show_events (void); GDK_AVAILABLE_IN_3_22 GdkDeviceTool *gdk_event_get_device_tool (const GdkEvent *event); GDK_AVAILABLE_IN_3_22 void gdk_event_set_device_tool (GdkEvent *event, GdkDeviceTool *tool); GDK_AVAILABLE_IN_3_22 int gdk_event_get_scancode (GdkEvent *event); GDK_AVAILABLE_IN_3_22 gboolean gdk_event_get_pointer_emulated (GdkEvent *event); GDK_AVAILABLE_IN_3_92 void gdk_event_set_user_data (GdkEvent *event, GObject *user_data); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_is_sent (const GdkEvent *event); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_drag_context (const GdkEvent *event, GdkDragContext **context); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_crossing_mode (const GdkEvent *event, GdkCrossingMode *mode); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_crossing_detail (const GdkEvent *event, GdkNotifyType *detail); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_touchpad_gesture_phase (const GdkEvent *event, GdkTouchpadGesturePhase *phase); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_touchpad_gesture_n_fingers (const GdkEvent *event, guint *n_fingers); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_touchpad_deltas (const GdkEvent *event, double *dx, double *dy); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_touchpad_angle_delta (const GdkEvent *event, double *delta); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_touchpad_scale (const GdkEvent *event, double *scale); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_touch_emulating_pointer (const GdkEvent *event, gboolean *emulating); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_grab_window (const GdkEvent *event, GdkWindow **window); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_focus_in (const GdkEvent *event, gboolean *focus_in); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_pad_group_mode (const GdkEvent *event, guint *group, guint *mode); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_pad_button (const GdkEvent *event, guint *button); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_pad_axis_value (const GdkEvent *event, guint *index, gdouble *value); GDK_AVAILABLE_IN_3_92 gboolean gdk_event_get_axes (GdkEvent *event, gdouble **axes, guint *n_axes); GList * gdk_event_get_history (const GdkEvent *event); G_END_DECLS #endif /* __GDK_EVENTS_H__ */