Protocols
The following protocols are available globally.
-
The
AppLaunchContextProtocolprotocol exposes the methods and properties of an underlyingGdkAppLaunchContextinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeAppLaunchContext. Alternatively, useAppLaunchContextRefas a lighweight,unownedreference if you already have an instance you just want to use.GdkAppLaunchContext is an implementation of
GAppLaunchContextthat handles launching an application in a graphical context. It provides startup notification and allows to launch applications on a specific screen or workspace.Launching an application
(C Language Example):
See moreGdkAppLaunchContext *context; context = gdk_display_get_app_launch_context (display); gdk_app_launch_context_set_screen (screen); gdk_app_launch_context_set_timestamp (event->time); if (!g_app_info_launch_default_for_uri ("http://www.gtk.org", context, &error)) g_warning ("Launching failed: %s\n", error->message); g_object_unref (context);Declaration
Swift
public protocol AppLaunchContextProtocol : AppLaunchContextProtocol
-
The
CursorProtocolprotocol exposes the methods and properties of an underlyingGdkCursorinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeCursor. Alternatively, useCursorRefas a lighweight,unownedreference if you already have an instance you just want to use.A
See moreGdkCursorrepresents a cursor. Its contents are private.Declaration
Swift
public protocol CursorProtocol : ObjectProtocol
-
The
AtomProtocolprotocol exposes the methods and properties of an underlyingGdkAtominstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeAtom. Alternatively, useAtomRefas a lighweight,unownedreference if you already have an instance you just want to use.An opaque type representing a string as an index into a table of strings on the X server.
See moreDeclaration
Swift
public protocol AtomProtocol
-
The
ColorProtocolprotocol exposes the methods and properties of an underlyingGdkColorinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeColor. Alternatively, useColorRefas a lighweight,unownedreference if you already have an instance you just want to use.A
See moreGdkColoris used to describe a color, similar to the XColor struct used in the X11 drawing API.Declaration
Swift
public protocol ColorProtocol
-
The
DeviceProtocolprotocol exposes the methods and properties of an underlyingGdkDeviceinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDevice. Alternatively, useDeviceRefas a lighweight,unownedreference if you already have an instance you just want to use.The
GdkDeviceobject represents a single input device, such as a keyboard, a mouse, a touchpad, etc.See the
See moreGdkDeviceManagerdocumentation for more information about the various kinds of master and slave devices, and their relationships.Declaration
Swift
public protocol DeviceProtocol : ObjectProtocol
-
The
DeviceManagerProtocolprotocol exposes the methods and properties of an underlyingGdkDeviceManagerinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDeviceManager. Alternatively, useDeviceManagerRefas a lighweight,unownedreference if you already have an instance you just want to use.In addition to a single pointer and keyboard for user interface input, GDK contains support for a variety of input devices, including graphics tablets, touchscreens and multiple pointers/keyboards interacting simultaneously with the user interface. Such input devices often have additional features, such as sub-pixel positioning information and additional device-dependent information.
In order to query the device hierarchy and be aware of changes in the device hierarchy (such as virtual devices being created or removed, or physical devices being plugged or unplugged), GDK provides
GdkDeviceManager.By default, and if the platform supports it, GDK is aware of multiple keyboard/pointer pairs and multitouch devices. This behavior can be changed by calling
gdk_disable_multidevice()beforegdk_display_open(). There should rarely be a need to do that though, since GDK defaults to a compatibility mode in which it will emit just one enter/leave event pair for all devices on a window. To enable per-device enter/leave events and other multi-pointer interaction features,gdk_window_set_support_multidevice()must be called onGdkWindows(orgtk_widget_set_support_multidevice()on widgets). window. See thegdk_window_set_support_multidevice()documentation for more information.On X11, multi-device support is implemented through XInput 2. Unless
gdk_disable_multidevice()is called, the XInput 2GdkDeviceManagerimplementation will be used as the input source. Otherwise either the core or XInput 1 implementations will be used.For simple applications that don’t have any special interest in input devices, the so-called “client pointer” provides a reasonable approximation to a simple setup with a single pointer and keyboard. The device that has been set as the client pointer can be accessed via
gdk_device_manager_get_client_pointer().Conceptually, in multidevice mode there are 2 device types. Virtual devices (or master devices) are represented by the pointer cursors and keyboard foci that are seen on the screen. Physical devices (or slave devices) represent the hardware that is controlling the virtual devices, and thus have no visible cursor on the screen.
Virtual devices are always paired, so there is a keyboard device for every pointer device. Associations between devices may be inspected through
gdk_device_get_associated_device().There may be several virtual devices, and several physical devices could be controlling each of these virtual devices. Physical devices may also be “floating”, which means they are not attached to any virtual device.
Master and slave devices
carlos@sacarino:~$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Wacom ISDv4 E6 Pen stylus id=10 [slave pointer (2)] ⎜ ↳ Wacom ISDv4 E6 Finger touch id=11 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)] ⎜ ↳ TPPS/2 IBM TrackPoint id=14 [slave pointer (2)] ⎜ ↳ Wacom ISDv4 E6 Pen eraser id=16 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Integrated Camera id=9 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)] ↳ ThinkPad Extra Buttons id=15 [slave keyboard (3)]By default, GDK will automatically listen for events coming from all master devices, setting the
GdkDevicefor all events coming from input devices. Events containing device information areGDK_MOTION_NOTIFY,GDK_BUTTON_PRESS,GDK_2BUTTON_PRESS,GDK_3BUTTON_PRESS,GDK_BUTTON_RELEASE,GDK_SCROLL,GDK_KEY_PRESS,GDK_KEY_RELEASE,GDK_ENTER_NOTIFY,GDK_LEAVE_NOTIFY,GDK_FOCUS_CHANGE,GDK_PROXIMITY_IN,GDK_PROXIMITY_OUT,GDK_DRAG_ENTER,GDK_DRAG_LEAVE,GDK_DRAG_MOTION,GDK_DRAG_STATUS,GDK_DROP_START,GDK_DROP_FINISHEDandGDK_GRAB_BROKEN. When dealing with an event on a master device, it is possible to get the source (slave) device that the event originated from viagdk_event_get_source_device().On a standard session, all physical devices are connected by default to the “Virtual Core Pointer/Keyboard” master devices, hence routing all events through these. This behavior is only modified by device grabs, where the slave device is temporarily detached for as long as the grab is held, and more permanently by user modifications to the device hierarchy.
On certain application specific setups, it may make sense to detach a physical device from its master pointer, and mapping it to an specific window. This can be achieved by the combination of
gdk_device_grab()andgdk_device_set_mode().In order to listen for events coming from devices other than a virtual device,
gdk_window_set_device_events()must be called. Generally, this function can be used to modify the event mask for any given device.Input devices may also provide additional information besides X/Y. For example, graphics tablets may also provide pressure and X/Y tilt information. This information is device-dependent, and may be queried through
gdk_device_get_axis(). In multidevice mode, virtual devices will change axes in order to always represent the physical device that is routing events through it. Whenever the physical device changes, theGdkDevice:n-axesproperty will be notified, andgdk_device_list_axes()will return the new device axes.Devices may also have associated “keys” or macro buttons. Such keys can be globally set to map into normal X keyboard events. The mapping is set using
gdk_device_set_key().In GTK+ 3.20, a new
See moreGdkSeatobject has been introduced that supersedesGdkDeviceManagerand should be preferred in newly written code.Declaration
Swift
public protocol DeviceManagerProtocol : ObjectProtocol
-
The
See moreDeviceToolProtocolprotocol exposes the methods and properties of an underlyingGdkDeviceToolinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDeviceTool. Alternatively, useDeviceToolRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol DeviceToolProtocol : ObjectProtocol
-
The
DisplayProtocolprotocol exposes the methods and properties of an underlyingGdkDisplayinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDisplay. Alternatively, useDisplayRefas a lighweight,unownedreference if you already have an instance you just want to use.GdkDisplayobjects purpose are two fold:To manage and provide information about input devices (pointers and keyboards)
To manage and provide information about the available
GdkScreens
GdkDisplay objects are the GDK representation of an X Display, which can be described as a workstation consisting of a keyboard, a pointing device (such as a mouse) and one or more screens. It is used to open and keep track of various GdkScreen objects currently instantiated by the application. It is also used to access the
keyboard(s)and mousepointer(s)of the display.Most of the input device handling has been factored out into the separate
See moreGdkDeviceManagerobject. Every display has a device manager, which you can obtain usinggdk_display_get_device_manager().Declaration
Swift
public protocol DisplayProtocol : ObjectProtocol
-
The
DisplayManagerProtocolprotocol exposes the methods and properties of an underlyingGdkDisplayManagerinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDisplayManager. Alternatively, useDisplayManagerRefas a lighweight,unownedreference if you already have an instance you just want to use.The purpose of the
GdkDisplayManagersingleton object is to offer notification when displays appear or disappear or the default display changes.You can use
gdk_display_manager_get()to obtain theGdkDisplayManagersingleton, but that should be rarely necessary. Typically, initializing GTK+ opens a display that you can work with without ever accessing theGdkDisplayManager.The GDK library can be built with support for multiple backends. The
GdkDisplayManagerobject determines which backend is used at runtime.When writing backend-specific code that is supposed to work with multiple GDK backends, you have to consider both compile time and runtime. At compile time, use the
GDK_WINDOWING_X11,GDK_WINDOWING_WIN32macros, etc. to find out which backends are present in the GDK library you are building your application against. At runtime, use type-check macros likeGDK_IS_X11_DISPLAY()to find out which backend is in use:Backend-specific code ##
(C Language Example):
See more#ifdef GDK_WINDOWING_X11 if (GDK_IS_X11_DISPLAY (display)) { // make X11-specific calls here } else #endif #ifdef GDK_WINDOWING_QUARTZ if (GDK_IS_QUARTZ_DISPLAY (display)) { // make Quartz-specific calls here } else #endif g_error ("Unsupported GDK backend");Declaration
Swift
public protocol DisplayManagerProtocol : ObjectProtocol
-
The
See moreDragContextProtocolprotocol exposes the methods and properties of an underlyingGdkDragContextinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDragContext. Alternatively, useDragContextRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol DragContextProtocol : ObjectProtocol
-
The
DrawingContextProtocolprotocol exposes the methods and properties of an underlyingGdkDrawingContextinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDrawingContext. Alternatively, useDrawingContextRefas a lighweight,unownedreference if you already have an instance you just want to use.GdkDrawingContextis an object that represents the current drawing state of aGdkWindow.It’s possible to use a
GdkDrawingContextto draw on aGdkWindowvia rendering API like Cairo or OpenGL.A
GdkDrawingContextcan only be created by callinggdk_window_begin_draw_frame()and will be valid until a call togdk_window_end_draw_frame().
See moreGdkDrawingContextis available since GDK 3.22Declaration
Swift
public protocol DrawingContextProtocol : ObjectProtocol
-
The
FrameClockProtocolprotocol exposes the methods and properties of an underlyingGdkFrameClockinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeFrameClock. Alternatively, useFrameClockRefas a lighweight,unownedreference if you already have an instance you just want to use.A
GdkFrameClocktells the application when to update and repaint a window. This may be synced to the vertical refresh rate of the monitor, for example. Even when the frame clock uses a simple timer rather than a hardware-based vertical sync, the frame clock helps because it ensures everything paints at the same time (reducing the total number of frames). The frame clock can also automatically stop painting when it knows the frames will not be visible, or scale back animation framerates.GdkFrameClockis designed to be compatible with an OpenGL-based implementation or with mozRequestAnimationFrame in Firefox, for example.A frame clock is idle until someone requests a frame with
gdk_frame_clock_request_phase(). At some later point that makes sense for the synchronization being implemented, the clock will process a frame and emit signals for each phase that has been requested. (See the signals of theGdkFrameClockclass for documentation of the phases.GDK_FRAME_CLOCK_PHASE_UPDATEand theGdkFrameClock::updatesignal are most interesting for application writers, and are used to update the animations, using the frame time given bygdk_frame_clock_get_frame_time().The frame time is reported in microseconds and generally in the same timescale as
See moreg_get_monotonic_time(), however, it is not the same asg_get_monotonic_time(). The frame time does not advance during the time a frame is being painted, and outside of a frame, an attempt is made so that all calls togdk_frame_clock_get_frame_time()that are called at a “similar” time get the same value. This means that if different animations are timed by looking at the difference in time between an initial value fromgdk_frame_clock_get_frame_time()and the value inside theGdkFrameClock::updatesignal of the clock, they will stay exactly synchronized.Declaration
Swift
public protocol FrameClockProtocol : ObjectProtocol
-
The
DevicePadProtocolprotocol exposes the methods and properties of an underlyingGdkDevicePadinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDevicePad. Alternatively, useDevicePadRefas a lighweight,unownedreference if you already have an instance you just want to use.GdkDevicePadis an interface implemented by devices of typeGDK_SOURCE_TABLET_PAD, it allows querying the features provided by the pad device.Tablet pads may contain one or more groups, each containing a subset of the buttons/rings/strips available.
gdk_device_pad_get_n_groups()can be used to obtain the number of groups,gdk_device_pad_get_n_features()andgdk_device_pad_get_feature_group()can be combined to find out the number of buttons/rings/strips the device has, and how are they grouped.Each of those groups have different modes, which may be used to map each individual pad feature to multiple actions. Only one mode is effective (current) for each given group, different groups may have different current modes. The number of available modes in a group can be found out through
See moregdk_device_pad_get_group_n_modes(), and the current mode for a given group will be notified through theGdkEventPadGroupModeevent.Declaration
Swift
public protocol DevicePadProtocol : DeviceProtocol
-
The
See moreDevicePadInterfaceProtocolprotocol exposes the methods and properties of an underlyingGdkDevicePadInterfaceinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDevicePadInterface. Alternatively, useDevicePadInterfaceRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol DevicePadInterfaceProtocol
-
The
See moreDrawingContextClassProtocolprotocol exposes the methods and properties of an underlyingGdkDrawingContextClassinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeDrawingContextClass. Alternatively, useDrawingContextClassRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol DrawingContextClassProtocol
-
The
EventAnyProtocolprotocol exposes the methods and properties of an underlyingGdkEventAnyinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventAny. Alternatively, useEventAnyRefas a lighweight,unownedreference if you already have an instance you just want to use.Contains the fields which are common to all event structs. Any event pointer can safely be cast to a pointer to a
See moreGdkEventAnyto access these fields.Declaration
Swift
public protocol EventAnyProtocol
-
The
EventButtonProtocolprotocol exposes the methods and properties of an underlyingGdkEventButtoninstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventButton. Alternatively, useEventButtonRefas a lighweight,unownedreference if you already have an instance you just want to use.Used for button press and button release events. The
typefield will be one ofGDK_BUTTON_PRESS,GDK_2BUTTON_PRESS,GDK_3BUTTON_PRESSorGDK_BUTTON_RELEASE,Double and triple-clicks result in a sequence of events being received. For double-clicks the order of events will be:
GDK_BUTTON_PRESSGDK_BUTTON_RELEASEGDK_BUTTON_PRESSGDK_2BUTTON_PRESSGDK_BUTTON_RELEASE
Note that the first click is received just like a normal button press, while the second click results in a
GDK_2BUTTON_PRESSbeing received just after theGDK_BUTTON_PRESS.Triple-clicks are very similar to double-clicks, except that
GDK_3BUTTON_PRESSis inserted after the third click. The order of the events is:GDK_BUTTON_PRESSGDK_BUTTON_RELEASEGDK_BUTTON_PRESSGDK_2BUTTON_PRESSGDK_BUTTON_RELEASEGDK_BUTTON_PRESSGDK_3BUTTON_PRESSGDK_BUTTON_RELEASE
For a double click to occur, the second button press must occur within ¼ of a second of the first. For a triple click to occur, the third button press must also occur within ½ second of the first button press.
See moreDeclaration
Swift
public protocol EventButtonProtocol
-
The
EventConfigureProtocolprotocol exposes the methods and properties of an underlyingGdkEventConfigureinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventConfigure. Alternatively, useEventConfigureRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when a window size or position has changed.
See moreDeclaration
Swift
public protocol EventConfigureProtocol
-
The
EventCrossingProtocolprotocol exposes the methods and properties of an underlyingGdkEventCrossinginstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventCrossing. Alternatively, useEventCrossingRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when the pointer enters or leaves a window.
See moreDeclaration
Swift
public protocol EventCrossingProtocol
-
The
EventDNDProtocolprotocol exposes the methods and properties of an underlyingGdkEventDNDinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventDND. Alternatively, useEventDNDRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated during DND operations.
See moreDeclaration
Swift
public protocol EventDNDProtocol
-
The
EventExposeProtocolprotocol exposes the methods and properties of an underlyingGdkEventExposeinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventExpose. Alternatively, useEventExposeRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when all or part of a window becomes visible and needs to be redrawn.
See moreDeclaration
Swift
public protocol EventExposeProtocol
-
The
EventFocusProtocolprotocol exposes the methods and properties of an underlyingGdkEventFocusinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventFocus. Alternatively, useEventFocusRefas a lighweight,unownedreference if you already have an instance you just want to use.Describes a change of keyboard focus.
See moreDeclaration
Swift
public protocol EventFocusProtocol
-
The
EventGrabBrokenProtocolprotocol exposes the methods and properties of an underlyingGdkEventGrabBrokeninstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventGrabBroken. Alternatively, useEventGrabBrokenRefas a lighweight,unownedreference if you already have an instance you just want to use.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
See moreGdkEventGrabBrokenevents.Declaration
Swift
public protocol EventGrabBrokenProtocol
-
The
EventKeyProtocolprotocol exposes the methods and properties of an underlyingGdkEventKeyinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventKey. Alternatively, useEventKeyRefas a lighweight,unownedreference if you already have an instance you just want to use.Describes a key press or key release event.
See moreDeclaration
Swift
public protocol EventKeyProtocol
-
The
EventMotionProtocolprotocol exposes the methods and properties of an underlyingGdkEventMotioninstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventMotion. Alternatively, useEventMotionRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when the pointer moves.
See moreDeclaration
Swift
public protocol EventMotionProtocol
-
The
EventOwnerChangeProtocolprotocol exposes the methods and properties of an underlyingGdkEventOwnerChangeinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventOwnerChange. Alternatively, useEventOwnerChangeRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when the owner of a selection changes. On X11, this information is only available if the X server supports the XFIXES extension.
See moreDeclaration
Swift
public protocol EventOwnerChangeProtocol
-
The
EventPadAxisProtocolprotocol exposes the methods and properties of an underlyingGdkEventPadAxisinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventPadAxis. Alternatively, useEventPadAxisRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated during
See moreGDK_SOURCE_TABLET_PADinteraction with tactile sensors.Declaration
Swift
public protocol EventPadAxisProtocol
-
The
EventPadButtonProtocolprotocol exposes the methods and properties of an underlyingGdkEventPadButtoninstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventPadButton. Alternatively, useEventPadButtonRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated during
See moreGDK_SOURCE_TABLET_PADbutton presses and releases.Declaration
Swift
public protocol EventPadButtonProtocol
-
The
EventPadGroupModeProtocolprotocol exposes the methods and properties of an underlyingGdkEventPadGroupModeinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventPadGroupMode. Alternatively, useEventPadGroupModeRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated during
See moreGDK_SOURCE_TABLET_PADmode switches in a group.Declaration
Swift
public protocol EventPadGroupModeProtocol
-
The
EventPropertyProtocolprotocol exposes the methods and properties of an underlyingGdkEventPropertyinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventProperty. Alternatively, useEventPropertyRefas a lighweight,unownedreference if you already have an instance you just want to use.Describes a property change on a window.
See moreDeclaration
Swift
public protocol EventPropertyProtocol
-
The
EventProximityProtocolprotocol exposes the methods and properties of an underlyingGdkEventProximityinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventProximity. Alternatively, useEventProximityRefas a lighweight,unownedreference if you already have an instance you just want to use.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.
See moreDeclaration
Swift
public protocol EventProximityProtocol
-
The
EventScrollProtocolprotocol exposes the methods and properties of an underlyingGdkEventScrollinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventScroll. Alternatively, useEventScrollRefas a lighweight,unownedreference if you already have an instance you just want to use.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
See moreGDK_SCROLL_SMOOTHscroll direction. For these, the scroll deltas can be obtained withgdk_event_get_scroll_deltas().Declaration
Swift
public protocol EventScrollProtocol
-
The
EventSelectionProtocolprotocol exposes the methods and properties of an underlyingGdkEventSelectioninstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventSelection. Alternatively, useEventSelectionRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when a selection is requested or ownership of a selection is taken over by another client application.
See moreDeclaration
Swift
public protocol EventSelectionProtocol
-
The
See moreEventSequenceProtocolprotocol exposes the methods and properties of an underlyingGdkEventSequenceinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventSequence. Alternatively, useEventSequenceRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol EventSequenceProtocol
-
The
EventSettingProtocolprotocol exposes the methods and properties of an underlyingGdkEventSettinginstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventSetting. Alternatively, useEventSettingRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when a setting is modified.
See moreDeclaration
Swift
public protocol EventSettingProtocol
-
The
EventTouchProtocolprotocol exposes the methods and properties of an underlyingGdkEventTouchinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventTouch. Alternatively, useEventTouchRefas a lighweight,unownedreference if you already have an instance you just want to use.Used for touch events.
typefield will be one ofGDK_TOUCH_BEGIN,GDK_TOUCH_UPDATE,GDK_TOUCH_ENDorGDK_TOUCH_CANCEL.Touch events are grouped into sequences by means of the
See moresequencefield, which can also be obtained withgdk_event_get_event_sequence(). Each sequence begins with aGDK_TOUCH_BEGINevent, followed by any number ofGDK_TOUCH_UPDATEevents, and ends with aGDK_TOUCH_END(orGDK_TOUCH_CANCEL) event. With multitouch devices, there may be several active sequences at the same time.Declaration
Swift
public protocol EventTouchProtocol
-
The
EventTouchpadPinchProtocolprotocol exposes the methods and properties of an underlyingGdkEventTouchpadPinchinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventTouchpadPinch. Alternatively, useEventTouchpadPinchRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated during touchpad swipe gestures.
See moreDeclaration
Swift
public protocol EventTouchpadPinchProtocol
-
The
EventTouchpadSwipeProtocolprotocol exposes the methods and properties of an underlyingGdkEventTouchpadSwipeinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventTouchpadSwipe. Alternatively, useEventTouchpadSwipeRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated during touchpad swipe gestures.
See moreDeclaration
Swift
public protocol EventTouchpadSwipeProtocol
-
The
EventVisibilityProtocolprotocol exposes the methods and properties of an underlyingGdkEventVisibilityinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventVisibility. Alternatively, useEventVisibilityRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when the window visibility status has changed.
See moreDeclaration
Swift
public protocol EventVisibilityProtocol
-
The
EventWindowStateProtocolprotocol exposes the methods and properties of an underlyingGdkEventWindowStateinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEventWindowState. Alternatively, useEventWindowStateRefas a lighweight,unownedreference if you already have an instance you just want to use.Generated when the state of a toplevel window changes.
See moreDeclaration
Swift
public protocol EventWindowStateProtocol
-
The
See moreFrameClockClassProtocolprotocol exposes the methods and properties of an underlyingGdkFrameClockClassinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeFrameClockClass. Alternatively, useFrameClockClassRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol FrameClockClassProtocol
-
The
FrameTimingsProtocolprotocol exposes the methods and properties of an underlyingGdkFrameTimingsinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeFrameTimings. Alternatively, useFrameTimingsRefas a lighweight,unownedreference if you already have an instance you just want to use.A
See moreGdkFrameTimingsobject holds timing information for a single frame of the application’s displays. To retrieveGdkFrameTimingsobjects, usegdk_frame_clock_get_timings()orgdk_frame_clock_get_current_timings(). The information inGdkFrameTimingsis useful for precise synchronization of video with the event or audio streams, and for measuring quality metrics for the application’s display, such as latency and jitter.Declaration
Swift
public protocol FrameTimingsProtocol
-
The
GeometryProtocolprotocol exposes the methods and properties of an underlyingGdkGeometryinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeGeometry. Alternatively, useGeometryRefas a lighweight,unownedreference if you already have an instance you just want to use.The
GdkGeometrystruct gives the window manager information about a window’s geometry constraints. Normally you would set these on the GTK+ level usinggtk_window_set_geometry_hints().GtkWindowthen sets the hints on theGdkWindowit creates.gdk_window_set_geometry_hints()expects the hints to be fully valid already and simply passes them to the window manager; in contrast,gtk_window_set_geometry_hints()performs some interpretation. For example,GtkWindowwill apply the hints to the geometry widget instead of the toplevel window, if you set a geometry widget. Also, themin_width/min_height/max_width/max_heightfields may be set to -1, andGtkWindowwill substitute the size request of the window or geometry widget. If the minimum size hint is not provided,GtkWindowwill use its requisition as the minimum size. If the minimum size is provided and a geometry widget is set,GtkWindowwill take the minimum size as the minimum size of the geometry widget rather than the entire window. The base size is treated similarly.The canonical use-case for
gtk_window_set_geometry_hints()is to get a terminal widget to resize properly. Here, the terminal text area should be the geometry widget;GtkWindowwill then automatically set the base size to the size of other widgets in the terminal window, such as the menubar and scrollbar. Then, thewidth_incandheight_incfields should be set to the size of one character in the terminal. Finally, the base size should be set to the size of one character. The net effect is that the minimum size of the terminal will have a 1x1 character terminal area, and only terminal sizes on the “character grid” will be allowed.Here’s an example of how the terminal example would be implemented, assuming a terminal area widget called “terminal” and a toplevel window “toplevel”:
(C Language Example):
GdkGeometry hints; hints.base_width = terminal->char_width; hints.base_height = terminal->char_height; hints.min_width = terminal->char_width; hints.min_height = terminal->char_height; hints.width_inc = terminal->char_width; hints.height_inc = terminal->char_height; gtk_window_set_geometry_hints (GTK_WINDOW (toplevel), GTK_WIDGET (terminal), &hints, GDK_HINT_RESIZE_INC | GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE);The other useful fields are the
See moremin_aspectandmax_aspectfields; these contain a width/height ratio as a floating point number. If a geometry widget is set, the aspect applies to the geometry widget rather than the entire window. The most common use of these hints is probably to setmin_aspectandmax_aspectto the same value, thus forcing the window to keep a constant aspect ratio.Declaration
Swift
public protocol GeometryProtocol
-
The
GLContextProtocolprotocol exposes the methods and properties of an underlyingGdkGLContextinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeGLContext. Alternatively, useGLContextRefas a lighweight,unownedreference if you already have an instance you just want to use.GdkGLContextis an object representing the platform-specific OpenGL drawing context.GdkGLContextsare created for aGdkWindowusinggdk_window_create_gl_context(), and the context will match theGdkVisualof the window.A
GdkGLContextis not tied to any particular normal framebuffer. For instance, it cannot draw to theGdkWindowback buffer. The GDK repaint system is in full control of the painting to that. Instead, you can create render buffers or textures and usegdk_cairo_draw_from_gl()in the draw function of your widget to draw them. Then GDK will handle the integration of your rendering with that of other widgets.Support for
GdkGLContextis platform-specific, context creation can fail, returningnilcontext.A
GdkGLContexthas to be made “current” in order to start using it, otherwise any OpenGL call will be ignored.Creating a new OpenGL context
In order to create a new
GdkGLContextinstance you need aGdkWindow, which you typically get during the realize call of a widget.A
GdkGLContextis not realized until eithergdk_gl_context_make_current(), or until it is realized usinggdk_gl_context_realize(). It is possible to specify details of the GL context like the OpenGL version to be used, or whether the GL context should have extra state validation enabled after callinggdk_window_create_gl_context()by callinggdk_gl_context_realize(). If the realization fails you have the option to change the settings of theGdkGLContextand try again.Using a GdkGLContext
You will need to make the
GdkGLContextthe current context before issuing OpenGL calls; the system sends OpenGL commands to whichever context is current. It is possible to have multiple contexts, so you always need to ensure that the one which you want to draw with is the current one before issuing commands:(C Language Example):
gdk_gl_context_make_current (context);You can now perform your drawing using OpenGL commands.
You can check which
See moreGdkGLContextis the current one by usinggdk_gl_context_get_current(); you can also unset anyGdkGLContextthat is currently set by callinggdk_gl_context_clear_current().Declaration
Swift
public protocol GLContextProtocol : ObjectProtocol
-
The
KeymapProtocolprotocol exposes the methods and properties of an underlyingGdkKeymapinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeKeymap. Alternatively, useKeymapRefas a lighweight,unownedreference if you already have an instance you just want to use.A
See moreGdkKeymapdefines the translation from keyboard state (including a hardware key, a modifier mask, and active keyboard group) to a keyval. This translation has two phases. The first phase is to determine the effective keyboard group and level for the keyboard state; the second phase is to look up the keycode/group/level triplet in the keymap and see what keyval it corresponds to.Declaration
Swift
public protocol KeymapProtocol : ObjectProtocol
-
The
KeymapKeyProtocolprotocol exposes the methods and properties of an underlyingGdkKeymapKeyinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeKeymapKey. Alternatively, useKeymapKeyRefas a lighweight,unownedreference if you already have an instance you just want to use.A
See moreGdkKeymapKeyis a hardware key that can be mapped to a keyval.Declaration
Swift
public protocol KeymapKeyProtocol
-
The
See moreMonitorClassProtocolprotocol exposes the methods and properties of an underlyingGdkMonitorClassinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeMonitorClass. Alternatively, useMonitorClassRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol MonitorClassProtocol
-
The
MonitorProtocolprotocol exposes the methods and properties of an underlyingGdkMonitorinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeMonitor. Alternatively, useMonitorRefas a lighweight,unownedreference if you already have an instance you just want to use.GdkMonitor objects represent the individual outputs that are associated with a
GdkDisplay. GdkDisplay has APIs to enumerate monitors withgdk_display_get_n_monitors()andgdk_display_get_monitor(), and to find particular monitors withgdk_display_get_primary_monitor()orgdk_display_get_monitor_at_window().GdkMonitor was introduced in GTK+ 3.22 and supersedes earlier APIs in GdkScreen to obtain monitor-related information.
See moreDeclaration
Swift
public protocol MonitorProtocol : ObjectProtocol
-
The
ScreenProtocolprotocol exposes the methods and properties of an underlyingGdkScreeninstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeScreen. Alternatively, useScreenRefas a lighweight,unownedreference if you already have an instance you just want to use.GdkScreenobjects are the GDK representation of the screen on which windows can be displayed and on which the pointer moves. X originally identified screens with physical screens, but nowadays it is more common to have a singleGdkScreenwhich combines several physical monitors (seegdk_screen_get_n_monitors()).GdkScreen is used throughout GDK and GTK+ to specify which screen the top level windows are to be displayed on. it is also used to query the screen specification and default settings such as the default visual (
See moregdk_screen_get_system_visual()), the dimensions of the physical monitors (gdk_screen_get_monitor_geometry()), etc.Declaration
Swift
public protocol ScreenProtocol : ObjectProtocol
-
The
PointProtocolprotocol exposes the methods and properties of an underlyingGdkPointinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seePoint. Alternatively, usePointRefas a lighweight,unownedreference if you already have an instance you just want to use.Defines the x and y coordinates of a point.
See moreDeclaration
Swift
public protocol PointProtocol
-
The
RGBAProtocolprotocol exposes the methods and properties of an underlyingGdkRGBAinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeRGBA. Alternatively, useRGBARefas a lighweight,unownedreference if you already have an instance you just want to use.A
See moreGdkRGBAis used to represent a (possibly translucent) color, in a way that is compatible with cairo’s notion of color.Declaration
Swift
public protocol RGBAProtocol
-
The
RectangleProtocolprotocol exposes the methods and properties of an underlyingGdkRectangleinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeRectangle. Alternatively, useRectangleRefas a lighweight,unownedreference if you already have an instance you just want to use.Defines the position and size of a rectangle. It is identical to
See morecairo_rectangle_int_t.Declaration
Swift
public protocol RectangleProtocol
-
The
TimeCoordProtocolprotocol exposes the methods and properties of an underlyingGdkTimeCoordinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeTimeCoord. Alternatively, useTimeCoordRefas a lighweight,unownedreference if you already have an instance you just want to use.A
See moreGdkTimeCoordstores a single event in a motion history.Declaration
Swift
public protocol TimeCoordProtocol
-
The
SeatProtocolprotocol exposes the methods and properties of an underlyingGdkSeatinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeSeat. Alternatively, useSeatRefas a lighweight,unownedreference if you already have an instance you just want to use.The
See moreGdkSeatobject represents a collection of input devices that belong to a user.Declaration
Swift
public protocol SeatProtocol : ObjectProtocol
-
The
VisualProtocolprotocol exposes the methods and properties of an underlyingGdkVisualinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeVisual. Alternatively, useVisualRefas a lighweight,unownedreference if you already have an instance you just want to use.A
See moreGdkVisualcontains information about a particular visual.Declaration
Swift
public protocol VisualProtocol : ObjectProtocol
-
The
See moreWindowProtocolprotocol exposes the methods and properties of an underlyingGdkWindowinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeWindow. Alternatively, useWindowRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol WindowProtocol : ObjectProtocol
-
The
WindowAttrProtocolprotocol exposes the methods and properties of an underlyingGdkWindowAttrinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeWindowAttr. Alternatively, useWindowAttrRefas a lighweight,unownedreference if you already have an instance you just want to use.Attributes to use for a newly-created window.
See moreDeclaration
Swift
public protocol WindowAttrProtocol
-
The
See moreWindowClassProtocolprotocol exposes the methods and properties of an underlyingGdkWindowClassinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeWindowClass. Alternatively, useWindowClassRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol WindowClassProtocol
-
The
See moreWindowRedirectProtocolprotocol exposes the methods and properties of an underlyingGdkWindowRedirectinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeWindowRedirect. Alternatively, useWindowRedirectRefas a lighweight,unownedreference if you already have an instance you just want to use.Declaration
Swift
public protocol WindowRedirectProtocol
-
The
EventProtocolprotocol exposes the methods and properties of an underlyingGdkEventinstance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, seeEvent. Alternatively, useEventRefas a lighweight,unownedreference if you already have an instance you just want to use.A
GdkEventcontains 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: (C Language Example):
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_PRESSthen the x coordinate of the button press can be accessed with: (C Language Example):GdkEvent *event; gdouble x; x = ((GdkEventButton*)event)->x;or: (C Language Example):
See moreGdkEvent *event; gdouble x; x = event->button.x;Declaration
Swift
public protocol EventProtocol
View on GitHub
Install in Dash
Protocols Reference