<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="gdk-Event-Structures">
<refmeta>
<refentrytitle role="top_of_page" id="gdk-Event-Structures.top_of_page">Event Structures</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GDK Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>Event Structures</refname>
<refpurpose>Data structures specific to each type of event</refpurpose>
</refnamediv>

<refsynopsisdiv id="gdk-Event-Structures.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>

#include &lt;gdk/gdk.h&gt;

union               <link linkend="GdkEvent">GdkEvent</link>;

                    <link linkend="GdkEventAny">GdkEventAny</link>;
                    <link linkend="GdkEventKey">GdkEventKey</link>;
                    <link linkend="GdkEventButton">GdkEventButton</link>;
                    <link linkend="GdkEventScroll">GdkEventScroll</link>;
                    <link linkend="GdkEventMotion">GdkEventMotion</link>;
                    <link linkend="GdkEventExpose">GdkEventExpose</link>;
                    <link linkend="GdkEventVisibility">GdkEventVisibility</link>;
                    <link linkend="GdkEventCrossing">GdkEventCrossing</link>;
                    <link linkend="GdkEventFocus">GdkEventFocus</link>;
                    <link linkend="GdkEventConfigure">GdkEventConfigure</link>;
                    <link linkend="GdkEventProperty">GdkEventProperty</link>;
                    <link linkend="GdkEventSelection">GdkEventSelection</link>;
typedef             <link linkend="GdkNativeWindow">GdkNativeWindow</link>;
                    <link linkend="GdkEventDND">GdkEventDND</link>;
                    <link linkend="GdkEventProximity">GdkEventProximity</link>;
                    <link linkend="GdkEventClient">GdkEventClient</link>;
                    <link linkend="GdkEventNoExpose">GdkEventNoExpose</link>;
                    <link linkend="GdkEventWindowState">GdkEventWindowState</link>;
                    <link linkend="GdkEventSetting">GdkEventSetting</link>;
                    <link linkend="GdkEventOwnerChange">GdkEventOwnerChange</link>;
                    <link linkend="GdkEventGrabBroken">GdkEventGrabBroken</link>;

enum                <link linkend="GdkScrollDirection">GdkScrollDirection</link>;
enum                <link linkend="GdkVisibilityState">GdkVisibilityState</link>;
enum                <link linkend="GdkCrossingMode">GdkCrossingMode</link>;
enum                <link linkend="GdkNotifyType">GdkNotifyType</link>;
enum                <link linkend="GdkPropertyState">GdkPropertyState</link>;
enum                <link linkend="GdkWindowState">GdkWindowState</link>;
enum                <link linkend="GdkSettingAction">GdkSettingAction</link>;
enum                <link linkend="GdkOwnerChange">GdkOwnerChange</link>;
</synopsis>
</refsynopsisdiv>









<refsect1 id="gdk-Event-Structures.description" role="desc">
<title role="desc.title">Description</title>
<para>
The event structs contain data specific to each type of event in GDK.
</para>
<note>
<para>
A common mistake is to forget to set the event mask of a widget so that the
required events are received. See <link linkend="gtk-widget-set-events"><function>gtk_widget_set_events()</function></link>.
</para>
</note>
</refsect1>

<refsect1 id="gdk-Event-Structures.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="GdkEvent" role="union">
<title>union GdkEvent</title>
<indexterm zone="GdkEvent"><primary sortas="Event">GdkEvent</primary></indexterm><programlisting>union GdkEvent
{
  GdkEventType		    type;
  GdkEventAny		    any;
  GdkEventExpose	    expose;
  GdkEventNoExpose	    no_expose;
  GdkEventVisibility	    visibility;
  GdkEventMotion	    motion;
  GdkEventButton	    button;
  GdkEventScroll            scroll;
  GdkEventKey		    key;
  GdkEventCrossing	    crossing;
  GdkEventFocus		    focus_change;
  GdkEventConfigure	    configure;
  GdkEventProperty	    property;
  GdkEventSelection	    selection;
  GdkEventOwnerChange  	    owner_change;
  GdkEventProximity	    proximity;
  GdkEventClient	    client;
  GdkEventDND               dnd;
  GdkEventWindowState       window_state;
  GdkEventSetting           setting;
  GdkEventGrabBroken        grab_broken;
};
</programlisting>
<para>
The <link linkend="GdkEvent"><type>GdkEvent</type></link> struct contains a union of all of the event structs,
and allows access to the data fields in a number of ways.
</para>
<para>
The event type is always the first field in all of the event structs, and
can always be accessed with the following code, no matter what type of event
it is:
<informalexample>
<programlisting>
  GdkEvent *event;
  GdkEventType type;
  type = event->type;
</programlisting>
</informalexample>
</para>
<para>
To access other fields of the event structs, the pointer to the event can be
cast to the appropriate event struct pointer, or the union member name can be
used. For example if the event type is <link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link> then the x coordinate
of the button press can be accessed with:
<informalexample>
<programlisting>
  GdkEvent *event;
  gdouble x;
  x = ((GdkEventButton*)event)->x;
</programlisting>
</informalexample>
or:
<informalexample>
<programlisting>
  GdkEvent *event;
  gdouble x;
  x = event->button.x;
</programlisting>
</informalexample>
</para></refsect2>
<refsect2 id="GdkEventAny" role="struct">
<title>GdkEventAny</title>
<indexterm zone="GdkEventAny"><primary sortas="EventAny">GdkEventAny</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
} GdkEventAny;
</programlisting>
<para>
Contains the fields which are common to all event structs.
Any event pointer can safely be cast to a pointer to a <link linkend="GdkEventAny"><type>GdkEventAny</type></link> to access
these fields.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using 
<function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventKey" role="struct">
<title>GdkEventKey</title>
<indexterm zone="GdkEventKey"><primary sortas="EventKey">GdkEventKey</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  guint32 time;
  guint state;
  guint keyval;
  gint length;
  gchar *string;
  guint16 hardware_keycode;
  guint8 group;
  guint is_modifier : 1;
} GdkEventKey;
</programlisting>
<para>
Describes a key press or key release event.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-KEY-PRESS--CAPS"><literal>GDK_KEY_PRESS</literal></link> or <link linkend="GDK-KEY-RELEASE--CAPS"><literal>GDK_KEY_RELEASE</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using 
<function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>state</structfield>;</term>
<listitem><simpara>a bit-mask representing the state of the modifier keys (e.g. Control,
Shift and Alt) and the pointer buttons. See <link linkend="GdkModifierType"><type>GdkModifierType</type></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>keyval</structfield>;</term>
<listitem><simpara>the key that was pressed or released. See the 
<filename>&lt;gdk/gdkkeysyms.h&gt;</filename>
header file for a complete list of GDK key codes.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint">gint</link>&#160;<structfield>length</structfield>;</term>
<listitem><simpara>the length of <parameter>string</parameter>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gchar">gchar</link>&#160;*<structfield>string</structfield>;</term>
<listitem><simpara>a string containing the an approximation of the text that
would result from this keypress. The only correct way to handle text
input of text is using input methods (see <link linkend="GtkIMContext"><type>GtkIMContext</type></link>), so this
field is deprecated and should never be used.
(<link linkend="gdk-unicode-to-keyval"><function>gdk_unicode_to_keyval()</function></link> provides a non-deprecated way of getting
an approximate translation for a key.) The string is encoded in the encoding
of the current locale (Note: this for backwards compatibility:
strings in GTK+ and GDK are typically in UTF-8.) and NUL-terminated.
In some cases, the translation of the key code will be a single
NUL byte, in which case looking at <parameter>length</parameter> is necessary to distinguish
it from the an empty translation.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint16">guint16</link>&#160;<structfield>hardware_keycode</structfield>;</term>
<listitem><simpara>the raw code of the key that was pressed or released.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint8">guint8</link>&#160;<structfield>group</structfield>;</term>
<listitem><simpara>the keyboard group.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>is_modifier</structfield>&#160;:&#160;1;</term>
<listitem><simpara>a flag that indicates if <parameter>hardware_keycode</parameter> is mapped to a
  modifier. Since 2.10
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventButton" role="struct">
<title>GdkEventButton</title>
<indexterm zone="GdkEventButton"><primary sortas="EventButton">GdkEventButton</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  guint32 time;
  gdouble x;
  gdouble y;
  gdouble *axes;
  guint state;
  guint button;
  GdkDevice *device;
  gdouble x_root, y_root;
} GdkEventButton;
</programlisting>
<para>
Used for button press and button release events. The
<structfield>type</structfield> field will be one of <link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link>,
<link linkend="GDK-2BUTTON-PRESS--CAPS"><literal>GDK_2BUTTON_PRESS</literal></link>, <link linkend="GDK-3BUTTON-PRESS--CAPS"><literal>GDK_3BUTTON_PRESS</literal></link>, and <link linkend="GDK-BUTTON-RELEASE--CAPS"><literal>GDK_BUTTON_RELEASE</literal></link>.
</para>
<para>
Double and triple-clicks result in a sequence of events being received.
For double-clicks the order of events will be:
<orderedlist>
<listitem><para><link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link></para></listitem>
<listitem><para><link linkend="GDK-BUTTON-RELEASE--CAPS"><literal>GDK_BUTTON_RELEASE</literal></link></para></listitem>
<listitem><para><link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link></para></listitem>
<listitem><para><link linkend="GDK-2BUTTON-PRESS--CAPS"><literal>GDK_2BUTTON_PRESS</literal></link></para></listitem>
<listitem><para><link linkend="GDK-BUTTON-RELEASE--CAPS"><literal>GDK_BUTTON_RELEASE</literal></link></para></listitem>
</orderedlist>
Note that the first click is received just like a normal
button press, while the second click results in a <link linkend="GDK-2BUTTON-PRESS--CAPS"><literal>GDK_2BUTTON_PRESS</literal></link> being
received just after the <link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link>.
</para>
<para>
Triple-clicks are very similar to double-clicks, except that <link linkend="GDK-3BUTTON-PRESS--CAPS"><literal>GDK_3BUTTON_PRESS</literal></link>
is inserted after the third click. The order of the events is:
<orderedlist>
<listitem><para><link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link></para></listitem>
<listitem><para><link linkend="GDK-BUTTON-RELEASE--CAPS"><literal>GDK_BUTTON_RELEASE</literal></link></para></listitem>
<listitem><para><link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link></para></listitem>
<listitem><para><link linkend="GDK-2BUTTON-PRESS--CAPS"><literal>GDK_2BUTTON_PRESS</literal></link></para></listitem>
<listitem><para><link linkend="GDK-BUTTON-RELEASE--CAPS"><literal>GDK_BUTTON_RELEASE</literal></link></para></listitem>
<listitem><para><link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link></para></listitem>
<listitem><para><link linkend="GDK-3BUTTON-PRESS--CAPS"><literal>GDK_3BUTTON_PRESS</literal></link></para></listitem>
<listitem><para><link linkend="GDK-BUTTON-RELEASE--CAPS"><literal>GDK_BUTTON_RELEASE</literal></link></para></listitem>
</orderedlist>
</para>
<para>
For a double click to occur, the second button press must occur within 1/4 of
a second of the first. For a triple click to occur, the third button press
must also occur within 1/2 second of the first button press.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-BUTTON-PRESS--CAPS"><literal>GDK_BUTTON_PRESS</literal></link>, <link linkend="GDK-2BUTTON-PRESS--CAPS"><literal>GDK_2BUTTON_PRESS</literal></link>,
<link linkend="GDK-3BUTTON-PRESS--CAPS"><literal>GDK_3BUTTON_PRESS</literal></link> or <link linkend="GDK-BUTTON-RELEASE--CAPS"><literal>GDK_BUTTON_RELEASE</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using 
<function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>x</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>y</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;*<structfield>axes</structfield>;</term>
<listitem><simpara>@x, <parameter>y</parameter> translated to the axes of <parameter>device</parameter>, or <link linkend="NULL--CAPS"><literal>NULL</literal></link> if <parameter>device</parameter> is 
  the mouse.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>state</structfield>;</term>
<listitem><simpara>a bit-mask representing the state of the modifier keys (e.g. Control,
Shift and Alt) and the pointer buttons. See <link linkend="GdkModifierType"><type>GdkModifierType</type></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>button</structfield>;</term>
<listitem><simpara>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.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkDevice">GdkDevice</link>&#160;*<structfield>device</structfield>;</term>
<listitem><simpara>the device where the event originated.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>x_root</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the root of the screen.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>y_root</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the root of the screen.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventScroll" role="struct">
<title>GdkEventScroll</title>
<indexterm zone="GdkEventScroll"><primary sortas="EventScroll">GdkEventScroll</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  guint32 time;
  gdouble x;
  gdouble y;
  guint state;
  GdkScrollDirection direction;
  GdkDevice *device;
  gdouble x_root, y_root;
} GdkEventScroll;
</programlisting>
<para>
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.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-SCROLL--CAPS"><literal>GDK_SCROLL</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using 
<function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>x</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>y</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>state</structfield>;</term>
<listitem><simpara>a bit-mask representing the state of the modifier keys (e.g. Control,
Shift and Alt) and the pointer buttons. See <link linkend="GdkModifierType"><type>GdkModifierType</type></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkScrollDirection">GdkScrollDirection</link>&#160;<structfield>direction</structfield>;</term>
<listitem><simpara>the direction to scroll to (one of <link linkend="GDK-SCROLL-UP--CAPS"><literal>GDK_SCROLL_UP</literal></link>, 
  <link linkend="GDK-SCROLL-DOWN--CAPS"><literal>GDK_SCROLL_DOWN</literal></link>, <link linkend="GDK-SCROLL-LEFT--CAPS"><literal>GDK_SCROLL_LEFT</literal></link> and <link linkend="GDK-SCROLL-RIGHT--CAPS"><literal>GDK_SCROLL_RIGHT</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkDevice">GdkDevice</link>&#160;*<structfield>device</structfield>;</term>
<listitem><simpara>the device where the event originated.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>x_root</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the root of the screen.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>y_root</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the root of the screen.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventMotion" role="struct">
<title>GdkEventMotion</title>
<indexterm zone="GdkEventMotion"><primary sortas="EventMotion">GdkEventMotion</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  guint32 time;
  gdouble x;
  gdouble y;
  gdouble *axes;
  guint state;
  gint16 is_hint;
  GdkDevice *device;
  gdouble x_root, y_root;
} GdkEventMotion;
</programlisting>
<para>
Generated when the pointer moves.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using 
<function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>x</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>y</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;*<structfield>axes</structfield>;</term>
<listitem><simpara>@x, <parameter>y</parameter> translated to the axes of <parameter>device</parameter>, or <link linkend="NULL--CAPS"><literal>NULL</literal></link> if <parameter>device</parameter> is 
  the mouse.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>state</structfield>;</term>
<listitem><simpara>a bit-mask representing the state of the modifier keys (e.g. Control,
  Shift and Alt) and the pointer buttons. See <link linkend="GdkModifierType"><type>GdkModifierType</type></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint16">gint16</link>&#160;<structfield>is_hint</structfield>;</term>
<listitem><simpara>set to 1 if this event is just a hint, see the <link linkend="GDK-POINTER-MOTION-HINT-MASK--CAPS"><literal>GDK_POINTER_MOTION_HINT_MASK</literal></link>
  value of <link linkend="GdkEventMask"><type>GdkEventMask</type></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkDevice">GdkDevice</link>&#160;*<structfield>device</structfield>;</term>
<listitem><simpara>the device where the event originated.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>x_root</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the root of the screen.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>y_root</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the root of the screen.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventExpose" role="struct">
<title>GdkEventExpose</title>
<indexterm zone="GdkEventExpose"><primary sortas="EventExpose">GdkEventExpose</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkRectangle area;
  GdkRegion *region;
  gint count; /* If non-zero, how many more events follow. */
} GdkEventExpose;
</programlisting>
<para>
Generated when all or part of a window becomes visible and needs to be
redrawn.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-EXPOSE--CAPS"><literal>GDK_EXPOSE</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using 
<function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkRectangle">GdkRectangle</link>&#160;<structfield>area</structfield>;</term>
<listitem><simpara>bounding box of <parameter>region</parameter>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkRegion">GdkRegion</link>&#160;*<structfield>region</structfield>;</term>
<listitem><simpara>the region that needs to be redrawn.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint">gint</link>&#160;<structfield>count</structfield>;</term>
<listitem><simpara>the number of contiguous <link linkend="GDK-EXPOSE--CAPS"><literal>GDK_EXPOSE</literal></link> events following this one.
The only use for this is "exposure compression", i.e. handling all contiguous
<link linkend="GDK-EXPOSE--CAPS"><literal>GDK_EXPOSE</literal></link> events in one go, though GDK performs some exposure compression
so this is not normally needed.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventVisibility" role="struct">
<title>GdkEventVisibility</title>
<indexterm zone="GdkEventVisibility"><primary sortas="EventVisibility">GdkEventVisibility</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkVisibilityState state;
} GdkEventVisibility;
</programlisting>
<para>
Generated when the window visibility status has changed.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-VISIBILITY-NOTIFY--CAPS"><literal>GDK_VISIBILITY_NOTIFY</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using 
<function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkVisibilityState">GdkVisibilityState</link>&#160;<structfield>state</structfield>;</term>
<listitem><simpara>the new visibility state (<link linkend="GDK-VISIBILITY-FULLY-OBSCURED--CAPS"><literal>GDK_VISIBILITY_FULLY_OBSCURED</literal></link>,
<link linkend="GDK-VISIBILITY-PARTIAL--CAPS"><literal>GDK_VISIBILITY_PARTIAL</literal></link> or <link linkend="GDK-VISIBILITY-UNOBSCURED--CAPS"><literal>GDK_VISIBILITY_UNOBSCURED</literal></link>).
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventCrossing" role="struct">
<title>GdkEventCrossing</title>
<indexterm zone="GdkEventCrossing"><primary sortas="EventCrossing">GdkEventCrossing</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkWindow *subwindow;
  guint32 time;
  gdouble x;
  gdouble y;
  gdouble x_root;
  gdouble y_root;
  GdkCrossingMode mode;
  GdkNotifyType detail;
  gboolean focus;
  guint state;
} GdkEventCrossing;
</programlisting>
<para>
Generated when the pointer enters or leaves a window.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-ENTER-NOTIFY--CAPS"><literal>GDK_ENTER_NOTIFY</literal></link> or <link linkend="GDK-LEAVE-NOTIFY--CAPS"><literal>GDK_LEAVE_NOTIFY</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using 
<function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>subwindow</structfield>;</term>
<listitem><simpara>the window that was entered or left.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>x</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>y</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>x_root</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the root of the screen.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gdouble">gdouble</link>&#160;<structfield>y_root</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the root of the screen.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkCrossingMode">GdkCrossingMode</link>&#160;<structfield>mode</structfield>;</term>
<listitem><simpara>the crossing mode (<link linkend="GDK-CROSSING-NORMAL--CAPS"><literal>GDK_CROSSING_NORMAL</literal></link>, <link linkend="GDK-CROSSING-GRAB--CAPS"><literal>GDK_CROSSING_GRAB</literal></link>, 
  <link linkend="GDK-CROSSING-UNGRAB--CAPS"><literal>GDK_CROSSING_UNGRAB</literal></link>, <link linkend="GDK-CROSSING-GTK-GRAB--CAPS"><literal>GDK_CROSSING_GTK_GRAB</literal></link>, <link linkend="GDK-CROSSING-GTK-UNGRAB--CAPS"><literal>GDK_CROSSING_GTK_UNGRAB</literal></link> or
  <link linkend="GDK-CROSSING-STATE-CHANGED--CAPS"><literal>GDK_CROSSING_STATE_CHANGED</literal></link>).  <link linkend="GDK-CROSSING-GTK-GRAB--CAPS"><literal>GDK_CROSSING_GTK_GRAB</literal></link>, <link linkend="GDK-CROSSING-GTK-UNGRAB--CAPS"><literal>GDK_CROSSING_GTK_UNGRAB</literal></link>,
  and <link linkend="GDK-CROSSING-STATE-CHANGED--CAPS"><literal>GDK_CROSSING_STATE_CHANGED</literal></link> were added in 2.14 and are always synthesized,
  never native.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkNotifyType">GdkNotifyType</link>&#160;<structfield>detail</structfield>;</term>
<listitem><simpara>the kind of crossing that happened (<link linkend="GDK-NOTIFY-INFERIOR--CAPS"><literal>GDK_NOTIFY_INFERIOR</literal></link>,
  <link linkend="GDK-NOTIFY-ANCESTOR--CAPS"><literal>GDK_NOTIFY_ANCESTOR</literal></link>, <link linkend="GDK-NOTIFY-VIRTUAL--CAPS"><literal>GDK_NOTIFY_VIRTUAL</literal></link>, <link linkend="GDK-NOTIFY-NONLINEAR--CAPS"><literal>GDK_NOTIFY_NONLINEAR</literal></link> or
  <link linkend="GDK-NOTIFY-NONLINEAR-VIRTUAL--CAPS"><literal>GDK_NOTIFY_NONLINEAR_VIRTUAL</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gboolean">gboolean</link>&#160;<structfield>focus</structfield>;</term>
<listitem><simpara>%TRUE if <parameter>window</parameter> is the focus window or an inferior.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>state</structfield>;</term>
<listitem><simpara>a bit-mask representing the state of the modifier keys (e.g. Control,
  Shift and Alt) and the pointer buttons. See <link linkend="GdkModifierType"><type>GdkModifierType</type></link>.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventFocus" role="struct">
<title>GdkEventFocus</title>
<indexterm zone="GdkEventFocus"><primary sortas="EventFocus">GdkEventFocus</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  gint16 in;
} GdkEventFocus;
</programlisting>
<para>
Describes a change of keyboard focus.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-FOCUS-CHANGE--CAPS"><literal>GDK_FOCUS_CHANGE</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint16">gint16</link>&#160;<structfield>in</structfield>;</term>
<listitem><simpara>%TRUE if the window has gained the keyboard focus, <link linkend="FALSE--CAPS"><literal>FALSE</literal></link> if it has lost
the focus.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventConfigure" role="struct">
<title>GdkEventConfigure</title>
<indexterm zone="GdkEventConfigure"><primary sortas="EventConfigure">GdkEventConfigure</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  gint x, y;
  gint width;
  gint height;
} GdkEventConfigure;
</programlisting>
<para>
Generated when a window size or position has changed.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-CONFIGURE--CAPS"><literal>GDK_CONFIGURE</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint">gint</link>&#160;<structfield>x</structfield>;</term>
<listitem><simpara>the new x coordinate of the window, relative to its parent.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint">gint</link>&#160;<structfield>y</structfield>;</term>
<listitem><simpara>the new y coordinate of the window, relative to its parent.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint">gint</link>&#160;<structfield>width</structfield>;</term>
<listitem><simpara>the new width of the window.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint">gint</link>&#160;<structfield>height</structfield>;</term>
<listitem><simpara>the new height of the window.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventProperty" role="struct">
<title>GdkEventProperty</title>
<indexterm zone="GdkEventProperty"><primary sortas="EventProperty">GdkEventProperty</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkAtom atom;
  guint32 time;
  guint state;
} GdkEventProperty;
</programlisting>
<para>
Describes a property change on a window.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-PROPERTY-NOTIFY--CAPS"><literal>GDK_PROPERTY_NOTIFY</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkAtom">GdkAtom</link>&#160;<structfield>atom</structfield>;</term>
<listitem><simpara>the property that was changed.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint">guint</link>&#160;<structfield>state</structfield>;</term>
<listitem><simpara>whether the property was changed (<link linkend="GDK-PROPERTY-NEW-VALUE--CAPS"><literal>GDK_PROPERTY_NEW_VALUE</literal></link>) or
deleted (<link linkend="GDK-PROPERTY-DELETE--CAPS"><literal>GDK_PROPERTY_DELETE</literal></link>).
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventSelection" role="struct">
<title>GdkEventSelection</title>
<indexterm zone="GdkEventSelection"><primary sortas="EventSelection">GdkEventSelection</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkAtom selection;
  GdkAtom target;
  GdkAtom property;
  guint32 time;
  GdkNativeWindow requestor;
} GdkEventSelection;
</programlisting>
<para>
Generated when a selection is requested or ownership of a selection
is taken over by another client application.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-SELECTION-CLEAR--CAPS"><literal>GDK_SELECTION_CLEAR</literal></link>, <link linkend="GDK-SELECTION-NOTIFY--CAPS"><literal>GDK_SELECTION_NOTIFY</literal></link> or 
<link linkend="GDK-SELECTION-REQUEST--CAPS"><literal>GDK_SELECTION_REQUEST</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkAtom">GdkAtom</link>&#160;<structfield>selection</structfield>;</term>
<listitem><simpara>the selection.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkAtom">GdkAtom</link>&#160;<structfield>target</structfield>;</term>
<listitem><simpara>the target to which the selection should be converted.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkAtom">GdkAtom</link>&#160;<structfield>property</structfield>;</term>
<listitem><simpara>the property in which to place the result of the conversion.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkNativeWindow">GdkNativeWindow</link>&#160;<structfield>requestor</structfield>;</term>
<listitem><simpara>the native window on which to place <parameter>property</parameter>.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkNativeWindow" role="typedef">
<title>GdkNativeWindow</title>
<indexterm zone="GdkNativeWindow"><primary sortas="NativeWindow">GdkNativeWindow</primary></indexterm><para>
Used to represent native windows (<type>Window</type>s for the X11 backend,
<type>HWND</type>s for Win32).
</para></refsect2>
<refsect2 id="GdkEventDND" role="struct">
<title>GdkEventDND</title>
<indexterm zone="GdkEventDND"><primary sortas="EventDND">GdkEventDND</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkDragContext *context;

  guint32 time;
  gshort x_root, y_root;
} GdkEventDND;
</programlisting>
<para>
Generated during DND operations.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-DRAG-ENTER--CAPS"><literal>GDK_DRAG_ENTER</literal></link>, <link linkend="GDK-DRAG-LEAVE--CAPS"><literal>GDK_DRAG_LEAVE</literal></link>,
  <link linkend="GDK-DRAG-MOTION--CAPS"><literal>GDK_DRAG_MOTION</literal></link>, <link linkend="GDK-DRAG-STATUS--CAPS"><literal>GDK_DRAG_STATUS</literal></link>, <link linkend="GDK-DROP-START--CAPS"><literal>GDK_DROP_START</literal></link> or <link linkend="GDK-DROP-FINISHED--CAPS"><literal>GDK_DROP_FINISHED</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkDragContext">GdkDragContext</link>&#160;*<structfield>context</structfield>;</term>
<listitem><simpara>the <link linkend="GdkDragContext"><type>GdkDragContext</type></link> for the current DND operation.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gshort">gshort</link>&#160;<structfield>x_root</structfield>;</term>
<listitem><simpara>the x coordinate of the pointer relative to the root of the screen,
  only set for <link linkend="GDK-DRAG-MOTION--CAPS"><literal>GDK_DRAG_MOTION</literal></link> and <link linkend="GDK-DROP-START--CAPS"><literal>GDK_DROP_START</literal></link>.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gshort">gshort</link>&#160;<structfield>y_root</structfield>;</term>
<listitem><simpara>the y coordinate of the pointer relative to the root of the screen,
  only set for <link linkend="GDK-DRAG-MOTION--CAPS"><literal>GDK_DRAG_MOTION</literal></link> and <link linkend="GDK-DROP-START--CAPS"><literal>GDK_DROP_START</literal></link>.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventProximity" role="struct">
<title>GdkEventProximity</title>
<indexterm zone="GdkEventProximity"><primary sortas="EventProximity">GdkEventProximity</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  guint32 time;
  GdkDevice *device;
} GdkEventProximity;
</programlisting>
<para>
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.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-PROXIMITY-IN--CAPS"><literal>GDK_PROXIMITY_IN</literal></link> or <link linkend="GDK-PROXIMITY-OUT--CAPS"><literal>GDK_PROXIMITY_OUT</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the time of the event in milliseconds.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkDevice">GdkDevice</link>&#160;*<structfield>device</structfield>;</term>
<listitem><simpara>the device where the event originated.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventClient" role="struct">
<title>GdkEventClient</title>
<indexterm zone="GdkEventClient"><primary sortas="EventClient">GdkEventClient</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkAtom message_type;
  gushort data_format;
  union {
    char b[20];
    short s[10];
    long l[5];
  } data;
} GdkEventClient;
</programlisting>
<para>
An event sent by another client application.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-CLIENT-EVENT--CAPS"><literal>GDK_CLIENT_EVENT</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkAtom">GdkAtom</link>&#160;<structfield>message_type</structfield>;</term>
<listitem><simpara>the type of the message, which can be defined by the
application.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gushort">gushort</link>&#160;<structfield>data_format</structfield>;</term>
<listitem><simpara>the format of the data, given as the number of bits in each
data element, i.e. 8, 16, or 32. 8-bit data uses the b array of the data
union, 16-bit data uses the s array, and 32-bit data uses the l array.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventNoExpose" role="struct">
<title>GdkEventNoExpose</title>
<indexterm zone="GdkEventNoExpose"><primary sortas="EventNoExpose">GdkEventNoExpose</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
} GdkEventNoExpose;
</programlisting>
<para>
Generated when the area of a <link linkend="GdkDrawable"><type>GdkDrawable</type></link> being copied, with <link linkend="gdk-draw-drawable"><function>gdk_draw_drawable()</function></link>
or <link linkend="gdk-window-copy-area"><function>gdk_window_copy_area()</function></link>, was completely available.
</para>
<para>
FIXME: add more here.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-NO-EXPOSE--CAPS"><literal>GDK_NO_EXPOSE</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventWindowState" role="struct">
<title>GdkEventWindowState</title>
<indexterm zone="GdkEventWindowState"><primary sortas="EventWindowState">GdkEventWindowState</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkWindowState changed_mask;
  GdkWindowState new_window_state;
} GdkEventWindowState;
</programlisting>
<para>
Generated when the state of a toplevel window changes.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-WINDOW-STATE--CAPS"><literal>GDK_WINDOW_STATE</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindowState">GdkWindowState</link>&#160;<structfield>changed_mask</structfield>;</term>
<listitem><simpara>mask specifying what flags have changed.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindowState">GdkWindowState</link>&#160;<structfield>new_window_state</structfield>;</term>
<listitem><simpara>the new window state, a combination of <link linkend="GdkWindowState"><type>GdkWindowState</type></link> bits.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventSetting" role="struct">
<title>GdkEventSetting</title>
<indexterm zone="GdkEventSetting"><primary sortas="EventSetting">GdkEventSetting</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkSettingAction action;
  char *name;
} GdkEventSetting;
</programlisting>
<para>
Generated when a setting is modified.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-SETTING--CAPS"><literal>GDK_SETTING</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkSettingAction">GdkSettingAction</link>&#160;<structfield>action</structfield>;</term>
<listitem><simpara>what happened to the setting (<link linkend="GDK-SETTING-ACTION-NEW--CAPS"><literal>GDK_SETTING_ACTION_NEW</literal></link>,
  <link linkend="GDK-SETTING-ACTION-CHANGED--CAPS"><literal>GDK_SETTING_ACTION_CHANGED</literal></link> or <link linkend="GDK-SETTING-ACTION-DELETED--CAPS"><literal>GDK_SETTING_ACTION_DELETED</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="char">char</link>&#160;*<structfield>name</structfield>;</term>
<listitem><simpara>the name of the setting.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkEventOwnerChange" role="struct" condition="since:2.6">
<title>GdkEventOwnerChange</title>
<indexterm zone="GdkEventOwnerChange" role="2.6"><primary sortas="EventOwnerChange">GdkEventOwnerChange</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  GdkNativeWindow owner;
  GdkOwnerChange reason;
  GdkAtom selection;
  guint32 time;
  guint32 selection_time;
} GdkEventOwnerChange;
</programlisting>
<para>
Generated when the owner of a selection changes. On X11, this information is
only available if the X server supports the XFIXES extension.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-OWNER-CHANGE--CAPS"><literal>GDK_OWNER_CHANGE</literal></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkNativeWindow">GdkNativeWindow</link>&#160;<structfield>owner</structfield>;</term>
<listitem><simpara>the new owner of the selection
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkOwnerChange">GdkOwnerChange</link>&#160;<structfield>reason</structfield>;</term>
<listitem><simpara>the reason for the ownership change as a <link linkend="GdkOwnerChange"><type>GdkOwnerChange</type></link> value
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkAtom">GdkAtom</link>&#160;<structfield>selection</structfield>;</term>
<listitem><simpara>the atom identifying the selection
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>time</structfield>;</term>
<listitem><simpara>the timestamp of the event
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="guint32">guint32</link>&#160;<structfield>selection_time</structfield>;</term>
<listitem><simpara>the time at which the selection ownership was taken over
</simpara></listitem>
</varlistentry>
</variablelist><para role="since">Since 2.6</para></refsect2>
<refsect2 id="GdkEventGrabBroken" role="struct" condition="since:2.8">
<title>GdkEventGrabBroken</title>
<indexterm zone="GdkEventGrabBroken" role="2.8"><primary sortas="EventGrabBroken">GdkEventGrabBroken</primary></indexterm><programlisting>typedef struct {
  GdkEventType type;
  GdkWindow *window;
  gint8 send_event;
  gboolean keyboard;
  gboolean implicit;
  GdkWindow *grab_window;
} GdkEventGrabBroken;
</programlisting>
<para>
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 <link linkend="GdkEventGrabBroken"><type>GdkEventGrabBroken</type></link> events.
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="GdkEventType">GdkEventType</link>&#160;<structfield>type</structfield>;</term>
<listitem><simpara>the type of the event (<link linkend="GDK-GRAB-BROKEN--CAPS"><literal>GDK_GRAB_BROKEN</literal></link>)
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>window</structfield>;</term>
<listitem><simpara>the window which received the event, i.e. the window
 that previously owned the grab
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gint8">gint8</link>&#160;<structfield>send_event</structfield>;</term>
<listitem><simpara>%TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gboolean">gboolean</link>&#160;<structfield>keyboard</structfield>;</term>
<listitem><simpara>%TRUE if a keyboard grab was broken, <link linkend="FALSE--CAPS"><literal>FALSE</literal></link> if a pointer 
  grab was broken
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="gboolean">gboolean</link>&#160;<structfield>implicit</structfield>;</term>
<listitem><simpara>%TRUE if the broken grab was implicit
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="GdkWindow">GdkWindow</link>&#160;*<structfield>grab_window</structfield>;</term>
<listitem><simpara>If this event is caused by another grab in the same 
  application, <parameter>grab_window</parameter> contains the new grab window. Otherwise
  <parameter>grab_window</parameter> is <link linkend="NULL--CAPS"><literal>NULL</literal></link>.
</simpara></listitem>
</varlistentry>
</variablelist><para role="since">Since 2.8</para></refsect2>
<refsect2 id="GdkScrollDirection" role="enum">
<title>enum GdkScrollDirection</title>
<indexterm zone="GdkScrollDirection"><primary sortas="ScrollDirection">GdkScrollDirection</primary></indexterm><programlisting>typedef enum
{
  GDK_SCROLL_UP,
  GDK_SCROLL_DOWN,
  GDK_SCROLL_LEFT,
  GDK_SCROLL_RIGHT
} GdkScrollDirection;
</programlisting>
<para>
Specifies the direction for <link linkend="GdkEventScroll"><type>GdkEventScroll</type></link>.
</para><variablelist role="enum">
<varlistentry id="GDK-SCROLL-UP--CAPS" role="constant">
<term><literal>GDK_SCROLL_UP</literal></term>
<listitem><simpara>the window is scrolled up.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-SCROLL-DOWN--CAPS" role="constant">
<term><literal>GDK_SCROLL_DOWN</literal></term>
<listitem><simpara>the window is scrolled down.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-SCROLL-LEFT--CAPS" role="constant">
<term><literal>GDK_SCROLL_LEFT</literal></term>
<listitem><simpara>the window is scrolled to the left.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-SCROLL-RIGHT--CAPS" role="constant">
<term><literal>GDK_SCROLL_RIGHT</literal></term>
<listitem><simpara>the window is scrolled to the right.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkVisibilityState" role="enum">
<title>enum GdkVisibilityState</title>
<indexterm zone="GdkVisibilityState"><primary sortas="VisibilityState">GdkVisibilityState</primary></indexterm><programlisting>typedef enum
{
  GDK_VISIBILITY_UNOBSCURED,
  GDK_VISIBILITY_PARTIAL,
  GDK_VISIBILITY_FULLY_OBSCURED
} GdkVisibilityState;
</programlisting>
<para>
Specifies the visiblity status of a window for a <link linkend="GdkEventVisibility"><type>GdkEventVisibility</type></link>.
</para><variablelist role="enum">
<varlistentry id="GDK-VISIBILITY-UNOBSCURED--CAPS" role="constant">
<term><literal>GDK_VISIBILITY_UNOBSCURED</literal></term>
<listitem><simpara>the window is completely visible.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-VISIBILITY-PARTIAL--CAPS" role="constant">
<term><literal>GDK_VISIBILITY_PARTIAL</literal></term>
<listitem><simpara>the window is partially visible.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-VISIBILITY-FULLY-OBSCURED--CAPS" role="constant">
<term><literal>GDK_VISIBILITY_FULLY_OBSCURED</literal></term>
<listitem><simpara>the window is not visible at all.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkCrossingMode" role="enum">
<title>enum GdkCrossingMode</title>
<indexterm zone="GdkCrossingMode"><primary sortas="CrossingMode">GdkCrossingMode</primary></indexterm><programlisting>typedef enum
{
  GDK_CROSSING_NORMAL,
  GDK_CROSSING_GRAB,
  GDK_CROSSING_UNGRAB,
  GDK_CROSSING_GTK_GRAB,
  GDK_CROSSING_GTK_UNGRAB,
  GDK_CROSSING_STATE_CHANGED
} GdkCrossingMode;
</programlisting>
<para>
Specifies the crossing mode for <link linkend="GdkEventCrossing"><type>GdkEventCrossing</type></link>.
</para><variablelist role="enum">
<varlistentry id="GDK-CROSSING-NORMAL--CAPS" role="constant">
<term><literal>GDK_CROSSING_NORMAL</literal></term>
<listitem><simpara>crossing because of pointer motion.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-CROSSING-GRAB--CAPS" role="constant">
<term><literal>GDK_CROSSING_GRAB</literal></term>
<listitem><simpara>crossing because a grab is activated.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-CROSSING-UNGRAB--CAPS" role="constant">
<term><literal>GDK_CROSSING_UNGRAB</literal></term>
<listitem><simpara>crossing because a grab is deactivated.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-CROSSING-GTK-GRAB--CAPS" role="constant">
<term><literal>GDK_CROSSING_GTK_GRAB</literal></term>
<listitem><simpara>crossing because a GTK+ grab is activated.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-CROSSING-GTK-UNGRAB--CAPS" role="constant">
<term><literal>GDK_CROSSING_GTK_UNGRAB</literal></term>
<listitem><simpara>crossing because a GTK+ grab is deactivated.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-CROSSING-STATE-CHANGED--CAPS" role="constant">
<term><literal>GDK_CROSSING_STATE_CHANGED</literal></term>
<listitem><simpara>crossing because a GTK+ widget changed state (e.g.
   sensitivity).
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkNotifyType" role="enum">
<title>enum GdkNotifyType</title>
<indexterm zone="GdkNotifyType"><primary sortas="NotifyType">GdkNotifyType</primary></indexterm><programlisting>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;
</programlisting>
<para>
Specifies the kind of crossing for <link linkend="GdkEventCrossing"><type>GdkEventCrossing</type></link>.
</para>
<para>
See the X11 protocol specification of <type>LeaveNotify</type> for
full details of crossing event generation.
</para><variablelist role="enum">
<varlistentry id="GDK-NOTIFY-ANCESTOR--CAPS" role="constant">
<term><literal>GDK_NOTIFY_ANCESTOR</literal></term>
<listitem><simpara>the window is entered from an ancestor or 
   left towards an ancestor.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-NOTIFY-VIRTUAL--CAPS" role="constant">
<term><literal>GDK_NOTIFY_VIRTUAL</literal></term>
<listitem><simpara>the pointer moves between an ancestor and an 
    inferior of the window.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-NOTIFY-INFERIOR--CAPS" role="constant">
<term><literal>GDK_NOTIFY_INFERIOR</literal></term>
<listitem><simpara>the window is entered from an inferior or 
   left towards an inferior.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-NOTIFY-NONLINEAR--CAPS" role="constant">
<term><literal>GDK_NOTIFY_NONLINEAR</literal></term>
<listitem><simpara> the window is entered from or left towards 
   a window which is neither an ancestor nor an inferior.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-NOTIFY-NONLINEAR-VIRTUAL--CAPS" role="constant">
<term><literal>GDK_NOTIFY_NONLINEAR_VIRTUAL</literal></term>
<listitem><simpara>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.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-NOTIFY-UNKNOWN--CAPS" role="constant">
<term><literal>GDK_NOTIFY_UNKNOWN</literal></term>
<listitem><simpara>an unknown type of enter/leave event occurred.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkPropertyState" role="enum">
<title>enum GdkPropertyState</title>
<indexterm zone="GdkPropertyState"><primary sortas="PropertyState">GdkPropertyState</primary></indexterm><programlisting>typedef enum
{
  GDK_PROPERTY_NEW_VALUE,
  GDK_PROPERTY_DELETE
} GdkPropertyState;
</programlisting>
<para>
Specifies the type of a property change for a <link linkend="GdkEventProperty"><type>GdkEventProperty</type></link>.
</para><variablelist role="enum">
<varlistentry id="GDK-PROPERTY-NEW-VALUE--CAPS" role="constant">
<term><literal>GDK_PROPERTY_NEW_VALUE</literal></term>
<listitem><simpara>the property value was changed.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-PROPERTY-DELETE--CAPS" role="constant">
<term><literal>GDK_PROPERTY_DELETE</literal></term>
<listitem><simpara>the property was deleted.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkWindowState" role="enum">
<title>enum GdkWindowState</title>
<indexterm zone="GdkWindowState"><primary sortas="WindowState">GdkWindowState</primary></indexterm><programlisting>typedef enum
{
  GDK_WINDOW_STATE_WITHDRAWN  = 1 &lt;&lt; 0,
  GDK_WINDOW_STATE_ICONIFIED  = 1 &lt;&lt; 1,
  GDK_WINDOW_STATE_MAXIMIZED  = 1 &lt;&lt; 2,
  GDK_WINDOW_STATE_STICKY     = 1 &lt;&lt; 3,
  GDK_WINDOW_STATE_FULLSCREEN = 1 &lt;&lt; 4,
  GDK_WINDOW_STATE_ABOVE      = 1 &lt;&lt; 5,
  GDK_WINDOW_STATE_BELOW      = 1 &lt;&lt; 6
} GdkWindowState;
</programlisting>
<para>
Specifies the state of a toplevel window.
</para><variablelist role="enum">
<varlistentry id="GDK-WINDOW-STATE-WITHDRAWN--CAPS" role="constant">
<term><literal>GDK_WINDOW_STATE_WITHDRAWN</literal></term>
<listitem><simpara>the window is not shown.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-WINDOW-STATE-ICONIFIED--CAPS" role="constant">
<term><literal>GDK_WINDOW_STATE_ICONIFIED</literal></term>
<listitem><simpara>the window is minimized.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-WINDOW-STATE-MAXIMIZED--CAPS" role="constant">
<term><literal>GDK_WINDOW_STATE_MAXIMIZED</literal></term>
<listitem><simpara>the window is maximized.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-WINDOW-STATE-STICKY--CAPS" role="constant">
<term><literal>GDK_WINDOW_STATE_STICKY</literal></term>
<listitem><simpara>the window is sticky.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-WINDOW-STATE-FULLSCREEN--CAPS" role="constant">
<term><literal>GDK_WINDOW_STATE_FULLSCREEN</literal></term>
<listitem><simpara>the window is maximized without decorations.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-WINDOW-STATE-ABOVE--CAPS" role="constant">
<term><literal>GDK_WINDOW_STATE_ABOVE</literal></term>
<listitem><simpara>the window is kept above other windows.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-WINDOW-STATE-BELOW--CAPS" role="constant">
<term><literal>GDK_WINDOW_STATE_BELOW</literal></term>
<listitem><simpara>the window is kept below other windows.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkSettingAction" role="enum">
<title>enum GdkSettingAction</title>
<indexterm zone="GdkSettingAction"><primary sortas="SettingAction">GdkSettingAction</primary></indexterm><programlisting>typedef enum
{
  GDK_SETTING_ACTION_NEW,
  GDK_SETTING_ACTION_CHANGED,
  GDK_SETTING_ACTION_DELETED
} GdkSettingAction;
</programlisting>
<para>
Specifies the kind of modification applied to a setting in a <link linkend="GdkEventSetting"><type>GdkEventSetting</type></link>.
</para><variablelist role="enum">
<varlistentry id="GDK-SETTING-ACTION-NEW--CAPS" role="constant">
<term><literal>GDK_SETTING_ACTION_NEW</literal></term>
<listitem><simpara>a setting was added.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-SETTING-ACTION-CHANGED--CAPS" role="constant">
<term><literal>GDK_SETTING_ACTION_CHANGED</literal></term>
<listitem><simpara>a setting was changed.
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-SETTING-ACTION-DELETED--CAPS" role="constant">
<term><literal>GDK_SETTING_ACTION_DELETED</literal></term>
<listitem><simpara>a setting was deleted.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="GdkOwnerChange" role="enum">
<title>enum GdkOwnerChange</title>
<indexterm zone="GdkOwnerChange"><primary sortas="OwnerChange">GdkOwnerChange</primary></indexterm><programlisting>typedef enum
{
  GDK_OWNER_CHANGE_NEW_OWNER,
  GDK_OWNER_CHANGE_DESTROY,
  GDK_OWNER_CHANGE_CLOSE
} GdkOwnerChange;
</programlisting>
<para>
Specifies why a selection ownership was changed.
</para><variablelist role="enum">
<varlistentry id="GDK-OWNER-CHANGE-NEW-OWNER--CAPS" role="constant">
<term><literal>GDK_OWNER_CHANGE_NEW_OWNER</literal></term>
<listitem><simpara>some other app claimed the ownership
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-OWNER-CHANGE-DESTROY--CAPS" role="constant">
<term><literal>GDK_OWNER_CHANGE_DESTROY</literal></term>
<listitem><simpara>the window was destroyed
</simpara></listitem>
</varlistentry>
<varlistentry id="GDK-OWNER-CHANGE-CLOSE--CAPS" role="constant">
<term><literal>GDK_OWNER_CHANGE_CLOSE</literal></term>
<listitem><simpara>the client was closed
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
