]> Pileus Git - ~andy/gtk/blob - docs/reference/gdk/tmpl/event_structs.sgml
Make 3.0 parallel-installable to 2.x
[~andy/gtk] / docs / reference / gdk / tmpl / event_structs.sgml
1 <!-- ##### SECTION Title ##### -->
2 Event Structures
3
4 <!-- ##### SECTION Short_Description ##### -->
5 Data structures specific to each type of event
6
7 <!-- ##### SECTION Long_Description ##### -->
8 <para>
9 The event structs contain data specific to each type of event in GDK.
10 </para>
11 <note>
12 <para>
13 A common mistake is to forget to set the event mask of a widget so that the
14 required events are received. See gtk_widget_set_events().
15 </para>
16 </note>
17
18 <!-- ##### SECTION See_Also ##### -->
19 <para>
20
21 </para>
22
23 <!-- ##### SECTION Stability_Level ##### -->
24
25
26 <!-- ##### SECTION Image ##### -->
27
28
29 <!-- ##### UNION GdkEvent ##### -->
30 <para>
31 The #GdkEvent struct contains a union of all of the event structs,
32 and allows access to the data fields in a number of ways.
33 </para>
34 <para>
35 The event type is always the first field in all of the event structs, and
36 can always be accessed with the following code, no matter what type of event
37 it is:
38 <informalexample>
39 <programlisting>
40   GdkEvent *event;  
41   GdkEventType type;
42
43   type = event->type;
44 </programlisting>
45 </informalexample>
46 </para>
47
48 <para>
49 To access other fields of the event structs, the pointer to the event can be
50 cast to the appropriate event struct pointer, or the union member name can be
51 used. For example if the event type is %GDK_BUTTON_PRESS then the x coordinate
52 of the button press can be accessed with:
53 <informalexample>
54 <programlisting>
55   GdkEvent *event;  
56   gdouble x;
57
58   x = ((GdkEventButton*)event)->x;
59 </programlisting>
60 </informalexample>
61 or:
62 <informalexample>
63 <programlisting>
64   GdkEvent *event;  
65   gdouble x;
66
67   x = event->button.x;
68 </programlisting>
69 </informalexample>
70 </para>
71
72
73 <!-- ##### STRUCT GdkEventAny ##### -->
74 <para>
75 Contains the fields which are common to all event structs.
76 Any event pointer can safely be cast to a pointer to a #GdkEventAny to access
77 these fields.
78 </para>
79
80 @type: the type of the event.
81 @window: the window which received the event.
82 @send_event: %TRUE if the event was sent explicitly (e.g. using 
83 <function>XSendEvent</function>).
84
85 <!-- ##### STRUCT GdkEventKey ##### -->
86 <para>
87 Describes a key press or key release event.
88 </para>
89
90 @type: the type of the event (%GDK_KEY_PRESS or %GDK_KEY_RELEASE).
91 @window: the window which received the event.
92 @send_event: %TRUE if the event was sent explicitly (e.g. using 
93 <function>XSendEvent</function>).
94 @time: the time of the event in milliseconds.
95 @state: a bit-mask representing the state of the modifier keys (e.g. Control,
96 Shift and Alt) and the pointer buttons. See #GdkModifierType.
97 @keyval: the key that was pressed or released. See the 
98 <filename>&lt;gdk/gdkkeysyms.h&gt;</filename>
99 header file for a complete list of GDK key codes.
100 @length: the length of @string.
101 @string: a string containing the an approximation of the text that
102 would result from this keypress. The only correct way to handle text
103 input of text is using input methods (see #GtkIMContext), so this
104 field is deprecated and should never be used.
105 (gdk_unicode_to_keyval() provides a non-deprecated way of getting
106 an approximate translation for a key.) The string is encoded in the encoding
107 of the current locale (Note: this for backwards compatibility:
108 strings in GTK+ and GDK are typically in UTF-8.) and NUL-terminated.
109 In some cases, the translation of the key code will be a single
110 NUL byte, in which case looking at @length is necessary to distinguish
111 it from the an empty translation.
112 @hardware_keycode: the raw code of the key that was pressed or released.
113 @group: the keyboard group.
114 @is_modifier: a flag that indicates if @hardware_keycode is mapped to a
115   modifier. Since 2.10
116
117 <!-- ##### STRUCT GdkEventButton ##### -->
118 <para>
119 Used for button press and button release events. The
120 <structfield>type</structfield> field will be one of %GDK_BUTTON_PRESS,
121 %GDK_2BUTTON_PRESS, %GDK_3BUTTON_PRESS, and %GDK_BUTTON_RELEASE.
122 </para>
123 <para>
124 Double and triple-clicks result in a sequence of events being received.
125 For double-clicks the order of events will be:
126 <orderedlist>
127 <listitem><para>%GDK_BUTTON_PRESS</para></listitem>
128 <listitem><para>%GDK_BUTTON_RELEASE</para></listitem>
129 <listitem><para>%GDK_BUTTON_PRESS</para></listitem>
130 <listitem><para>%GDK_2BUTTON_PRESS</para></listitem>
131 <listitem><para>%GDK_BUTTON_RELEASE</para></listitem>
132 </orderedlist>
133 Note that the first click is received just like a normal
134 button press, while the second click results in a %GDK_2BUTTON_PRESS being
135 received just after the %GDK_BUTTON_PRESS.
136 </para>
137 <para>
138 Triple-clicks are very similar to double-clicks, except that %GDK_3BUTTON_PRESS
139 is inserted after the third click. The order of the events is:
140 <orderedlist>
141 <listitem><para>%GDK_BUTTON_PRESS</para></listitem>
142 <listitem><para>%GDK_BUTTON_RELEASE</para></listitem>
143 <listitem><para>%GDK_BUTTON_PRESS</para></listitem>
144 <listitem><para>%GDK_2BUTTON_PRESS</para></listitem>
145 <listitem><para>%GDK_BUTTON_RELEASE</para></listitem>
146 <listitem><para>%GDK_BUTTON_PRESS</para></listitem>
147 <listitem><para>%GDK_3BUTTON_PRESS</para></listitem>
148 <listitem><para>%GDK_BUTTON_RELEASE</para></listitem>
149 </orderedlist>
150 </para>
151 <para>
152 For a double click to occur, the second button press must occur within 1/4 of
153 a second of the first. For a triple click to occur, the third button press
154 must also occur within 1/2 second of the first button press.
155 </para>
156
157 @type: the type of the event (%GDK_BUTTON_PRESS, %GDK_2BUTTON_PRESS,
158 %GDK_3BUTTON_PRESS or %GDK_BUTTON_RELEASE).
159 @window: the window which received the event.
160 @send_event: %TRUE if the event was sent explicitly (e.g. using 
161 <function>XSendEvent</function>).
162 @time: the time of the event in milliseconds.
163 @x: the x coordinate of the pointer relative to the window.
164 @y: the y coordinate of the pointer relative to the window.
165 @axes: @x, @y translated to the axes of @device, or %NULL if @device is 
166   the mouse.
167 @state: a bit-mask representing the state of the modifier keys (e.g. Control,
168 Shift and Alt) and the pointer buttons. See #GdkModifierType.
169 @button: the button which was pressed or released, numbered from 1 to 5.
170 Normally button 1 is the left mouse button, 2 is the middle button,
171 and 3 is the right button. On 2-button mice, the middle button can often
172 be simulated by pressing both mouse buttons together.
173 @device: the device where the event originated.
174 @x_root: the x coordinate of the pointer relative to the root of the screen.
175 @y_root: the y coordinate of the pointer relative to the root of the screen.
176
177 <!-- ##### STRUCT GdkEventScroll ##### -->
178 <para>
179 Generated from button presses for the buttons 4 to 7. Wheel mice are 
180 usually configured to generate button press events for buttons 4 and 5
181 when the wheel is turned.
182 </para>
183
184 @type: the type of the event (%GDK_SCROLL).
185 @window: the window which received the event.
186 @send_event: %TRUE if the event was sent explicitly (e.g. using 
187 <function>XSendEvent</function>).
188 @time: the time of the event in milliseconds.
189 @x: the x coordinate of the pointer relative to the window.
190 @y: the y coordinate of the pointer relative to the window.
191 @state: a bit-mask representing the state of the modifier keys (e.g. Control,
192 Shift and Alt) and the pointer buttons. See #GdkModifierType.
193 @direction: the direction to scroll to (one of %GDK_SCROLL_UP, 
194   %GDK_SCROLL_DOWN, %GDK_SCROLL_LEFT and %GDK_SCROLL_RIGHT).
195 @device: the device where the event originated.
196 @x_root: the x coordinate of the pointer relative to the root of the screen.
197 @y_root: the y coordinate of the pointer relative to the root of the screen.
198
199 <!-- ##### STRUCT GdkEventMotion ##### -->
200 <para>
201 Generated when the pointer moves.
202 </para>
203
204 @type: the type of the event.
205 @window: the window which received the event.
206 @send_event: %TRUE if the event was sent explicitly (e.g. using 
207 <function>XSendEvent</function>).
208 @time: the time of the event in milliseconds.
209 @x: the x coordinate of the pointer relative to the window.
210 @y: the y coordinate of the pointer relative to the window.
211 @axes: @x, @y translated to the axes of @device, or %NULL if @device is 
212   the mouse.
213 @state: a bit-mask representing the state of the modifier keys (e.g. Control,
214   Shift and Alt) and the pointer buttons. See #GdkModifierType.
215 @is_hint: set to 1 if this event is just a hint, see the %GDK_POINTER_MOTION_HINT_MASK
216   value of #GdkEventMask.
217 @device: the device where the event originated.
218 @x_root: the x coordinate of the pointer relative to the root of the screen.
219 @y_root: the y coordinate of the pointer relative to the root of the screen.
220
221 <!-- ##### STRUCT GdkEventExpose ##### -->
222 <para>
223 Generated when all or part of a window becomes visible and needs to be
224 redrawn.
225 </para>
226
227 @type: the type of the event (%GDK_EXPOSE or %GDK_DAMAGE).
228 @window: the window which received the event.
229 @send_event: %TRUE if the event was sent explicitly (e.g. using 
230 <function>XSendEvent</function>).
231 @area: bounding box of @region.
232 @region: the region that needs to be redrawn.
233 @count: the number of contiguous %GDK_EXPOSE events following this one.
234 The only use for this is "exposure compression", i.e. handling all contiguous
235 %GDK_EXPOSE events in one go, though GDK performs some exposure compression
236 so this is not normally needed.
237
238 <!-- ##### STRUCT GdkEventVisibility ##### -->
239 <para>
240 Generated when the window visibility status has changed.
241 </para>
242
243 @type: the type of the event (%GDK_VISIBILITY_NOTIFY).
244 @window: the window which received the event.
245 @send_event: %TRUE if the event was sent explicitly (e.g. using 
246 <function>XSendEvent</function>).
247 @state: the new visibility state (%GDK_VISIBILITY_FULLY_OBSCURED,
248 %GDK_VISIBILITY_PARTIAL or %GDK_VISIBILITY_UNOBSCURED).
249
250 <!-- ##### STRUCT GdkEventCrossing ##### -->
251 <para>
252 Generated when the pointer enters or leaves a window.
253 </para>
254
255 @type: the type of the event (%GDK_ENTER_NOTIFY or %GDK_LEAVE_NOTIFY).
256 @window: the window which received the event.
257 @send_event: %TRUE if the event was sent explicitly (e.g. using 
258 <function>XSendEvent</function>).
259 @subwindow: the window that was entered or left.
260 @time: the time of the event in milliseconds.
261 @x: the x coordinate of the pointer relative to the window.
262 @y: the y coordinate of the pointer relative to the window.
263 @x_root: the x coordinate of the pointer relative to the root of the screen.
264 @y_root: the y coordinate of the pointer relative to the root of the screen.
265 @mode: the crossing mode (%GDK_CROSSING_NORMAL, %GDK_CROSSING_GRAB, 
266   %GDK_CROSSING_UNGRAB, %GDK_CROSSING_GTK_GRAB, %GDK_CROSSING_GTK_UNGRAB or
267   %GDK_CROSSING_STATE_CHANGED).  %GDK_CROSSING_GTK_GRAB, %GDK_CROSSING_GTK_UNGRAB,
268   and %GDK_CROSSING_STATE_CHANGED were added in 2.14 and are always synthesized,
269   never native.
270 @detail: the kind of crossing that happened (%GDK_NOTIFY_INFERIOR,
271   %GDK_NOTIFY_ANCESTOR, %GDK_NOTIFY_VIRTUAL, %GDK_NOTIFY_NONLINEAR or
272   %GDK_NOTIFY_NONLINEAR_VIRTUAL).
273 @focus: %TRUE if @window is the focus window or an inferior.
274 @state: a bit-mask representing the state of the modifier keys (e.g. Control,
275   Shift and Alt) and the pointer buttons. See #GdkModifierType.
276
277 <!-- ##### STRUCT GdkEventFocus ##### -->
278 <para>
279 Describes a change of keyboard focus.
280 </para>
281
282 @type: the type of the event (%GDK_FOCUS_CHANGE).
283 @window: the window which received the event.
284 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
285 @in: %TRUE if the window has gained the keyboard focus, %FALSE if it has lost
286 the focus.
287
288 <!-- ##### STRUCT GdkEventConfigure ##### -->
289 <para>
290 Generated when a window size or position has changed.
291 </para>
292
293 @type: the type of the event (%GDK_CONFIGURE).
294 @window: the window which received the event.
295 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
296 @x: the new x coordinate of the window, relative to its parent.
297 @y: the new y coordinate of the window, relative to its parent.
298 @width: the new width of the window.
299 @height: the new height of the window.
300
301 <!-- ##### STRUCT GdkEventProperty ##### -->
302 <para>
303 Describes a property change on a window.
304 </para>
305
306 @type: the type of the event (%GDK_PROPERTY_NOTIFY).
307 @window: the window which received the event.
308 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
309 @atom: the property that was changed.
310 @time: the time of the event in milliseconds.
311 @state: whether the property was changed (%GDK_PROPERTY_NEW_VALUE) or
312 deleted (%GDK_PROPERTY_DELETE).
313
314 <!-- ##### STRUCT GdkEventSelection ##### -->
315 <para>
316 Generated when a selection is requested or ownership of a selection 
317 is taken over by another client application. 
318 </para>
319
320 @type: the type of the event (%GDK_SELECTION_CLEAR, %GDK_SELECTION_NOTIFY or 
321 %GDK_SELECTION_REQUEST).
322 @window: the window which received the event.
323 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
324 @selection: the selection.
325 @target: the target to which the selection should be converted.
326 @property: the property in which to place the result of the conversion.
327 @time: the time of the event in milliseconds.
328 @requestor: the native window on which to place @property.
329
330 <!-- ##### TYPEDEF GdkNativeWindow ##### -->
331 <para>
332 Used to represent native windows (<type>Window</type>s for the X11 backend, 
333 <type>HWND</type>s for Win32).
334 </para>
335
336
337 <!-- ##### STRUCT GdkEventDND ##### -->
338 <para>
339 Generated during DND operations. 
340 </para>
341
342 @type: the type of the event (%GDK_DRAG_ENTER, %GDK_DRAG_LEAVE,
343   %GDK_DRAG_MOTION, %GDK_DRAG_STATUS, %GDK_DROP_START or %GDK_DROP_FINISHED).
344 @window: the window which received the event.
345 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
346 @context: the #GdkDragContext for the current DND operation.
347 @time: the time of the event in milliseconds.
348 @x_root: the x coordinate of the pointer relative to the root of the screen,
349   only set for %GDK_DRAG_MOTION and %GDK_DROP_START.
350 @y_root: the y coordinate of the pointer relative to the root of the screen,
351   only set for %GDK_DRAG_MOTION and %GDK_DROP_START.
352
353 <!-- ##### STRUCT GdkEventProximity ##### -->
354 <para>
355 Proximity events are generated when using GDK's wrapper for the
356 XInput extension. The XInput extension is an add-on for standard X
357 that allows you to use nonstandard devices such as graphics tablets.
358 A proximity event indicates that the stylus has moved in or out of
359 contact with the tablet, or perhaps that the user's finger has moved
360 in or out of contact with a touch screen.
361 </para>
362
363 @type: the type of the event (%GDK_PROXIMITY_IN or %GDK_PROXIMITY_OUT).
364 @window: the window which received the event.
365 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
366 @time: the time of the event in milliseconds.
367 @device: the device where the event originated.
368
369 <!-- ##### STRUCT GdkEventClient ##### -->
370 <para>
371 An event sent by another client application.
372 </para>
373
374 @type: the type of the event (%GDK_CLIENT_EVENT).
375 @window: the window which received the event.
376 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
377 @message_type: the type of the message, which can be defined by the
378 application.
379 @data_format: the format of the data, given as the number of bits in each
380 data element, i.e. 8, 16, or 32. 8-bit data uses the b array of the data
381 union, 16-bit data uses the s array, and 32-bit data uses the l array.
382
383 <!-- ##### STRUCT GdkEventNoExpose ##### -->
384 <para>
385 Generated when the area of a #GdkDrawable being copied, with gdk_draw_drawable()
386 or gdk_window_copy_area(), was completely available.
387 </para>
388 <para>
389 FIXME: add more here.
390 </para>
391
392 @type: the type of the event (%GDK_NO_EXPOSE).
393 @window: the window which received the event.
394 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
395
396 <!-- ##### STRUCT GdkEventWindowState ##### -->
397 <para>
398 Generated when the state of a toplevel window changes.
399 </para>
400
401 @type: the type of the event (%GDK_WINDOW_STATE).
402 @window: the window which received the event.
403 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
404 @changed_mask: mask specifying what flags have changed.
405 @new_window_state: the new window state, a combination of #GdkWindowState bits.
406
407 <!-- ##### STRUCT GdkEventSetting ##### -->
408 <para>
409 Generated when a setting is modified.
410 </para>
411
412 @type: the type of the event (%GDK_SETTING).
413 @window: the window which received the event.
414 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
415 @action: what happened to the setting (%GDK_SETTING_ACTION_NEW,
416   %GDK_SETTING_ACTION_CHANGED or %GDK_SETTING_ACTION_DELETED).
417 @name: the name of the setting.
418
419 <!-- ##### STRUCT GdkEventOwnerChange ##### -->
420 <para>
421 Generated when the owner of a selection changes. On X11, this information is
422 only available if the X server supports the XFIXES extension.
423 </para>
424
425 @type: the type of the event (%GDK_OWNER_CHANGE).
426 @window: the window which received the event
427 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
428 @owner: the new owner of the selection
429 @reason: the reason for the ownership change as a #GdkOwnerChange value
430 @selection: the atom identifying the selection
431 @time: the timestamp of the event
432 @selection_time: the time at which the selection ownership was taken over
433 @Since: 2.6
434
435 <!-- ##### STRUCT GdkEventGrabBroken ##### -->
436 <para>
437 Generated when a pointer or keyboard grab is broken. On X11, this happens
438 when the grab window becomes unviewable (i.e. it or one of its ancestors 
439 is unmapped), or if the same application grabs the pointer or keyboard
440 again. Note that implicit grabs (which are initiated by button presses)
441 can also cause #GdkEventGrabBroken events.
442 </para>
443
444 @type: the type of the event (%GDK_GRAB_BROKEN)
445 @window: the window which received the event, i.e. the window
446  that previously owned the grab
447 @send_event: %TRUE if the event was sent explicitly (e.g. using <function>XSendEvent</function>).
448 @keyboard: %TRUE if a keyboard grab was broken, %FALSE if a pointer 
449   grab was broken
450 @implicit: %TRUE if the broken grab was implicit
451 @grab_window: If this event is caused by another grab in the same 
452   application, @grab_window contains the new grab window. Otherwise
453   @grab_window is %NULL.
454 @Since: 2.8
455
456 <!-- ##### ENUM GdkScrollDirection ##### -->
457 <para>
458 Specifies the direction for #GdkEventScroll. 
459 </para>
460
461 @GDK_SCROLL_UP: the window is scrolled up.
462 @GDK_SCROLL_DOWN: the window is scrolled down.
463 @GDK_SCROLL_LEFT: the window is scrolled to the left.
464 @GDK_SCROLL_RIGHT: the window is scrolled to the right.
465
466 <!-- ##### ENUM GdkVisibilityState ##### -->
467 <para>
468 Specifies the visiblity status of a window for a #GdkEventVisibility.
469 </para>
470
471 @GDK_VISIBILITY_UNOBSCURED: the window is completely visible.
472 @GDK_VISIBILITY_PARTIAL: the window is partially visible.
473 @GDK_VISIBILITY_FULLY_OBSCURED: the window is not visible at all.
474
475 <!-- ##### ENUM GdkCrossingMode ##### -->
476 <para>
477 Specifies the crossing mode for #GdkEventCrossing.
478 </para>
479
480 @GDK_CROSSING_NORMAL: crossing because of pointer motion.
481 @GDK_CROSSING_GRAB: crossing because a grab is activated.
482 @GDK_CROSSING_UNGRAB: crossing because a grab is deactivated.
483 @GDK_CROSSING_GTK_GRAB: crossing because a GTK+ grab is activated.
484 @GDK_CROSSING_GTK_UNGRAB: crossing because a GTK+ grab is deactivated.
485 @GDK_CROSSING_STATE_CHANGED: crossing because a GTK+ widget changed state (e.g.
486    sensitivity).
487
488 <!-- ##### ENUM GdkNotifyType ##### -->
489 <para>
490 Specifies the kind of crossing for #GdkEventCrossing.
491 </para>
492 <para>
493 See the X11 protocol specification of <type>LeaveNotify</type> for
494 full details of crossing event generation.
495 </para>
496
497 @GDK_NOTIFY_ANCESTOR: the window is entered from an ancestor or 
498    left towards an ancestor.
499 @GDK_NOTIFY_VIRTUAL: the pointer moves between an ancestor and an 
500     inferior of the window.
501 @GDK_NOTIFY_INFERIOR: the window is entered from an inferior or 
502    left towards an inferior.
503 @GDK_NOTIFY_NONLINEAR:  the window is entered from or left towards 
504    a window which is neither an ancestor nor an inferior.
505 @GDK_NOTIFY_NONLINEAR_VIRTUAL: the pointer moves between two windows 
506    which are not ancestors of each other and the window is part of
507    the ancestor chain between one of these windows and their least
508    common ancestor.
509 @GDK_NOTIFY_UNKNOWN: an unknown type of enter/leave event occurred.
510
511 <!-- ##### ENUM GdkPropertyState ##### -->
512 <para>
513 Specifies the type of a property change for a #GdkEventProperty.
514 </para>
515
516 @GDK_PROPERTY_NEW_VALUE: the property value was changed.
517 @GDK_PROPERTY_DELETE: the property was deleted.
518
519 <!-- ##### ENUM GdkWindowState ##### -->
520 <para>
521 Specifies the state of a toplevel window.
522 </para>
523
524 @GDK_WINDOW_STATE_WITHDRAWN: the window is not shown.
525 @GDK_WINDOW_STATE_ICONIFIED: the window is minimized.
526 @GDK_WINDOW_STATE_MAXIMIZED: the window is maximized.
527 @GDK_WINDOW_STATE_STICKY: the window is sticky.
528 @GDK_WINDOW_STATE_FULLSCREEN: the window is maximized without decorations.
529 @GDK_WINDOW_STATE_ABOVE: the window is kept above other windows.
530 @GDK_WINDOW_STATE_BELOW: the window is kept below other windows.
531
532 <!-- ##### ENUM GdkSettingAction ##### -->
533 <para>
534 Specifies the kind of modification applied to a setting in a #GdkEventSetting.
535 </para>
536
537 @GDK_SETTING_ACTION_NEW: a setting was added.
538 @GDK_SETTING_ACTION_CHANGED: a setting was changed.
539 @GDK_SETTING_ACTION_DELETED: a setting was deleted.
540
541 <!-- ##### ENUM GdkOwnerChange ##### -->
542 <para>
543 Specifies why a selection ownership was changed.
544 </para>
545
546 @GDK_OWNER_CHANGE_NEW_OWNER: some other app claimed the ownership
547 @GDK_OWNER_CHANGE_DESTROY: the window was destroyed
548 @GDK_OWNER_CHANGE_CLOSE: the client was closed
549