2017-08-05 13:34:39 +00:00
|
|
|
|
/* 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 <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 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_PRIVATE_H__
|
|
|
|
|
#define __GDK_EVENTS_PRIVATE_H__
|
|
|
|
|
|
|
|
|
|
#include <gdk/gdktypes.h>
|
2018-07-02 11:39:09 +00:00
|
|
|
|
#include <gdk/gdkdrag.h>
|
2017-08-05 13:34:39 +00:00
|
|
|
|
#include <gdk/gdkdevice.h>
|
|
|
|
|
#include <gdk/gdkdevicetool.h>
|
|
|
|
|
|
2017-10-25 11:23:41 +00:00
|
|
|
|
#define GDK_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_EVENT, GdkEventClass))
|
|
|
|
|
#define GDK_IS_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_EVENT))
|
|
|
|
|
#define GDK_EVENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_EVENT, GdkEventClass))
|
|
|
|
|
|
|
|
|
|
typedef struct _GdkEventClass GdkEventClass;
|
|
|
|
|
|
|
|
|
|
struct _GdkEventClass
|
|
|
|
|
{
|
|
|
|
|
GObjectClass object_class;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventAny:
|
|
|
|
|
* @type: the type of the event.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
*
|
|
|
|
|
* 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 _GdkEventAny
|
|
|
|
|
{
|
2017-10-25 11:23:41 +00:00
|
|
|
|
GObject parent_instance;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
GdkEventType type;
|
2018-03-20 14:14:10 +00:00
|
|
|
|
GdkSurface *surface;
|
2017-10-11 06:42:41 +00:00
|
|
|
|
guint16 flags;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
gint8 send_event;
|
2017-10-11 06:42:41 +00:00
|
|
|
|
GdkDevice *device;
|
|
|
|
|
GdkDevice *source_device;
|
2017-10-25 12:06:20 +00:00
|
|
|
|
GdkDisplay *display;
|
2019-03-08 16:27:16 +00:00
|
|
|
|
GObject *target;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventMotion:
|
|
|
|
|
* @type: the type of the event.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @x: the x coordinate of the pointer relative to the surface.
|
|
|
|
|
* @y: the y coordinate of the pointer relative to the surface.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @axes: @x, @y translated to the axes of @device, or %NULL if @device is
|
|
|
|
|
* the mouse.
|
|
|
|
|
* @state: (type GdkModifierType): a bit-mask representing the state of
|
|
|
|
|
* the modifier keys (e.g. Control, Shift and Alt) and the pointer
|
|
|
|
|
* buttons. See #GdkModifierType.
|
|
|
|
|
* @device: the master device that the event originated from. Use
|
|
|
|
|
* gdk_event_get_source_device() to get the slave device.
|
|
|
|
|
* @x_root: the x coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen.
|
|
|
|
|
* @y_root: the y coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen.
|
|
|
|
|
*
|
|
|
|
|
* Generated when the pointer moves.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventMotion
|
|
|
|
|
{
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
gdouble x;
|
|
|
|
|
gdouble y;
|
|
|
|
|
gdouble *axes;
|
|
|
|
|
guint state;
|
2017-10-11 06:42:41 +00:00
|
|
|
|
GdkDeviceTool *tool;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
gdouble x_root, y_root;
|
2017-10-31 11:37:50 +00:00
|
|
|
|
GList *history;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventButton:
|
2017-09-15 15:34:06 +00:00
|
|
|
|
* @type: the type of the event (%GDK_BUTTON_PRESS or %GDK_BUTTON_RELEASE).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @x: the x coordinate of the pointer relative to the surface.
|
|
|
|
|
* @y: the y coordinate of the pointer relative to the surface.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @axes: @x, @y translated to the axes of @device, or %NULL if @device is
|
|
|
|
|
* the mouse.
|
|
|
|
|
* @state: (type GdkModifierType): a bit-mask representing the state of
|
|
|
|
|
* the modifier keys (e.g. Control, Shift and Alt) and the pointer
|
|
|
|
|
* buttons. See #GdkModifierType.
|
|
|
|
|
* @button: the button which was pressed or released, numbered from 1 to 5.
|
|
|
|
|
* Normally button 1 is the left mouse button, 2 is the middle button,
|
|
|
|
|
* and 3 is the right button. On 2-button mice, the middle button can
|
|
|
|
|
* often be simulated by pressing both mouse buttons together.
|
|
|
|
|
* @device: the master device that the event originated from. Use
|
|
|
|
|
* gdk_event_get_source_device() to get the slave device.
|
|
|
|
|
* @x_root: the x coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen.
|
|
|
|
|
* @y_root: the y coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen.
|
|
|
|
|
*
|
|
|
|
|
* Used for button press and button release events. The
|
2017-09-15 15:34:06 +00:00
|
|
|
|
* @type field will be one of %GDK_BUTTON_PRESS or %GDK_BUTTON_RELEASE,
|
2017-08-05 13:34:39 +00:00
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventButton
|
|
|
|
|
{
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
gdouble x;
|
|
|
|
|
gdouble y;
|
|
|
|
|
gdouble *axes;
|
|
|
|
|
guint state;
|
|
|
|
|
guint button;
|
2017-10-11 06:42:41 +00:00
|
|
|
|
GdkDeviceTool *tool;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
gdouble x_root, y_root;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventTouch:
|
|
|
|
|
* @type: the type of the event (%GDK_TOUCH_BEGIN, %GDK_TOUCH_UPDATE,
|
|
|
|
|
* %GDK_TOUCH_END, %GDK_TOUCH_CANCEL)
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @x: the x coordinate of the pointer relative to the surface
|
|
|
|
|
* @y: the y coordinate of the pointer relative to the surface
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @axes: @x, @y translated to the axes of @device, or %NULL if @device is
|
|
|
|
|
* the mouse
|
|
|
|
|
* @state: (type GdkModifierType): a bit-mask representing the state of
|
|
|
|
|
* the modifier keys (e.g. Control, Shift and Alt) and the pointer
|
|
|
|
|
* buttons. See #GdkModifierType
|
|
|
|
|
* @sequence: the event sequence that the event belongs to
|
|
|
|
|
* @emulating_pointer: whether the event should be used for emulating
|
|
|
|
|
* pointer event
|
|
|
|
|
* @device: the master device that the event originated from. Use
|
|
|
|
|
* gdk_event_get_source_device() to get the slave device.
|
|
|
|
|
* @x_root: the x coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen
|
|
|
|
|
* @y_root: the y coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen
|
|
|
|
|
*
|
|
|
|
|
* 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 _GdkEventTouch
|
|
|
|
|
{
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
gdouble x;
|
|
|
|
|
gdouble y;
|
|
|
|
|
gdouble *axes;
|
|
|
|
|
guint state;
|
|
|
|
|
GdkEventSequence *sequence;
|
|
|
|
|
gboolean emulating_pointer;
|
|
|
|
|
gdouble x_root, y_root;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventScroll:
|
|
|
|
|
* @type: the type of the event (%GDK_SCROLL).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @x: the x coordinate of the pointer relative to the surface.
|
|
|
|
|
* @y: the y coordinate of the pointer relative to the surface.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @state: (type GdkModifierType): a bit-mask representing the state of
|
|
|
|
|
* the modifier keys (e.g. Control, Shift and Alt) and the pointer
|
|
|
|
|
* buttons. See #GdkModifierType.
|
|
|
|
|
* @direction: the direction to scroll to (one of %GDK_SCROLL_UP,
|
|
|
|
|
* %GDK_SCROLL_DOWN, %GDK_SCROLL_LEFT, %GDK_SCROLL_RIGHT or
|
|
|
|
|
* %GDK_SCROLL_SMOOTH).
|
|
|
|
|
* @device: the master device that the event originated from. Use
|
|
|
|
|
* gdk_event_get_source_device() to get the slave device.
|
|
|
|
|
* @x_root: the x coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen.
|
|
|
|
|
* @y_root: the y coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen.
|
|
|
|
|
* @delta_x: the x coordinate of the scroll delta
|
|
|
|
|
* @delta_y: the y coordinate of the scroll delta
|
|
|
|
|
*
|
|
|
|
|
* 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 _GdkEventScroll
|
|
|
|
|
{
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
gdouble x;
|
|
|
|
|
gdouble y;
|
|
|
|
|
guint state;
|
|
|
|
|
GdkScrollDirection direction;
|
|
|
|
|
gdouble x_root, y_root;
|
|
|
|
|
gdouble delta_x;
|
|
|
|
|
gdouble delta_y;
|
|
|
|
|
guint is_stop : 1;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventKey:
|
|
|
|
|
* @type: the type of the event (%GDK_KEY_PRESS or %GDK_KEY_RELEASE).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
|
|
|
|
* @state: (type GdkModifierType): a bit-mask representing the state of
|
|
|
|
|
* the modifier keys (e.g. Control, Shift and Alt) and the pointer
|
|
|
|
|
* buttons. See #GdkModifierType.
|
|
|
|
|
* @keyval: the key that was pressed or released. See the
|
|
|
|
|
* `gdk/gdkkeysyms.h` header file for a
|
|
|
|
|
* complete list of GDK key codes.
|
|
|
|
|
* @hardware_keycode: the raw code of the key that was pressed or released.
|
|
|
|
|
* @group: the keyboard group.
|
|
|
|
|
* @is_modifier: a flag that indicates if @hardware_keycode is mapped to a
|
2018-06-25 23:21:08 +00:00
|
|
|
|
* modifier
|
2017-08-05 13:34:39 +00:00
|
|
|
|
*
|
|
|
|
|
* Describes a key press or key release event.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventKey
|
|
|
|
|
{
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
guint state;
|
|
|
|
|
guint keyval;
|
|
|
|
|
guint16 hardware_keycode;
|
2017-10-11 06:42:41 +00:00
|
|
|
|
guint16 key_scancode;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint8 group;
|
|
|
|
|
guint is_modifier : 1;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventCrossing:
|
|
|
|
|
* @type: the type of the event (%GDK_ENTER_NOTIFY or %GDK_LEAVE_NOTIFY).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @child_surface: the surface that was entered or left.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @time: the time of the event in milliseconds.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @x: the x coordinate of the pointer relative to the surface.
|
|
|
|
|
* @y: the y coordinate of the pointer relative to the surface.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @x_root: the x coordinate of the pointer relative to the root of the screen.
|
|
|
|
|
* @y_root: the y coordinate of the pointer relative to the root of the screen.
|
|
|
|
|
* @mode: the crossing mode (%GDK_CROSSING_NORMAL, %GDK_CROSSING_GRAB,
|
|
|
|
|
* %GDK_CROSSING_UNGRAB, %GDK_CROSSING_GTK_GRAB, %GDK_CROSSING_GTK_UNGRAB or
|
|
|
|
|
* %GDK_CROSSING_STATE_CHANGED). %GDK_CROSSING_GTK_GRAB, %GDK_CROSSING_GTK_UNGRAB,
|
|
|
|
|
* and %GDK_CROSSING_STATE_CHANGED were added in 2.14 and are always synthesized,
|
|
|
|
|
* never native.
|
|
|
|
|
* @detail: the kind of crossing that happened (%GDK_NOTIFY_INFERIOR,
|
|
|
|
|
* %GDK_NOTIFY_ANCESTOR, %GDK_NOTIFY_VIRTUAL, %GDK_NOTIFY_NONLINEAR or
|
|
|
|
|
* %GDK_NOTIFY_NONLINEAR_VIRTUAL).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @focus: %TRUE if @surface is the focus surface or an inferior.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @state: (type GdkModifierType): a bit-mask representing the state of
|
|
|
|
|
* the modifier keys (e.g. Control, Shift and Alt) and the pointer
|
|
|
|
|
* buttons. See #GdkModifierType.
|
|
|
|
|
*
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* Generated when the pointer enters or leaves a surface.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventCrossing
|
|
|
|
|
{
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2018-03-20 14:14:10 +00:00
|
|
|
|
GdkSurface *child_surface;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
gdouble x;
|
|
|
|
|
gdouble y;
|
|
|
|
|
gdouble x_root;
|
|
|
|
|
gdouble y_root;
|
|
|
|
|
GdkCrossingMode mode;
|
|
|
|
|
GdkNotifyType detail;
|
|
|
|
|
gboolean focus;
|
|
|
|
|
guint state;
|
2019-03-08 16:12:30 +00:00
|
|
|
|
GObject *related_target;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventFocus:
|
|
|
|
|
* @type: the type of the event (%GDK_FOCUS_CHANGE).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @in: %TRUE if the surface has gained the keyboard focus, %FALSE if
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* it has lost the focus.
|
2019-03-06 21:55:27 +00:00
|
|
|
|
* @mode: the crossing mode
|
|
|
|
|
* @detail: the kind of crossing that happened
|
2017-08-05 13:34:39 +00:00
|
|
|
|
*
|
|
|
|
|
* Describes a change of keyboard focus.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventFocus
|
|
|
|
|
{
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
gint16 in;
|
2019-03-06 21:55:27 +00:00
|
|
|
|
GdkCrossingMode mode;
|
|
|
|
|
GdkNotifyType detail;
|
2019-03-08 16:12:30 +00:00
|
|
|
|
GObject *related_target;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
};
|
|
|
|
|
|
2018-07-15 23:52:28 +00:00
|
|
|
|
/*
|
|
|
|
|
* GdkEventConfigure:
|
|
|
|
|
* @type: the type of the event (%GDK_CONFIGURE).
|
|
|
|
|
* @surface: the surface which received the event.
|
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @x: the new x coordinate of the surface, relative to its parent.
|
|
|
|
|
* @y: the new y coordinate of the surface, relative to its parent.
|
|
|
|
|
* @width: the new width of the surface.
|
|
|
|
|
* @height: the new height of the surface.
|
|
|
|
|
*
|
|
|
|
|
* Generated when a surface size or position has changed.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventConfigure
|
|
|
|
|
{
|
|
|
|
|
GdkEventAny any;
|
|
|
|
|
gint x, y;
|
|
|
|
|
gint width;
|
|
|
|
|
gint height;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventProximity:
|
|
|
|
|
* @type: the type of the event (%GDK_PROXIMITY_IN or %GDK_PROXIMITY_OUT).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
|
|
|
|
* @device: the master device that the event originated from. Use
|
|
|
|
|
* gdk_event_get_source_device() to get the slave 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 _GdkEventProximity
|
|
|
|
|
{
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventGrabBroken:
|
|
|
|
|
* @type: the type of the event (%GDK_GRAB_BROKEN)
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event, i.e. the surface
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* that previously owned the grab
|
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @keyboard: %TRUE if a keyboard grab was broken, %FALSE if a pointer
|
|
|
|
|
* grab was broken
|
|
|
|
|
* @implicit: %TRUE if the broken grab was implicit
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @grab_surface: If this event is caused by another grab in the same
|
|
|
|
|
* application, @grab_surface contains the new grab surface. Otherwise
|
|
|
|
|
* @grab_surface is %NULL.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
*
|
|
|
|
|
* Generated when a pointer or keyboard grab is broken. On X11, this happens
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* when the grab surface becomes unviewable (i.e. it or one of its ancestors
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* 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.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventGrabBroken {
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
gboolean keyboard;
|
|
|
|
|
gboolean implicit;
|
2018-03-20 14:14:10 +00:00
|
|
|
|
GdkSurface *grab_surface;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventDND:
|
|
|
|
|
* @type: the type of the event (%GDK_DRAG_ENTER, %GDK_DRAG_LEAVE,
|
2017-12-15 21:54:34 +00:00
|
|
|
|
* %GDK_DRAG_MOTION or %GDK_DROP_START)
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
2018-05-29 18:49:41 +00:00
|
|
|
|
* @drop: the #GdkDrop for the current DND operation.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @time: the time of the event in milliseconds.
|
|
|
|
|
* @x_root: the x coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen, only set for %GDK_DRAG_MOTION and %GDK_DROP_START.
|
|
|
|
|
* @y_root: the y coordinate of the pointer relative to the root of the
|
|
|
|
|
* screen, only set for %GDK_DRAG_MOTION and %GDK_DROP_START.
|
|
|
|
|
*
|
|
|
|
|
* Generated during DND operations.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventDND {
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2018-05-29 18:49:41 +00:00
|
|
|
|
GdkDrop *drop;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
|
|
|
|
|
guint32 time;
|
|
|
|
|
gshort x_root, y_root;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventTouchpadSwipe:
|
|
|
|
|
* @type: the type of the event (%GDK_TOUCHPAD_SWIPE)
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly
|
|
|
|
|
* @phase: (type GdkTouchpadGesturePhase): the current phase of the gesture
|
|
|
|
|
* @n_fingers: The number of fingers triggering the swipe
|
|
|
|
|
* @time: the time of the event in milliseconds
|
|
|
|
|
* @x: The X coordinate of the pointer
|
|
|
|
|
* @y: The Y coordinate of the pointer
|
|
|
|
|
* @dx: Movement delta in the X axis of the swipe focal point
|
|
|
|
|
* @dy: Movement delta in the Y axis of the swipe focal point
|
|
|
|
|
* @x_root: The X coordinate of the pointer, relative to the
|
|
|
|
|
* root of the screen.
|
|
|
|
|
* @y_root: The Y coordinate of the pointer, relative to the
|
|
|
|
|
* root of the screen.
|
|
|
|
|
* @state: (type GdkModifierType): a bit-mask representing the state of
|
|
|
|
|
* the modifier keys (e.g. Control, Shift and Alt) and the pointer
|
|
|
|
|
* buttons. See #GdkModifierType.
|
|
|
|
|
*
|
|
|
|
|
* Generated during touchpad swipe gestures.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventTouchpadSwipe {
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
gint8 phase;
|
|
|
|
|
gint8 n_fingers;
|
|
|
|
|
guint32 time;
|
|
|
|
|
gdouble x;
|
|
|
|
|
gdouble y;
|
|
|
|
|
gdouble dx;
|
|
|
|
|
gdouble dy;
|
|
|
|
|
gdouble x_root, y_root;
|
|
|
|
|
guint state;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventTouchpadPinch:
|
|
|
|
|
* @type: the type of the event (%GDK_TOUCHPAD_PINCH)
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly
|
|
|
|
|
* @phase: (type GdkTouchpadGesturePhase): the current phase of the gesture
|
|
|
|
|
* @n_fingers: The number of fingers triggering the pinch
|
|
|
|
|
* @time: the time of the event in milliseconds
|
|
|
|
|
* @x: The X coordinate of the pointer
|
|
|
|
|
* @y: The Y coordinate of the pointer
|
|
|
|
|
* @dx: Movement delta in the X axis of the swipe focal point
|
|
|
|
|
* @dy: Movement delta in the Y axis of the swipe focal point
|
|
|
|
|
* @angle_delta: The angle change in radians, negative angles
|
|
|
|
|
* denote counter-clockwise movements
|
|
|
|
|
* @scale: The current scale, relative to that at the time of
|
|
|
|
|
* the corresponding %GDK_TOUCHPAD_GESTURE_PHASE_BEGIN event
|
|
|
|
|
* @x_root: The X coordinate of the pointer, relative to the
|
|
|
|
|
* root of the screen.
|
|
|
|
|
* @y_root: The Y coordinate of the pointer, relative to the
|
|
|
|
|
* root of the screen.
|
|
|
|
|
* @state: (type GdkModifierType): a bit-mask representing the state of
|
|
|
|
|
* the modifier keys (e.g. Control, Shift and Alt) and the pointer
|
|
|
|
|
* buttons. See #GdkModifierType.
|
|
|
|
|
*
|
|
|
|
|
* Generated during touchpad swipe gestures.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventTouchpadPinch {
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
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;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventPadButton:
|
|
|
|
|
* @type: the type of the event (%GDK_PAD_BUTTON_PRESS or %GDK_PAD_BUTTON_RELEASE).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
|
|
|
|
* @group: the pad group the button belongs to. A %GDK_SOURCE_TABLET_PAD device
|
|
|
|
|
* may have one or more groups containing a set of buttons/rings/strips each.
|
|
|
|
|
* @button: The pad button that was pressed.
|
|
|
|
|
* @mode: The current mode of @group. Different groups in a %GDK_SOURCE_TABLET_PAD
|
|
|
|
|
* device may have different current modes.
|
|
|
|
|
*
|
|
|
|
|
* Generated during %GDK_SOURCE_TABLET_PAD button presses and releases.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventPadButton {
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
guint group;
|
|
|
|
|
guint button;
|
|
|
|
|
guint mode;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventPadAxis:
|
|
|
|
|
* @type: the type of the event (%GDK_PAD_RING or %GDK_PAD_STRIP).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
|
|
|
|
* @group: the pad group the ring/strip belongs to. A %GDK_SOURCE_TABLET_PAD
|
|
|
|
|
* device may have one or more groups containing a set of buttons/rings/strips
|
|
|
|
|
* each.
|
|
|
|
|
* @index: number of strip/ring that was interacted. This number is 0-indexed.
|
|
|
|
|
* @mode: The current mode of @group. Different groups in a %GDK_SOURCE_TABLET_PAD
|
|
|
|
|
* device may have different current modes.
|
|
|
|
|
* @value: The current value for the given axis.
|
|
|
|
|
*
|
|
|
|
|
* Generated during %GDK_SOURCE_TABLET_PAD interaction with tactile sensors.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventPadAxis {
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
guint group;
|
|
|
|
|
guint index;
|
|
|
|
|
guint mode;
|
|
|
|
|
gdouble value;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEventPadGroupMode:
|
|
|
|
|
* @type: the type of the event (%GDK_PAD_GROUP_MODE).
|
2018-03-20 14:14:10 +00:00
|
|
|
|
* @surface: the surface which received the event.
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @send_event: %TRUE if the event was sent explicitly.
|
|
|
|
|
* @time: the time of the event in milliseconds.
|
|
|
|
|
* @group: the pad group that is switching mode. A %GDK_SOURCE_TABLET_PAD
|
|
|
|
|
* device may have one or more groups containing a set of buttons/rings/strips
|
|
|
|
|
* each.
|
|
|
|
|
* @mode: The new mode of @group. Different groups in a %GDK_SOURCE_TABLET_PAD
|
|
|
|
|
* device may have different current modes.
|
|
|
|
|
*
|
|
|
|
|
* Generated during %GDK_SOURCE_TABLET_PAD mode switches in a group.
|
|
|
|
|
*/
|
|
|
|
|
struct _GdkEventPadGroupMode {
|
2017-10-11 13:35:29 +00:00
|
|
|
|
GdkEventAny any;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
guint32 time;
|
|
|
|
|
guint group;
|
|
|
|
|
guint mode;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-26 15:30:50 +00:00
|
|
|
|
/*
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* GdkEvent:
|
|
|
|
|
* @type: the #GdkEventType
|
|
|
|
|
* @any: a #GdkEventAny
|
|
|
|
|
* @motion: a #GdkEventMotion
|
|
|
|
|
* @button: a #GdkEventButton
|
|
|
|
|
* @touch: a #GdkEventTouch
|
|
|
|
|
* @scroll: a #GdkEventScroll
|
|
|
|
|
* @key: a #GdkEventKey
|
|
|
|
|
* @crossing: a #GdkEventCrossing
|
|
|
|
|
* @focus_change: a #GdkEventFocus
|
2018-07-15 23:52:28 +00:00
|
|
|
|
* @configure: a #GdkEventConfigure
|
2017-08-05 13:34:39 +00:00
|
|
|
|
* @proximity: a #GdkEventProximity
|
|
|
|
|
* @dnd: a #GdkEventDND
|
|
|
|
|
* @grab_broken: a #GdkEventGrabBroken
|
|
|
|
|
* @touchpad_swipe: a #GdkEventTouchpadSwipe
|
|
|
|
|
* @touchpad_pinch: a #GdkEventTouchpadPinch
|
|
|
|
|
* @pad_button: a #GdkEventPadButton
|
|
|
|
|
* @pad_axis: a #GdkEventPadAxis
|
|
|
|
|
* @pad_group_mode: a #GdkEventPadGroupMode
|
|
|
|
|
*
|
|
|
|
|
* 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:
|
|
|
|
|
* |[<!-- language="C" -->
|
|
|
|
|
* GdkEvent *event;
|
|
|
|
|
* GdkEventType type;
|
|
|
|
|
*
|
|
|
|
|
* type = event->type;
|
|
|
|
|
* ]|
|
|
|
|
|
*
|
|
|
|
|
* 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:
|
|
|
|
|
* |[<!-- language="C" -->
|
|
|
|
|
* GdkEvent *event;
|
|
|
|
|
* gdouble x;
|
|
|
|
|
*
|
|
|
|
|
* x = ((GdkEventButton*)event)->x;
|
|
|
|
|
* ]|
|
|
|
|
|
* or:
|
|
|
|
|
* |[<!-- language="C" -->
|
|
|
|
|
* GdkEvent *event;
|
|
|
|
|
* gdouble x;
|
|
|
|
|
*
|
|
|
|
|
* x = event->button.x;
|
|
|
|
|
* ]|
|
|
|
|
|
*/
|
|
|
|
|
union _GdkEvent
|
|
|
|
|
{
|
|
|
|
|
GdkEventAny any;
|
|
|
|
|
GdkEventMotion motion;
|
|
|
|
|
GdkEventButton button;
|
|
|
|
|
GdkEventTouch touch;
|
|
|
|
|
GdkEventScroll scroll;
|
|
|
|
|
GdkEventKey key;
|
|
|
|
|
GdkEventCrossing crossing;
|
|
|
|
|
GdkEventFocus focus_change;
|
2018-07-15 23:52:28 +00:00
|
|
|
|
GdkEventConfigure configure;
|
2017-08-05 13:34:39 +00:00
|
|
|
|
GdkEventProximity proximity;
|
|
|
|
|
GdkEventDND dnd;
|
|
|
|
|
GdkEventGrabBroken grab_broken;
|
|
|
|
|
GdkEventTouchpadSwipe touchpad_swipe;
|
|
|
|
|
GdkEventTouchpadPinch touchpad_pinch;
|
|
|
|
|
GdkEventPadButton pad_button;
|
|
|
|
|
GdkEventPadAxis pad_axis;
|
|
|
|
|
GdkEventPadGroupMode pad_group_mode;
|
|
|
|
|
};
|
|
|
|
|
|
2019-03-08 16:27:16 +00:00
|
|
|
|
void gdk_event_set_target (GdkEvent *event,
|
|
|
|
|
GObject *user_data);
|
|
|
|
|
GObject * gdk_event_get_target (const GdkEvent *event);
|
2019-03-08 16:12:30 +00:00
|
|
|
|
void gdk_event_set_related_target (GdkEvent *event,
|
|
|
|
|
GObject *user_data);
|
|
|
|
|
GObject * gdk_event_get_related_target (const GdkEvent *event);
|
2019-01-17 16:02:49 +00:00
|
|
|
|
|
2019-05-01 20:39:00 +00:00
|
|
|
|
gboolean check_event_sanity (GdkEvent *event);
|
|
|
|
|
|
2019-01-17 16:02:49 +00:00
|
|
|
|
|
2017-08-05 13:34:39 +00:00
|
|
|
|
#endif /* __GDK_EVENTS_PRIVATE_H__ */
|