1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module gtkc.gdktypes; 26 27 public import gtkc.glibtypes; 28 public import gtkc.gobjecttypes; 29 public import gtkc.giotypes; 30 public import gtkc.pangotypes; 31 public import gtkc.gdkpixbuftypes; 32 33 /** 34 * Defines the position and size of a rectangle. It is identical to 35 * #cairo_rectangle_int_t. 36 */ 37 public alias cairo_rectangle_int_t GdkRectangle; 38 39 /** 40 * Used to represent native events (XEvents for the X11 41 * backend, MSGs for Win32). 42 */ 43 public alias void* GdkXEvent; 44 45 /** 46 * An enumeration describing the way in which a device 47 * axis (valuator) maps onto the predefined valuator 48 * types that GTK+ understands. 49 */ 50 public enum GdkAxisUse 51 { 52 /** 53 * the axis is ignored. 54 */ 55 IGNORE = 0, 56 /** 57 * the axis is used as the x axis. 58 */ 59 X = 1, 60 /** 61 * the axis is used as the y axis. 62 */ 63 Y = 2, 64 /** 65 * the axis is used for pressure information. 66 */ 67 PRESSURE = 3, 68 /** 69 * the axis is used for x tilt information. 70 */ 71 XTILT = 4, 72 /** 73 * the axis is used for y tilt information. 74 */ 75 YTILT = 5, 76 /** 77 * the axis is used for wheel information. 78 */ 79 WHEEL = 6, 80 /** 81 * a constant equal to the numerically highest axis value. 82 */ 83 LAST = 7, 84 } 85 alias GdkAxisUse AxisUse; 86 87 /** 88 * A set of values describing the possible byte-orders 89 * for storing pixel values in memory. 90 */ 91 public enum GdkByteOrder 92 { 93 /** 94 * The values are stored with the least-significant byte 95 * first. For instance, the 32-bit value 0xffeecc would be stored 96 * in memory as 0xcc, 0xee, 0xff, 0x00. 97 */ 98 LSB_FIRST = 0, 99 /** 100 * The values are stored with the most-significant byte 101 * first. For instance, the 32-bit value 0xffeecc would be stored 102 * in memory as 0x00, 0xff, 0xee, 0xcc. 103 */ 104 MSB_FIRST = 1, 105 } 106 alias GdkByteOrder ByteOrder; 107 108 /** 109 * Specifies the crossing mode for #GdkEventCrossing. 110 */ 111 public enum GdkCrossingMode 112 { 113 /** 114 * crossing because of pointer motion. 115 */ 116 NORMAL = 0, 117 /** 118 * crossing because a grab is activated. 119 */ 120 GRAB = 1, 121 /** 122 * crossing because a grab is deactivated. 123 */ 124 UNGRAB = 2, 125 /** 126 * crossing because a GTK+ grab is activated. 127 */ 128 GTK_GRAB = 3, 129 /** 130 * crossing because a GTK+ grab is deactivated. 131 */ 132 GTK_UNGRAB = 4, 133 /** 134 * crossing because a GTK+ widget changed 135 * state (e.g. sensitivity). 136 */ 137 STATE_CHANGED = 5, 138 /** 139 * crossing because a touch sequence has begun, 140 * this event is synthetic as the pointer might have not left the window. 141 */ 142 TOUCH_BEGIN = 6, 143 /** 144 * crossing because a touch sequence has ended, 145 * this event is synthetic as the pointer might have not left the window. 146 */ 147 TOUCH_END = 7, 148 /** 149 * crossing because of a device switch (i.e. 150 * a mouse taking control of the pointer after a touch device), this event 151 * is synthetic as the pointer didn’t leave the window. 152 */ 153 DEVICE_SWITCH = 8, 154 } 155 alias GdkCrossingMode CrossingMode; 156 157 /** 158 * The standard cursors available. 159 */ 160 public enum GdkCursorType 161 { 162 /** 163 * ![](X_cursor.png) 164 */ 165 X_CURSOR = 0, 166 /** 167 * ![](arrow.png) 168 */ 169 ARROW = 2, 170 /** 171 * ![](based_arrow_down.png) 172 */ 173 BASED_ARROW_DOWN = 4, 174 /** 175 * ![](based_arrow_up.png) 176 */ 177 BASED_ARROW_UP = 6, 178 /** 179 * ![](boat.png) 180 */ 181 BOAT = 8, 182 /** 183 * ![](bogosity.png) 184 */ 185 BOGOSITY = 10, 186 /** 187 * ![](bottom_left_corner.png) 188 */ 189 BOTTOM_LEFT_CORNER = 12, 190 /** 191 * ![](bottom_right_corner.png) 192 */ 193 BOTTOM_RIGHT_CORNER = 14, 194 /** 195 * ![](bottom_side.png) 196 */ 197 BOTTOM_SIDE = 16, 198 /** 199 * ![](bottom_tee.png) 200 */ 201 BOTTOM_TEE = 18, 202 /** 203 * ![](box_spiral.png) 204 */ 205 BOX_SPIRAL = 20, 206 /** 207 * ![](center_ptr.png) 208 */ 209 CENTER_PTR = 22, 210 /** 211 * ![](circle.png) 212 */ 213 CIRCLE = 24, 214 /** 215 * ![](clock.png) 216 */ 217 CLOCK = 26, 218 /** 219 * ![](coffee_mug.png) 220 */ 221 COFFEE_MUG = 28, 222 /** 223 * ![](cross.png) 224 */ 225 CROSS = 30, 226 /** 227 * ![](cross_reverse.png) 228 */ 229 CROSS_REVERSE = 32, 230 /** 231 * ![](crosshair.png) 232 */ 233 CROSSHAIR = 34, 234 /** 235 * ![](diamond_cross.png) 236 */ 237 DIAMOND_CROSS = 36, 238 /** 239 * ![](dot.png) 240 */ 241 DOT = 38, 242 /** 243 * ![](dotbox.png) 244 */ 245 DOTBOX = 40, 246 /** 247 * ![](double_arrow.png) 248 */ 249 DOUBLE_ARROW = 42, 250 /** 251 * ![](draft_large.png) 252 */ 253 DRAFT_LARGE = 44, 254 /** 255 * ![](draft_small.png) 256 */ 257 DRAFT_SMALL = 46, 258 /** 259 * ![](draped_box.png) 260 */ 261 DRAPED_BOX = 48, 262 /** 263 * ![](exchange.png) 264 */ 265 EXCHANGE = 50, 266 /** 267 * ![](fleur.png) 268 */ 269 FLEUR = 52, 270 /** 271 * ![](gobbler.png) 272 */ 273 GOBBLER = 54, 274 /** 275 * ![](gumby.png) 276 */ 277 GUMBY = 56, 278 /** 279 * ![](hand1.png) 280 */ 281 HAND1 = 58, 282 /** 283 * ![](hand2.png) 284 */ 285 HAND2 = 60, 286 /** 287 * ![](heart.png) 288 */ 289 HEART = 62, 290 /** 291 * ![](icon.png) 292 */ 293 ICON = 64, 294 /** 295 * ![](iron_cross.png) 296 */ 297 IRON_CROSS = 66, 298 /** 299 * ![](left_ptr.png) 300 */ 301 LEFT_PTR = 68, 302 /** 303 * ![](left_side.png) 304 */ 305 LEFT_SIDE = 70, 306 /** 307 * ![](left_tee.png) 308 */ 309 LEFT_TEE = 72, 310 /** 311 * ![](leftbutton.png) 312 */ 313 LEFTBUTTON = 74, 314 /** 315 * ![](ll_angle.png) 316 */ 317 LL_ANGLE = 76, 318 /** 319 * ![](lr_angle.png) 320 */ 321 LR_ANGLE = 78, 322 /** 323 * ![](man.png) 324 */ 325 MAN = 80, 326 /** 327 * ![](middlebutton.png) 328 */ 329 MIDDLEBUTTON = 82, 330 /** 331 * ![](mouse.png) 332 */ 333 MOUSE = 84, 334 /** 335 * ![](pencil.png) 336 */ 337 PENCIL = 86, 338 /** 339 * ![](pirate.png) 340 */ 341 PIRATE = 88, 342 /** 343 * ![](plus.png) 344 */ 345 PLUS = 90, 346 /** 347 * ![](question_arrow.png) 348 */ 349 QUESTION_ARROW = 92, 350 /** 351 * ![](right_ptr.png) 352 */ 353 RIGHT_PTR = 94, 354 /** 355 * ![](right_side.png) 356 */ 357 RIGHT_SIDE = 96, 358 /** 359 * ![](right_tee.png) 360 */ 361 RIGHT_TEE = 98, 362 /** 363 * ![](rightbutton.png) 364 */ 365 RIGHTBUTTON = 100, 366 /** 367 * ![](rtl_logo.png) 368 */ 369 RTL_LOGO = 102, 370 /** 371 * ![](sailboat.png) 372 */ 373 SAILBOAT = 104, 374 /** 375 * ![](sb_down_arrow.png) 376 */ 377 SB_DOWN_ARROW = 106, 378 /** 379 * ![](sb_h_double_arrow.png) 380 */ 381 SB_H_DOUBLE_ARROW = 108, 382 /** 383 * ![](sb_left_arrow.png) 384 */ 385 SB_LEFT_ARROW = 110, 386 /** 387 * ![](sb_right_arrow.png) 388 */ 389 SB_RIGHT_ARROW = 112, 390 /** 391 * ![](sb_up_arrow.png) 392 */ 393 SB_UP_ARROW = 114, 394 /** 395 * ![](sb_v_double_arrow.png) 396 */ 397 SB_V_DOUBLE_ARROW = 116, 398 /** 399 * ![](shuttle.png) 400 */ 401 SHUTTLE = 118, 402 /** 403 * ![](sizing.png) 404 */ 405 SIZING = 120, 406 /** 407 * ![](spider.png) 408 */ 409 SPIDER = 122, 410 /** 411 * ![](spraycan.png) 412 */ 413 SPRAYCAN = 124, 414 /** 415 * ![](star.png) 416 */ 417 STAR = 126, 418 /** 419 * ![](target.png) 420 */ 421 TARGET = 128, 422 /** 423 * ![](tcross.png) 424 */ 425 TCROSS = 130, 426 /** 427 * ![](top_left_arrow.png) 428 */ 429 TOP_LEFT_ARROW = 132, 430 /** 431 * ![](top_left_corner.png) 432 */ 433 TOP_LEFT_CORNER = 134, 434 /** 435 * ![](top_right_corner.png) 436 */ 437 TOP_RIGHT_CORNER = 136, 438 /** 439 * ![](top_side.png) 440 */ 441 TOP_SIDE = 138, 442 /** 443 * ![](top_tee.png) 444 */ 445 TOP_TEE = 140, 446 /** 447 * ![](trek.png) 448 */ 449 TREK = 142, 450 /** 451 * ![](ul_angle.png) 452 */ 453 UL_ANGLE = 144, 454 /** 455 * ![](umbrella.png) 456 */ 457 UMBRELLA = 146, 458 /** 459 * ![](ur_angle.png) 460 */ 461 UR_ANGLE = 148, 462 /** 463 * ![](watch.png) 464 */ 465 WATCH = 150, 466 /** 467 * ![](xterm.png) 468 */ 469 XTERM = 152, 470 /** 471 * last cursor type 472 */ 473 LAST_CURSOR = 153, 474 /** 475 * Blank cursor. Since 2.16 476 */ 477 BLANK_CURSOR = -2, 478 /** 479 * type of cursors constructed with 480 * gdk_cursor_new_from_pixbuf() 481 */ 482 CURSOR_IS_PIXMAP = -1, 483 } 484 alias GdkCursorType CursorType; 485 486 /** 487 * Indicates the device type. See [above][GdkDeviceManager.description] 488 * for more information about the meaning of these device types. 489 */ 490 public enum GdkDeviceType 491 { 492 /** 493 * Device is a master (or virtual) device. There will 494 * be an associated focus indicator on the screen. 495 */ 496 MASTER = 0, 497 /** 498 * Device is a slave (or physical) device. 499 */ 500 SLAVE = 1, 501 /** 502 * Device is a physical device, currently not attached to 503 * any virtual device. 504 */ 505 FLOATING = 2, 506 } 507 alias GdkDeviceType DeviceType; 508 509 /** 510 * Used in #GdkDragContext to indicate what the destination 511 * should do with the dropped data. 512 */ 513 public enum GdkDragAction 514 { 515 /** 516 * Means nothing, and should not be used. 517 */ 518 DEFAULT = 1, 519 /** 520 * Copy the data. 521 */ 522 COPY = 2, 523 /** 524 * Move the data, i.e. first copy it, then delete 525 * it from the source using the DELETE target of the X selection protocol. 526 */ 527 MOVE = 4, 528 /** 529 * Add a link to the data. Note that this is only 530 * useful if source and destination agree on what it means. 531 */ 532 LINK = 8, 533 /** 534 * Special action which tells the source that the 535 * destination will do something that the source doesn’t understand. 536 */ 537 PRIVATE = 16, 538 /** 539 * Ask the user what to do with the data. 540 */ 541 ASK = 32, 542 } 543 alias GdkDragAction DragAction; 544 545 /** 546 * Used in #GdkDragContext to indicate the protocol according to 547 * which DND is done. 548 */ 549 public enum GdkDragProtocol 550 { 551 /** 552 * no protocol. 553 */ 554 NONE = 0, 555 /** 556 * The Motif DND protocol. No longer supported 557 */ 558 MOTIF = 1, 559 /** 560 * The Xdnd protocol. 561 */ 562 XDND = 2, 563 /** 564 * An extension to the Xdnd protocol for 565 * unclaimed root window drops. 566 */ 567 ROOTWIN = 3, 568 /** 569 * The simple WM_DROPFILES protocol. 570 */ 571 WIN32_DROPFILES = 4, 572 /** 573 * The complex OLE2 DND protocol (not implemented). 574 */ 575 OLE2 = 5, 576 /** 577 * Intra-application DND. 578 */ 579 LOCAL = 6, 580 /** 581 * Wayland DND protocol. 582 */ 583 WAYLAND = 7, 584 } 585 alias GdkDragProtocol DragProtocol; 586 587 /** 588 * A set of bit-flags to indicate which events a window is to receive. 589 * Most of these masks map onto one or more of the #GdkEventType event types 590 * above. 591 * 592 * See the [input handling overview][chap-input-handling] for details of 593 * [event masks][event-masks] and [event propagation][event-propagation]. 594 * 595 * %GDK_POINTER_MOTION_HINT_MASK is deprecated. It is a special mask 596 * to reduce the number of %GDK_MOTION_NOTIFY events received. When using 597 * %GDK_POINTER_MOTION_HINT_MASK, fewer %GDK_MOTION_NOTIFY events will 598 * be sent, some of which are marked as a hint (the is_hint member is 599 * %TRUE). To receive more motion events after a motion hint event, 600 * the application needs to asks for more, by calling 601 * gdk_event_request_motions(). 602 * 603 * Since GTK 3.8, motion events are already compressed by default, independent 604 * of this mechanism. This compression can be disabled with 605 * gdk_window_set_event_compression(). See the documentation of that function 606 * for details. 607 * 608 * If %GDK_TOUCH_MASK is enabled, the window will receive touch events 609 * from touch-enabled devices. Those will come as sequences of #GdkEventTouch 610 * with type %GDK_TOUCH_UPDATE, enclosed by two events with 611 * type %GDK_TOUCH_BEGIN and %GDK_TOUCH_END (or %GDK_TOUCH_CANCEL). 612 * gdk_event_get_event_sequence() returns the event sequence for these 613 * events, so different sequences may be distinguished. 614 */ 615 public enum GdkEventMask 616 { 617 /** 618 * receive expose events 619 */ 620 EXPOSURE_MASK = 2, 621 /** 622 * receive all pointer motion events 623 */ 624 POINTER_MOTION_MASK = 4, 625 /** 626 * deprecated. see the explanation above 627 */ 628 POINTER_MOTION_HINT_MASK = 8, 629 /** 630 * receive pointer motion events while any button is pressed 631 */ 632 BUTTON_MOTION_MASK = 16, 633 /** 634 * receive pointer motion events while 1 button is pressed 635 */ 636 BUTTON1_MOTION_MASK = 32, 637 /** 638 * receive pointer motion events while 2 button is pressed 639 */ 640 BUTTON2_MOTION_MASK = 64, 641 /** 642 * receive pointer motion events while 3 button is pressed 643 */ 644 BUTTON3_MOTION_MASK = 128, 645 /** 646 * receive button press events 647 */ 648 BUTTON_PRESS_MASK = 256, 649 /** 650 * receive button release events 651 */ 652 BUTTON_RELEASE_MASK = 512, 653 /** 654 * receive key press events 655 */ 656 KEY_PRESS_MASK = 1024, 657 /** 658 * receive key release events 659 */ 660 KEY_RELEASE_MASK = 2048, 661 /** 662 * receive window enter events 663 */ 664 ENTER_NOTIFY_MASK = 4096, 665 /** 666 * receive window leave events 667 */ 668 LEAVE_NOTIFY_MASK = 8192, 669 /** 670 * receive focus change events 671 */ 672 FOCUS_CHANGE_MASK = 16384, 673 /** 674 * receive events about window configuration change 675 */ 676 STRUCTURE_MASK = 32768, 677 /** 678 * receive property change events 679 */ 680 PROPERTY_CHANGE_MASK = 65536, 681 /** 682 * receive visibility change events 683 */ 684 VISIBILITY_NOTIFY_MASK = 131072, 685 /** 686 * receive proximity in events 687 */ 688 PROXIMITY_IN_MASK = 262144, 689 /** 690 * receive proximity out events 691 */ 692 PROXIMITY_OUT_MASK = 524288, 693 /** 694 * receive events about window configuration changes of 695 * child windows 696 */ 697 SUBSTRUCTURE_MASK = 1048576, 698 /** 699 * receive scroll events 700 */ 701 SCROLL_MASK = 2097152, 702 /** 703 * receive touch events. Since 3.4 704 */ 705 TOUCH_MASK = 4194304, 706 /** 707 * receive smooth scrolling events. Since 3.4 708 */ 709 SMOOTH_SCROLL_MASK = 8388608, 710 /** 711 * the combination of all the above event masks. 712 */ 713 ALL_EVENTS_MASK = 16777214, 714 } 715 alias GdkEventMask EventMask; 716 717 /** 718 * Specifies the type of the event. 719 * 720 * Do not confuse these events with the signals that GTK+ widgets emit. 721 * Although many of these events result in corresponding signals being emitted, 722 * the events are often transformed or filtered along the way. 723 * 724 * In some language bindings, the values %GDK_2BUTTON_PRESS and 725 * %GDK_3BUTTON_PRESS would translate into something syntactically 726 * invalid (eg `Gdk.EventType.2ButtonPress`, where a 727 * symbol is not allowed to start with a number). In that case, the 728 * aliases %GDK_DOUBLE_BUTTON_PRESS and %GDK_TRIPLE_BUTTON_PRESS can 729 * be used instead. 730 */ 731 public enum GdkEventType 732 { 733 /** 734 * a special code to indicate a null event. 735 */ 736 NOTHING = -1, 737 /** 738 * the window manager has requested that the toplevel window be 739 * hidden or destroyed, usually when the user clicks on a special icon in the 740 * title bar. 741 */ 742 DELETE = 0, 743 /** 744 * the window has been destroyed. 745 */ 746 DESTROY = 1, 747 /** 748 * all or part of the window has become visible and needs to be 749 * redrawn. 750 */ 751 EXPOSE = 2, 752 /** 753 * the pointer (usually a mouse) has moved. 754 */ 755 MOTION_NOTIFY = 3, 756 /** 757 * a mouse button has been pressed. 758 */ 759 BUTTON_PRESS = 4, 760 /** 761 * alias for %GDK_2BUTTON_PRESS, added in 3.6. 762 */ 763 DOUBLE_BUTTON_PRESS = 5, 764 /** 765 * alias for %GDK_3BUTTON_PRESS, added in 3.6. 766 */ 767 TRIPLE_BUTTON_PRESS = 6, 768 /** 769 * a mouse button has been released. 770 */ 771 BUTTON_RELEASE = 7, 772 /** 773 * a key has been pressed. 774 */ 775 KEY_PRESS = 8, 776 /** 777 * a key has been released. 778 */ 779 KEY_RELEASE = 9, 780 /** 781 * the pointer has entered the window. 782 */ 783 ENTER_NOTIFY = 10, 784 /** 785 * the pointer has left the window. 786 */ 787 LEAVE_NOTIFY = 11, 788 /** 789 * the keyboard focus has entered or left the window. 790 */ 791 FOCUS_CHANGE = 12, 792 /** 793 * the size, position or stacking order of the window has changed. 794 * Note that GTK+ discards these events for %GDK_WINDOW_CHILD windows. 795 */ 796 CONFIGURE = 13, 797 /** 798 * the window has been mapped. 799 */ 800 MAP = 14, 801 /** 802 * the window has been unmapped. 803 */ 804 UNMAP = 15, 805 /** 806 * a property on the window has been changed or deleted. 807 */ 808 PROPERTY_NOTIFY = 16, 809 /** 810 * the application has lost ownership of a selection. 811 */ 812 SELECTION_CLEAR = 17, 813 /** 814 * another application has requested a selection. 815 */ 816 SELECTION_REQUEST = 18, 817 /** 818 * a selection has been received. 819 */ 820 SELECTION_NOTIFY = 19, 821 /** 822 * an input device has moved into contact with a sensing 823 * surface (e.g. a touchscreen or graphics tablet). 824 */ 825 PROXIMITY_IN = 20, 826 /** 827 * an input device has moved out of contact with a sensing 828 * surface. 829 */ 830 PROXIMITY_OUT = 21, 831 /** 832 * the mouse has entered the window while a drag is in progress. 833 */ 834 DRAG_ENTER = 22, 835 /** 836 * the mouse has left the window while a drag is in progress. 837 */ 838 DRAG_LEAVE = 23, 839 /** 840 * the mouse has moved in the window while a drag is in 841 * progress. 842 */ 843 DRAG_MOTION = 24, 844 /** 845 * the status of the drag operation initiated by the window 846 * has changed. 847 */ 848 DRAG_STATUS = 25, 849 /** 850 * a drop operation onto the window has started. 851 */ 852 DROP_START = 26, 853 /** 854 * the drop operation initiated by the window has completed. 855 */ 856 DROP_FINISHED = 27, 857 /** 858 * a message has been received from another application. 859 */ 860 CLIENT_EVENT = 28, 861 /** 862 * the window visibility status has changed. 863 */ 864 VISIBILITY_NOTIFY = 29, 865 /** 866 * the scroll wheel was turned 867 */ 868 SCROLL = 31, 869 /** 870 * the state of a window has changed. See #GdkWindowState 871 * for the possible window states 872 */ 873 WINDOW_STATE = 32, 874 /** 875 * a setting has been modified. 876 */ 877 SETTING = 33, 878 /** 879 * the owner of a selection has changed. This event type 880 * was added in 2.6 881 */ 882 OWNER_CHANGE = 34, 883 /** 884 * a pointer or keyboard grab was broken. This event type 885 * was added in 2.8. 886 */ 887 GRAB_BROKEN = 35, 888 /** 889 * the content of the window has been changed. This event type 890 * was added in 2.14. 891 */ 892 DAMAGE = 36, 893 /** 894 * A new touch event sequence has just started. This event 895 * type was added in 3.4. 896 */ 897 TOUCH_BEGIN = 37, 898 /** 899 * A touch event sequence has been updated. This event type 900 * was added in 3.4. 901 */ 902 TOUCH_UPDATE = 38, 903 /** 904 * A touch event sequence has finished. This event type 905 * was added in 3.4. 906 */ 907 TOUCH_END = 39, 908 /** 909 * A touch event sequence has been canceled. This event type 910 * was added in 3.4. 911 */ 912 TOUCH_CANCEL = 40, 913 /** 914 * marks the end of the GdkEventType enumeration. Added in 2.18 915 */ 916 EVENT_LAST = 41, 917 } 918 alias GdkEventType EventType; 919 920 /** 921 * Specifies the result of applying a #GdkFilterFunc to a native event. 922 */ 923 public enum GdkFilterReturn 924 { 925 /** 926 * event not handled, continue processing. 927 */ 928 CONTINUE = 0, 929 /** 930 * native event translated into a GDK event and stored 931 * in the `event` structure that was passed in. 932 */ 933 TRANSLATE = 1, 934 /** 935 * event handled, terminate processing. 936 */ 937 REMOVE = 2, 938 } 939 alias GdkFilterReturn FilterReturn; 940 941 /** 942 * #GdkFrameClockPhase is used to represent the different paint clock 943 * phases that can be requested. The elements of the enumeration 944 * correspond to the signals of #GdkFrameClock. 945 * 946 * Since: 3.8 947 */ 948 public enum GdkFrameClockPhase 949 { 950 /** 951 * no phase 952 */ 953 NONE = 0, 954 /** 955 * corresponds to GdkFrameClock::flush-events. Should not be handled by applications. 956 */ 957 FLUSH_EVENTS = 1, 958 /** 959 * corresponds to GdkFrameClock::before-paint. Should not be handled by applications. 960 */ 961 BEFORE_PAINT = 2, 962 /** 963 * corresponds to GdkFrameClock::update. 964 */ 965 UPDATE = 4, 966 /** 967 * corresponds to GdkFrameClock::layout. 968 */ 969 LAYOUT = 8, 970 /** 971 * corresponds to GdkFrameClock::paint. 972 */ 973 PAINT = 16, 974 /** 975 * corresponds to GdkFrameClock::resume-events. Should not be handled by applications. 976 */ 977 RESUME_EVENTS = 32, 978 /** 979 * corresponds to GdkFrameClock::after-paint. Should not be handled by applications. 980 */ 981 AFTER_PAINT = 64, 982 } 983 alias GdkFrameClockPhase FrameClockPhase; 984 985 /** 986 * Indicates which monitor (in a multi-head setup) a window should span over 987 * when in fullscreen mode. 988 * 989 * Since: 3.8 990 */ 991 public enum GdkFullscreenMode 992 { 993 /** 994 * Fullscreen on current monitor only. 995 */ 996 CURRENT_MONITOR = 0, 997 /** 998 * Span across all monitors when fullscreen. 999 */ 1000 ALL_MONITORS = 1, 1001 } 1002 alias GdkFullscreenMode FullscreenMode; 1003 1004 /** 1005 * Error enumeration for #GdkGLContext. 1006 * 1007 * Since: 3.16 1008 */ 1009 public enum GdkGLError 1010 { 1011 /** 1012 * OpenGL support is not available 1013 */ 1014 NOT_AVAILABLE = 0, 1015 /** 1016 * The requested visual format is not supported 1017 */ 1018 UNSUPPORTED_FORMAT = 1, 1019 /** 1020 * The requested profile is not supported 1021 */ 1022 UNSUPPORTED_PROFILE = 2, 1023 } 1024 alias GdkGLError GLError; 1025 1026 /** 1027 * Defines how device grabs interact with other devices. 1028 */ 1029 public enum GdkGrabOwnership 1030 { 1031 /** 1032 * All other devices’ events are allowed. 1033 */ 1034 NONE = 0, 1035 /** 1036 * Other devices’ events are blocked for the grab window. 1037 */ 1038 WINDOW = 1, 1039 /** 1040 * Other devices’ events are blocked for the whole application. 1041 */ 1042 APPLICATION = 2, 1043 } 1044 alias GdkGrabOwnership GrabOwnership; 1045 1046 /** 1047 * Returned by gdk_device_grab(), gdk_pointer_grab() and gdk_keyboard_grab() to 1048 * indicate success or the reason for the failure of the grab attempt. 1049 */ 1050 public enum GdkGrabStatus 1051 { 1052 /** 1053 * the resource was successfully grabbed. 1054 */ 1055 SUCCESS = 0, 1056 /** 1057 * the resource is actively grabbed by another client. 1058 */ 1059 ALREADY_GRABBED = 1, 1060 /** 1061 * the resource was grabbed more recently than the 1062 * specified time. 1063 */ 1064 INVALID_TIME = 2, 1065 /** 1066 * the grab window or the @confine_to window are not 1067 * viewable. 1068 */ 1069 NOT_VIEWABLE = 3, 1070 /** 1071 * the resource is frozen by an active grab of another client. 1072 */ 1073 FROZEN = 4, 1074 /** 1075 * the grab failed for some other reason. 1076 */ 1077 FAILED = 5, 1078 } 1079 alias GdkGrabStatus GrabStatus; 1080 1081 /** 1082 * Defines the reference point of a window and the meaning of coordinates 1083 * passed to gtk_window_move(). See gtk_window_move() and the "implementation 1084 * notes" section of the 1085 * [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec) 1086 * specification for more details. 1087 */ 1088 public enum GdkGravity 1089 { 1090 /** 1091 * the reference point is at the top left corner. 1092 */ 1093 NORTH_WEST = 1, 1094 /** 1095 * the reference point is in the middle of the top edge. 1096 */ 1097 NORTH = 2, 1098 /** 1099 * the reference point is at the top right corner. 1100 */ 1101 NORTH_EAST = 3, 1102 /** 1103 * the reference point is at the middle of the left edge. 1104 */ 1105 WEST = 4, 1106 /** 1107 * the reference point is at the center of the window. 1108 */ 1109 CENTER = 5, 1110 /** 1111 * the reference point is at the middle of the right edge. 1112 */ 1113 EAST = 6, 1114 /** 1115 * the reference point is at the lower left corner. 1116 */ 1117 SOUTH_WEST = 7, 1118 /** 1119 * the reference point is at the middle of the lower edge. 1120 */ 1121 SOUTH = 8, 1122 /** 1123 * the reference point is at the lower right corner. 1124 */ 1125 SOUTH_EAST = 9, 1126 /** 1127 * the reference point is at the top left corner of the 1128 * window itself, ignoring window manager decorations. 1129 */ 1130 STATIC = 10, 1131 } 1132 alias GdkGravity Gravity; 1133 1134 /** 1135 * An enumeration that describes the mode of an input device. 1136 */ 1137 public enum GdkInputMode 1138 { 1139 /** 1140 * the device is disabled and will not report any events. 1141 */ 1142 DISABLED = 0, 1143 /** 1144 * the device is enabled. The device’s coordinate space 1145 * maps to the entire screen. 1146 */ 1147 SCREEN = 1, 1148 /** 1149 * the device is enabled. The device’s coordinate space 1150 * is mapped to a single window. The manner in which this window 1151 * is chosen is undefined, but it will typically be the same 1152 * way in which the focus window for key events is determined. 1153 */ 1154 WINDOW = 2, 1155 } 1156 alias GdkInputMode InputMode; 1157 1158 /** 1159 * An enumeration describing the type of an input device in general terms. 1160 */ 1161 public enum GdkInputSource 1162 { 1163 /** 1164 * the device is a mouse. (This will be reported for the core 1165 * pointer, even if it is something else, such as a trackball.) 1166 */ 1167 MOUSE = 0, 1168 /** 1169 * the device is a stylus of a graphics tablet or similar device. 1170 */ 1171 PEN = 1, 1172 /** 1173 * the device is an eraser. Typically, this would be the other end 1174 * of a stylus on a graphics tablet. 1175 */ 1176 ERASER = 2, 1177 /** 1178 * the device is a graphics tablet “puck” or similar device. 1179 */ 1180 CURSOR = 3, 1181 /** 1182 * the device is a keyboard. 1183 */ 1184 KEYBOARD = 4, 1185 /** 1186 * the device is a direct-input touch device, such 1187 * as a touchscreen or tablet. This device type has been added in 3.4. 1188 */ 1189 TOUCHSCREEN = 5, 1190 /** 1191 * the device is an indirect touch device, such 1192 * as a touchpad. This device type has been added in 3.4. 1193 */ 1194 TOUCHPAD = 6, 1195 } 1196 alias GdkInputSource InputSource; 1197 1198 /** 1199 * This enum is used with gdk_keymap_get_modifier_mask() 1200 * in order to determine what modifiers the 1201 * currently used windowing system backend uses for particular 1202 * purposes. For example, on X11/Windows, the Control key is used for 1203 * invoking menu shortcuts (accelerators), whereas on Apple computers 1204 * it’s the Command key (which correspond to %GDK_CONTROL_MASK and 1205 * %GDK_MOD2_MASK, respectively). 1206 * 1207 * Since: 3.4 1208 */ 1209 public enum GdkModifierIntent 1210 { 1211 /** 1212 * the primary modifier used to invoke 1213 * menu accelerators. 1214 */ 1215 PRIMARY_ACCELERATOR = 0, 1216 /** 1217 * the modifier used to invoke context menus. 1218 * Note that mouse button 3 always triggers context menus. When this modifier 1219 * is not 0, it additionally triggers context menus when used with mouse button 1. 1220 */ 1221 CONTEXT_MENU = 1, 1222 /** 1223 * the modifier used to extend selections 1224 * using `modifier`-click or `modifier`-cursor-key 1225 */ 1226 EXTEND_SELECTION = 2, 1227 /** 1228 * the modifier used to modify selections, 1229 * which in most cases means toggling the clicked item into or out of the selection. 1230 */ 1231 MODIFY_SELECTION = 3, 1232 /** 1233 * when any of these modifiers is pressed, the 1234 * key event cannot produce a symbol directly. This is meant to be used for 1235 * input methods, and for use cases like typeahead search. 1236 */ 1237 NO_TEXT_INPUT = 4, 1238 /** 1239 * the modifier that switches between keyboard 1240 * groups (AltGr on X11/Windows and Option/Alt on OS X). 1241 */ 1242 SHIFT_GROUP = 5, 1243 } 1244 alias GdkModifierIntent ModifierIntent; 1245 1246 /** 1247 * A set of bit-flags to indicate the state of modifier keys and mouse buttons 1248 * in various event types. Typical modifier keys are Shift, Control, Meta, 1249 * Super, Hyper, Alt, Compose, Apple, CapsLock or ShiftLock. 1250 * 1251 * Like the X Window System, GDK supports 8 modifier keys and 5 mouse buttons. 1252 * 1253 * Since 2.10, GDK recognizes which of the Meta, Super or Hyper keys are mapped 1254 * to Mod2 - Mod5, and indicates this by setting %GDK_SUPER_MASK, 1255 * %GDK_HYPER_MASK or %GDK_META_MASK in the state field of key events. 1256 * 1257 * Note that GDK may add internal values to events which include 1258 * reserved values such as %GDK_MODIFIER_RESERVED_13_MASK. Your code 1259 * should preserve and ignore them. You can use %GDK_MODIFIER_MASK to 1260 * remove all reserved values. 1261 */ 1262 public enum GdkModifierType 1263 { 1264 /** 1265 * the Shift key. 1266 */ 1267 SHIFT_MASK = 1, 1268 /** 1269 * a Lock key (depending on the modifier mapping of the 1270 * X server this may either be CapsLock or ShiftLock). 1271 */ 1272 LOCK_MASK = 2, 1273 /** 1274 * the Control key. 1275 */ 1276 CONTROL_MASK = 4, 1277 /** 1278 * the fourth modifier key (it depends on the modifier 1279 * mapping of the X server which key is interpreted as this modifier, but 1280 * normally it is the Alt key). 1281 */ 1282 MOD1_MASK = 8, 1283 /** 1284 * the fifth modifier key (it depends on the modifier 1285 * mapping of the X server which key is interpreted as this modifier). 1286 */ 1287 MOD2_MASK = 16, 1288 /** 1289 * the sixth modifier key (it depends on the modifier 1290 * mapping of the X server which key is interpreted as this modifier). 1291 */ 1292 MOD3_MASK = 32, 1293 /** 1294 * the seventh modifier key (it depends on the modifier 1295 * mapping of the X server which key is interpreted as this modifier). 1296 */ 1297 MOD4_MASK = 64, 1298 /** 1299 * the eighth modifier key (it depends on the modifier 1300 * mapping of the X server which key is interpreted as this modifier). 1301 */ 1302 MOD5_MASK = 128, 1303 /** 1304 * the first mouse button. 1305 */ 1306 BUTTON1_MASK = 256, 1307 /** 1308 * the second mouse button. 1309 */ 1310 BUTTON2_MASK = 512, 1311 /** 1312 * the third mouse button. 1313 */ 1314 BUTTON3_MASK = 1024, 1315 /** 1316 * the fourth mouse button. 1317 */ 1318 BUTTON4_MASK = 2048, 1319 /** 1320 * the fifth mouse button. 1321 */ 1322 BUTTON5_MASK = 4096, 1323 /** 1324 * A reserved bit flag; do not use in your own code 1325 */ 1326 MODIFIER_RESERVED_13_MASK = 8192, 1327 /** 1328 * A reserved bit flag; do not use in your own code 1329 */ 1330 MODIFIER_RESERVED_14_MASK = 16384, 1331 /** 1332 * A reserved bit flag; do not use in your own code 1333 */ 1334 MODIFIER_RESERVED_15_MASK = 32768, 1335 /** 1336 * A reserved bit flag; do not use in your own code 1337 */ 1338 MODIFIER_RESERVED_16_MASK = 65536, 1339 /** 1340 * A reserved bit flag; do not use in your own code 1341 */ 1342 MODIFIER_RESERVED_17_MASK = 131072, 1343 /** 1344 * A reserved bit flag; do not use in your own code 1345 */ 1346 MODIFIER_RESERVED_18_MASK = 262144, 1347 /** 1348 * A reserved bit flag; do not use in your own code 1349 */ 1350 MODIFIER_RESERVED_19_MASK = 524288, 1351 /** 1352 * A reserved bit flag; do not use in your own code 1353 */ 1354 MODIFIER_RESERVED_20_MASK = 1048576, 1355 /** 1356 * A reserved bit flag; do not use in your own code 1357 */ 1358 MODIFIER_RESERVED_21_MASK = 2097152, 1359 /** 1360 * A reserved bit flag; do not use in your own code 1361 */ 1362 MODIFIER_RESERVED_22_MASK = 4194304, 1363 /** 1364 * A reserved bit flag; do not use in your own code 1365 */ 1366 MODIFIER_RESERVED_23_MASK = 8388608, 1367 /** 1368 * A reserved bit flag; do not use in your own code 1369 */ 1370 MODIFIER_RESERVED_24_MASK = 16777216, 1371 /** 1372 * A reserved bit flag; do not use in your own code 1373 */ 1374 MODIFIER_RESERVED_25_MASK = 33554432, 1375 /** 1376 * the Super modifier. Since 2.10 1377 */ 1378 SUPER_MASK = 67108864, 1379 /** 1380 * the Hyper modifier. Since 2.10 1381 */ 1382 HYPER_MASK = 134217728, 1383 /** 1384 * the Meta modifier. Since 2.10 1385 */ 1386 META_MASK = 268435456, 1387 /** 1388 * A reserved bit flag; do not use in your own code 1389 */ 1390 MODIFIER_RESERVED_29_MASK = 536870912, 1391 /** 1392 * not used in GDK itself. GTK+ uses it to differentiate 1393 * between (keyval, modifiers) pairs from key press and release events. 1394 */ 1395 RELEASE_MASK = 1073741824, 1396 /** 1397 * a mask covering all modifier types. 1398 */ 1399 MODIFIER_MASK = 1543512063, 1400 } 1401 alias GdkModifierType ModifierType; 1402 1403 /** 1404 * Specifies the kind of crossing for #GdkEventCrossing. 1405 * 1406 * See the X11 protocol specification of LeaveNotify for 1407 * full details of crossing event generation. 1408 */ 1409 public enum GdkNotifyType 1410 { 1411 /** 1412 * the window is entered from an ancestor or 1413 * left towards an ancestor. 1414 */ 1415 ANCESTOR = 0, 1416 /** 1417 * the pointer moves between an ancestor and an 1418 * inferior of the window. 1419 */ 1420 VIRTUAL = 1, 1421 /** 1422 * the window is entered from an inferior or 1423 * left towards an inferior. 1424 */ 1425 INFERIOR = 2, 1426 /** 1427 * the window is entered from or left towards 1428 * a window which is neither an ancestor nor an inferior. 1429 */ 1430 NONLINEAR = 3, 1431 /** 1432 * the pointer moves between two windows 1433 * which are not ancestors of each other and the window is part of 1434 * the ancestor chain between one of these windows and their least 1435 * common ancestor. 1436 */ 1437 NONLINEAR_VIRTUAL = 4, 1438 /** 1439 * an unknown type of enter/leave event occurred. 1440 */ 1441 UNKNOWN = 5, 1442 } 1443 alias GdkNotifyType NotifyType; 1444 1445 /** 1446 * Specifies why a selection ownership was changed. 1447 */ 1448 public enum GdkOwnerChange 1449 { 1450 /** 1451 * some other app claimed the ownership 1452 */ 1453 NEW_OWNER = 0, 1454 /** 1455 * the window was destroyed 1456 */ 1457 DESTROY = 1, 1458 /** 1459 * the client was closed 1460 */ 1461 CLOSE = 2, 1462 } 1463 alias GdkOwnerChange OwnerChange; 1464 1465 /** 1466 * Describes how existing data is combined with new data when 1467 * using gdk_property_change(). 1468 */ 1469 public enum GdkPropMode 1470 { 1471 /** 1472 * the new data replaces the existing data. 1473 */ 1474 REPLACE = 0, 1475 /** 1476 * the new data is prepended to the existing data. 1477 */ 1478 PREPEND = 1, 1479 /** 1480 * the new data is appended to the existing data. 1481 */ 1482 APPEND = 2, 1483 } 1484 alias GdkPropMode PropMode; 1485 1486 /** 1487 * Specifies the type of a property change for a #GdkEventProperty. 1488 */ 1489 public enum GdkPropertyState 1490 { 1491 /** 1492 * the property value was changed. 1493 */ 1494 NEW_VALUE = 0, 1495 /** 1496 * the property was deleted. 1497 */ 1498 DELETE = 1, 1499 } 1500 alias GdkPropertyState PropertyState; 1501 1502 /** 1503 * Specifies the direction for #GdkEventScroll. 1504 */ 1505 public enum GdkScrollDirection 1506 { 1507 /** 1508 * the window is scrolled up. 1509 */ 1510 UP = 0, 1511 /** 1512 * the window is scrolled down. 1513 */ 1514 DOWN = 1, 1515 /** 1516 * the window is scrolled to the left. 1517 */ 1518 LEFT = 2, 1519 /** 1520 * the window is scrolled to the right. 1521 */ 1522 RIGHT = 3, 1523 /** 1524 * the scrolling is determined by the delta values 1525 * in #GdkEventScroll. See gdk_event_get_scroll_deltas(). Since: 3.4 1526 */ 1527 SMOOTH = 4, 1528 } 1529 alias GdkScrollDirection ScrollDirection; 1530 1531 /** 1532 * Specifies the kind of modification applied to a setting in a 1533 * #GdkEventSetting. 1534 */ 1535 public enum GdkSettingAction 1536 { 1537 /** 1538 * a setting was added. 1539 */ 1540 NEW = 0, 1541 /** 1542 * a setting was changed. 1543 */ 1544 CHANGED = 1, 1545 /** 1546 * a setting was deleted. 1547 */ 1548 DELETED = 2, 1549 } 1550 alias GdkSettingAction SettingAction; 1551 1552 public enum GdkStatus 1553 { 1554 OK = 0, 1555 ERROR = -1, 1556 ERROR_PARAM = -2, 1557 ERROR_FILE = -3, 1558 ERROR_MEM = -4, 1559 } 1560 alias GdkStatus Status; 1561 1562 /** 1563 * Specifies the visiblity status of a window for a #GdkEventVisibility. 1564 */ 1565 public enum GdkVisibilityState 1566 { 1567 /** 1568 * the window is completely visible. 1569 */ 1570 UNOBSCURED = 0, 1571 /** 1572 * the window is partially visible. 1573 */ 1574 PARTIAL = 1, 1575 /** 1576 * the window is not visible at all. 1577 */ 1578 FULLY_OBSCURED = 2, 1579 } 1580 alias GdkVisibilityState VisibilityState; 1581 1582 /** 1583 * A set of values that describe the manner in which the pixel values 1584 * for a visual are converted into RGB values for display. 1585 */ 1586 public enum GdkVisualType 1587 { 1588 /** 1589 * Each pixel value indexes a grayscale value 1590 * directly. 1591 */ 1592 STATIC_GRAY = 0, 1593 /** 1594 * Each pixel is an index into a color map that 1595 * maps pixel values into grayscale values. The color map can be 1596 * changed by an application. 1597 */ 1598 GRAYSCALE = 1, 1599 /** 1600 * Each pixel value is an index into a predefined, 1601 * unmodifiable color map that maps pixel values into RGB values. 1602 */ 1603 STATIC_COLOR = 2, 1604 /** 1605 * Each pixel is an index into a color map that 1606 * maps pixel values into rgb values. The color map can be changed by 1607 * an application. 1608 */ 1609 PSEUDO_COLOR = 3, 1610 /** 1611 * Each pixel value directly contains red, green, 1612 * and blue components. Use gdk_visual_get_red_pixel_details(), etc, 1613 * to obtain information about how the components are assembled into 1614 * a pixel value. 1615 */ 1616 TRUE_COLOR = 4, 1617 /** 1618 * Each pixel value contains red, green, and blue 1619 * components as for %GDK_VISUAL_TRUE_COLOR, but the components are 1620 * mapped via a color table into the final output table instead of 1621 * being converted directly. 1622 */ 1623 DIRECT_COLOR = 5, 1624 } 1625 alias GdkVisualType VisualType; 1626 1627 /** 1628 * These are hints originally defined by the Motif toolkit. 1629 * The window manager can use them when determining how to decorate 1630 * the window. The hint must be set before mapping the window. 1631 */ 1632 public enum GdkWMDecoration 1633 { 1634 /** 1635 * all decorations should be applied. 1636 */ 1637 ALL = 1, 1638 /** 1639 * a frame should be drawn around the window. 1640 */ 1641 BORDER = 2, 1642 /** 1643 * the frame should have resize handles. 1644 */ 1645 RESIZEH = 4, 1646 /** 1647 * a titlebar should be placed above the window. 1648 */ 1649 TITLE = 8, 1650 /** 1651 * a button for opening a menu should be included. 1652 */ 1653 MENU = 16, 1654 /** 1655 * a minimize button should be included. 1656 */ 1657 MINIMIZE = 32, 1658 /** 1659 * a maximize button should be included. 1660 */ 1661 MAXIMIZE = 64, 1662 } 1663 alias GdkWMDecoration WMDecoration; 1664 1665 /** 1666 * These are hints originally defined by the Motif toolkit. The window manager 1667 * can use them when determining the functions to offer for the window. The 1668 * hint must be set before mapping the window. 1669 */ 1670 public enum GdkWMFunction 1671 { 1672 /** 1673 * all functions should be offered. 1674 */ 1675 ALL = 1, 1676 /** 1677 * the window should be resizable. 1678 */ 1679 RESIZE = 2, 1680 /** 1681 * the window should be movable. 1682 */ 1683 MOVE = 4, 1684 /** 1685 * the window should be minimizable. 1686 */ 1687 MINIMIZE = 8, 1688 /** 1689 * the window should be maximizable. 1690 */ 1691 MAXIMIZE = 16, 1692 /** 1693 * the window should be closable. 1694 */ 1695 CLOSE = 32, 1696 } 1697 alias GdkWMFunction WMFunction; 1698 1699 /** 1700 * Used to indicate which fields in the #GdkWindowAttr struct should be honored. 1701 * For example, if you filled in the “cursor” and “x” fields of #GdkWindowAttr, 1702 * pass “@GDK_WA_X | @GDK_WA_CURSOR” to gdk_window_new(). Fields in 1703 * #GdkWindowAttr not covered by a bit in this enum are required; for example, 1704 * the @width/@height, @wclass, and @window_type fields are required, they have 1705 * no corresponding flag in #GdkWindowAttributesType. 1706 */ 1707 public enum GdkWindowAttributesType 1708 { 1709 /** 1710 * Honor the title field 1711 */ 1712 TITLE = 2, 1713 /** 1714 * Honor the X coordinate field 1715 */ 1716 X = 4, 1717 /** 1718 * Honor the Y coordinate field 1719 */ 1720 Y = 8, 1721 /** 1722 * Honor the cursor field 1723 */ 1724 CURSOR = 16, 1725 /** 1726 * Honor the visual field 1727 */ 1728 VISUAL = 32, 1729 /** 1730 * Honor the wmclass_class and wmclass_name fields 1731 */ 1732 WMCLASS = 64, 1733 /** 1734 * Honor the override_redirect field 1735 */ 1736 NOREDIR = 128, 1737 /** 1738 * Honor the type_hint field 1739 */ 1740 TYPE_HINT = 256, 1741 } 1742 alias GdkWindowAttributesType WindowAttributesType; 1743 1744 /** 1745 * Determines a window edge or corner. 1746 */ 1747 public enum GdkWindowEdge 1748 { 1749 /** 1750 * the top left corner. 1751 */ 1752 NORTH_WEST = 0, 1753 /** 1754 * the top edge. 1755 */ 1756 NORTH = 1, 1757 /** 1758 * the top right corner. 1759 */ 1760 NORTH_EAST = 2, 1761 /** 1762 * the left edge. 1763 */ 1764 WEST = 3, 1765 /** 1766 * the right edge. 1767 */ 1768 EAST = 4, 1769 /** 1770 * the lower left corner. 1771 */ 1772 SOUTH_WEST = 5, 1773 /** 1774 * the lower edge. 1775 */ 1776 SOUTH = 6, 1777 /** 1778 * the lower right corner. 1779 */ 1780 SOUTH_EAST = 7, 1781 } 1782 alias GdkWindowEdge WindowEdge; 1783 1784 /** 1785 * Used to indicate which fields of a #GdkGeometry struct should be paid 1786 * attention to. Also, the presence/absence of @GDK_HINT_POS, 1787 * @GDK_HINT_USER_POS, and @GDK_HINT_USER_SIZE is significant, though they don't 1788 * directly refer to #GdkGeometry fields. @GDK_HINT_USER_POS will be set 1789 * automatically by #GtkWindow if you call gtk_window_move(). 1790 * @GDK_HINT_USER_POS and @GDK_HINT_USER_SIZE should be set if the user 1791 * specified a size/position using a --geometry command-line argument; 1792 * gtk_window_parse_geometry() automatically sets these flags. 1793 */ 1794 public enum GdkWindowHints 1795 { 1796 /** 1797 * indicates that the program has positioned the window 1798 */ 1799 POS = 1, 1800 /** 1801 * min size fields are set 1802 */ 1803 MIN_SIZE = 2, 1804 /** 1805 * max size fields are set 1806 */ 1807 MAX_SIZE = 4, 1808 /** 1809 * base size fields are set 1810 */ 1811 BASE_SIZE = 8, 1812 /** 1813 * aspect ratio fields are set 1814 */ 1815 ASPECT = 16, 1816 /** 1817 * resize increment fields are set 1818 */ 1819 RESIZE_INC = 32, 1820 /** 1821 * window gravity field is set 1822 */ 1823 WIN_GRAVITY = 64, 1824 /** 1825 * indicates that the window’s position was explicitly set 1826 * by the user 1827 */ 1828 USER_POS = 128, 1829 /** 1830 * indicates that the window’s size was explicitly set by 1831 * the user 1832 */ 1833 USER_SIZE = 256, 1834 } 1835 alias GdkWindowHints WindowHints; 1836 1837 /** 1838 * Specifies the state of a toplevel window. 1839 */ 1840 public enum GdkWindowState 1841 { 1842 /** 1843 * the window is not shown. 1844 */ 1845 WITHDRAWN = 1, 1846 /** 1847 * the window is minimized. 1848 */ 1849 ICONIFIED = 2, 1850 /** 1851 * the window is maximized. 1852 */ 1853 MAXIMIZED = 4, 1854 /** 1855 * the window is sticky. 1856 */ 1857 STICKY = 8, 1858 /** 1859 * the window is maximized without 1860 * decorations. 1861 */ 1862 FULLSCREEN = 16, 1863 /** 1864 * the window is kept above other windows. 1865 */ 1866 ABOVE = 32, 1867 /** 1868 * the window is kept below other windows. 1869 */ 1870 BELOW = 64, 1871 /** 1872 * the window is presented as focused (with active decorations). 1873 */ 1874 FOCUSED = 128, 1875 /** 1876 * the window is in a tiled state, Since 3.10 1877 */ 1878 TILED = 256, 1879 } 1880 alias GdkWindowState WindowState; 1881 1882 /** 1883 * Describes the kind of window. 1884 */ 1885 public enum GdkWindowType 1886 { 1887 /** 1888 * root window; this window has no parent, covers the entire 1889 * screen, and is created by the window system 1890 */ 1891 ROOT = 0, 1892 /** 1893 * toplevel window (used to implement #GtkWindow) 1894 */ 1895 TOPLEVEL = 1, 1896 /** 1897 * child window (used to implement e.g. #GtkEntry) 1898 */ 1899 CHILD = 2, 1900 /** 1901 * override redirect temporary window (used to implement 1902 * #GtkMenu) 1903 */ 1904 TEMP = 3, 1905 /** 1906 * foreign window (see gdk_window_foreign_new()) 1907 */ 1908 FOREIGN = 4, 1909 /** 1910 * offscreen window (see 1911 * [Offscreen Windows][OFFSCREEN-WINDOWS]). Since 2.18 1912 */ 1913 OFFSCREEN = 5, 1914 /** 1915 * subsurface-based window; This window is visually 1916 * tied to a toplevel, and is moved/stacked with it. Currently this window 1917 * type is only implemented in Wayland. Since 3.14 1918 */ 1919 SUBSURFACE = 6, 1920 } 1921 alias GdkWindowType WindowType; 1922 1923 /** 1924 * These are hints for the window manager that indicate what type of function 1925 * the window has. The window manager can use this when determining decoration 1926 * and behaviour of the window. The hint must be set before mapping the window. 1927 * 1928 * See the [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec) 1929 * specification for more details about window types. 1930 */ 1931 public enum GdkWindowTypeHint 1932 { 1933 /** 1934 * Normal toplevel window. 1935 */ 1936 NORMAL = 0, 1937 /** 1938 * Dialog window. 1939 */ 1940 DIALOG = 1, 1941 /** 1942 * Window used to implement a menu; GTK+ uses 1943 * this hint only for torn-off menus, see #GtkTearoffMenuItem. 1944 */ 1945 MENU = 2, 1946 /** 1947 * Window used to implement toolbars. 1948 */ 1949 TOOLBAR = 3, 1950 /** 1951 * Window used to display a splash 1952 * screen during application startup. 1953 */ 1954 SPLASHSCREEN = 4, 1955 /** 1956 * Utility windows which are not detached 1957 * toolbars or dialogs. 1958 */ 1959 UTILITY = 5, 1960 /** 1961 * Used for creating dock or panel windows. 1962 */ 1963 DOCK = 6, 1964 /** 1965 * Used for creating the desktop background 1966 * window. 1967 */ 1968 DESKTOP = 7, 1969 /** 1970 * A menu that belongs to a menubar. 1971 */ 1972 DROPDOWN_MENU = 8, 1973 /** 1974 * A menu that does not belong to a menubar, 1975 * e.g. a context menu. 1976 */ 1977 POPUP_MENU = 9, 1978 /** 1979 * A tooltip. 1980 */ 1981 TOOLTIP = 10, 1982 /** 1983 * A notification - typically a “bubble” 1984 * that belongs to a status icon. 1985 */ 1986 NOTIFICATION = 11, 1987 /** 1988 * A popup from a combo box. 1989 */ 1990 COMBO = 12, 1991 /** 1992 * A window that is used to implement a DND cursor. 1993 */ 1994 DND = 13, 1995 } 1996 alias GdkWindowTypeHint WindowTypeHint; 1997 1998 /** 1999 * @GDK_INPUT_OUTPUT windows are the standard kind of window you might expect. 2000 * Such windows receive events and are also displayed on screen. 2001 * @GDK_INPUT_ONLY windows are invisible; they are usually placed above other 2002 * windows in order to trap or filter the events. You can’t draw on 2003 * @GDK_INPUT_ONLY windows. 2004 */ 2005 public enum GdkWindowWindowClass 2006 { 2007 /** 2008 * window for graphics and events 2009 */ 2010 INPUT_OUTPUT = 0, 2011 /** 2012 * window for events only 2013 */ 2014 INPUT_ONLY = 1, 2015 } 2016 alias GdkWindowWindowClass WindowWindowClass; 2017 2018 /** 2019 * An opaque type representing a string as an index into a table 2020 * of strings on the X server. 2021 */ 2022 alias _GdkAtom* GdkAtom; 2023 public struct _GdkAtom; 2024 2025 struct GdkAppLaunchContext; 2026 2027 struct GdkColor 2028 { 2029 /** 2030 * For allocated colors, the pixel value used to 2031 * draw this color on the screen. Not used anymore. 2032 */ 2033 uint pixel; 2034 /** 2035 * The red component of the color. This is 2036 * a value between 0 and 65535, with 65535 indicating 2037 * full intensity 2038 */ 2039 ushort red; 2040 /** 2041 * The green component of the color 2042 */ 2043 ushort green; 2044 /** 2045 * The blue component of the color 2046 */ 2047 ushort blue; 2048 } 2049 2050 struct GdkCursor; 2051 2052 struct GdkDevice; 2053 2054 struct GdkDeviceManager; 2055 2056 struct GdkDisplay; 2057 2058 struct GdkDisplayManager; 2059 2060 struct GdkDragContext; 2061 2062 struct GdkEvent 2063 { 2064 union 2065 { 2066 /** 2067 * the #GdkEventType 2068 */ 2069 GdkEventType type; 2070 /** 2071 * a #GdkEventAny 2072 */ 2073 GdkEventAny any; 2074 /** 2075 * a #GdkEventExpose 2076 */ 2077 GdkEventExpose expose; 2078 /** 2079 * a #GdkEventVisibility 2080 */ 2081 GdkEventVisibility visibility; 2082 /** 2083 * a #GdkEventMotion 2084 */ 2085 GdkEventMotion motion; 2086 /** 2087 * a #GdkEventButton 2088 */ 2089 GdkEventButton button; 2090 /** 2091 * a #GdkEventTouch 2092 */ 2093 GdkEventTouch touch; 2094 /** 2095 * a #GdkEventScroll 2096 */ 2097 GdkEventScroll scroll; 2098 /** 2099 * a #GdkEventKey 2100 */ 2101 GdkEventKey key; 2102 /** 2103 * a #GdkEventCrossing 2104 */ 2105 GdkEventCrossing crossing; 2106 /** 2107 * a #GdkEventFocus 2108 */ 2109 GdkEventFocus focusChange; 2110 /** 2111 * a #GdkEventConfigure 2112 */ 2113 GdkEventConfigure configure; 2114 /** 2115 * a #GdkEventProperty 2116 */ 2117 GdkEventProperty property; 2118 /** 2119 * a #GdkEventSelection 2120 */ 2121 GdkEventSelection selection; 2122 /** 2123 * a #GdkEventOwnerChange 2124 */ 2125 GdkEventOwnerChange ownerChange; 2126 /** 2127 * a #GdkEventProximity 2128 */ 2129 GdkEventProximity proximity; 2130 /** 2131 * a #GdkEventDND 2132 */ 2133 GdkEventDND dnd; 2134 /** 2135 * a #GdkEventWindowState 2136 */ 2137 GdkEventWindowState windowState; 2138 /** 2139 * a #GdkEventSetting 2140 */ 2141 GdkEventSetting setting; 2142 /** 2143 * a #GdkEventGrabBroken 2144 */ 2145 GdkEventGrabBroken grabBroken; 2146 } 2147 } 2148 2149 /** 2150 * Contains the fields which are common to all event structs. 2151 * Any event pointer can safely be cast to a pointer to a #GdkEventAny to 2152 * access these fields. 2153 */ 2154 struct GdkEventAny 2155 { 2156 /** 2157 * the type of the event. 2158 */ 2159 GdkEventType type; 2160 /** 2161 * the window which received the event. 2162 */ 2163 GdkWindow* window; 2164 /** 2165 * %TRUE if the event was sent explicitly. 2166 */ 2167 byte sendEvent; 2168 } 2169 2170 /** 2171 * Used for button press and button release events. The 2172 * @type field will be one of %GDK_BUTTON_PRESS, 2173 * %GDK_2BUTTON_PRESS, %GDK_3BUTTON_PRESS or %GDK_BUTTON_RELEASE, 2174 * 2175 * Double and triple-clicks result in a sequence of events being received. 2176 * For double-clicks the order of events will be: 2177 * 2178 * - %GDK_BUTTON_PRESS 2179 * - %GDK_BUTTON_RELEASE 2180 * - %GDK_BUTTON_PRESS 2181 * - %GDK_2BUTTON_PRESS 2182 * - %GDK_BUTTON_RELEASE 2183 * 2184 * Note that the first click is received just like a normal 2185 * button press, while the second click results in a %GDK_2BUTTON_PRESS 2186 * being received just after the %GDK_BUTTON_PRESS. 2187 * 2188 * Triple-clicks are very similar to double-clicks, except that 2189 * %GDK_3BUTTON_PRESS is inserted after the third click. The order of the 2190 * events is: 2191 * 2192 * - %GDK_BUTTON_PRESS 2193 * - %GDK_BUTTON_RELEASE 2194 * - %GDK_BUTTON_PRESS 2195 * - %GDK_2BUTTON_PRESS 2196 * - %GDK_BUTTON_RELEASE 2197 * - %GDK_BUTTON_PRESS 2198 * - %GDK_3BUTTON_PRESS 2199 * - %GDK_BUTTON_RELEASE 2200 * 2201 * For a double click to occur, the second button press must occur within 2202 * 1/4 of a second of the first. For a triple click to occur, the third 2203 * button press must also occur within 1/2 second of the first button press. 2204 */ 2205 struct GdkEventButton 2206 { 2207 /** 2208 * the type of the event (%GDK_BUTTON_PRESS, %GDK_2BUTTON_PRESS, 2209 * %GDK_3BUTTON_PRESS or %GDK_BUTTON_RELEASE). 2210 */ 2211 GdkEventType type; 2212 /** 2213 * the window which received the event. 2214 */ 2215 GdkWindow* window; 2216 /** 2217 * %TRUE if the event was sent explicitly. 2218 */ 2219 byte sendEvent; 2220 /** 2221 * the time of the event in milliseconds. 2222 */ 2223 uint time; 2224 /** 2225 * the x coordinate of the pointer relative to the window. 2226 */ 2227 double x; 2228 /** 2229 * the y coordinate of the pointer relative to the window. 2230 */ 2231 double y; 2232 /** 2233 * @x, @y translated to the axes of @device, or %NULL if @device is 2234 * the mouse. 2235 */ 2236 double* axes; 2237 /** 2238 * a bit-mask representing the state of 2239 * the modifier keys (e.g. Control, Shift and Alt) and the pointer 2240 * buttons. See #GdkModifierType. 2241 */ 2242 ModifierType state; 2243 /** 2244 * the button which was pressed or released, numbered from 1 to 5. 2245 * Normally button 1 is the left mouse button, 2 is the middle button, 2246 * and 3 is the right button. On 2-button mice, the middle button can 2247 * often be simulated by pressing both mouse buttons together. 2248 */ 2249 uint button; 2250 /** 2251 * the master device that the event originated from. Use 2252 * gdk_event_get_source_device() to get the slave device. 2253 */ 2254 GdkDevice* device; 2255 /** 2256 * the x coordinate of the pointer relative to the root of the 2257 * screen. 2258 */ 2259 double xRoot; 2260 /** 2261 * the y coordinate of the pointer relative to the root of the 2262 * screen. 2263 */ 2264 double yRoot; 2265 } 2266 2267 /** 2268 * Generated when a window size or position has changed. 2269 */ 2270 struct GdkEventConfigure 2271 { 2272 /** 2273 * the type of the event (%GDK_CONFIGURE). 2274 */ 2275 GdkEventType type; 2276 /** 2277 * the window which received the event. 2278 */ 2279 GdkWindow* window; 2280 /** 2281 * %TRUE if the event was sent explicitly. 2282 */ 2283 byte sendEvent; 2284 /** 2285 * the new x coordinate of the window, relative to its parent. 2286 */ 2287 int x; 2288 /** 2289 * the new y coordinate of the window, relative to its parent. 2290 */ 2291 int y; 2292 /** 2293 * the new width of the window. 2294 */ 2295 int width; 2296 /** 2297 * the new height of the window. 2298 */ 2299 int height; 2300 } 2301 2302 /** 2303 * Generated when the pointer enters or leaves a window. 2304 */ 2305 struct GdkEventCrossing 2306 { 2307 /** 2308 * the type of the event (%GDK_ENTER_NOTIFY or %GDK_LEAVE_NOTIFY). 2309 */ 2310 GdkEventType type; 2311 /** 2312 * the window which received the event. 2313 */ 2314 GdkWindow* window; 2315 /** 2316 * %TRUE if the event was sent explicitly. 2317 */ 2318 byte sendEvent; 2319 /** 2320 * the window that was entered or left. 2321 */ 2322 GdkWindow* subwindow; 2323 /** 2324 * the time of the event in milliseconds. 2325 */ 2326 uint time; 2327 /** 2328 * the x coordinate of the pointer relative to the window. 2329 */ 2330 double x; 2331 /** 2332 * the y coordinate of the pointer relative to the window. 2333 */ 2334 double y; 2335 /** 2336 * the x coordinate of the pointer relative to the root of the screen. 2337 */ 2338 double xRoot; 2339 /** 2340 * the y coordinate of the pointer relative to the root of the screen. 2341 */ 2342 double yRoot; 2343 /** 2344 * the crossing mode (%GDK_CROSSING_NORMAL, %GDK_CROSSING_GRAB, 2345 * %GDK_CROSSING_UNGRAB, %GDK_CROSSING_GTK_GRAB, %GDK_CROSSING_GTK_UNGRAB or 2346 * %GDK_CROSSING_STATE_CHANGED). %GDK_CROSSING_GTK_GRAB, %GDK_CROSSING_GTK_UNGRAB, 2347 * and %GDK_CROSSING_STATE_CHANGED were added in 2.14 and are always synthesized, 2348 * never native. 2349 */ 2350 GdkCrossingMode mode; 2351 /** 2352 * the kind of crossing that happened (%GDK_NOTIFY_INFERIOR, 2353 * %GDK_NOTIFY_ANCESTOR, %GDK_NOTIFY_VIRTUAL, %GDK_NOTIFY_NONLINEAR or 2354 * %GDK_NOTIFY_NONLINEAR_VIRTUAL). 2355 */ 2356 GdkNotifyType detail; 2357 /** 2358 * %TRUE if @window is the focus window or an inferior. 2359 */ 2360 bool focus; 2361 /** 2362 * a bit-mask representing the state of 2363 * the modifier keys (e.g. Control, Shift and Alt) and the pointer 2364 * buttons. See #GdkModifierType. 2365 */ 2366 ModifierType state; 2367 } 2368 2369 /** 2370 * Generated during DND operations. 2371 */ 2372 struct GdkEventDND 2373 { 2374 /** 2375 * the type of the event (%GDK_DRAG_ENTER, %GDK_DRAG_LEAVE, 2376 * %GDK_DRAG_MOTION, %GDK_DRAG_STATUS, %GDK_DROP_START or 2377 * %GDK_DROP_FINISHED). 2378 */ 2379 GdkEventType type; 2380 /** 2381 * the window which received the event. 2382 */ 2383 GdkWindow* window; 2384 /** 2385 * %TRUE if the event was sent explicitly. 2386 */ 2387 byte sendEvent; 2388 /** 2389 * the #GdkDragContext for the current DND operation. 2390 */ 2391 GdkDragContext* context; 2392 /** 2393 * the time of the event in milliseconds. 2394 */ 2395 uint time; 2396 /** 2397 * the x coordinate of the pointer relative to the root of the 2398 * screen, only set for %GDK_DRAG_MOTION and %GDK_DROP_START. 2399 */ 2400 short xRoot; 2401 /** 2402 * the y coordinate of the pointer relative to the root of the 2403 * screen, only set for %GDK_DRAG_MOTION and %GDK_DROP_START. 2404 */ 2405 short yRoot; 2406 } 2407 2408 /** 2409 * Generated when all or part of a window becomes visible and needs to be 2410 * redrawn. 2411 */ 2412 struct GdkEventExpose 2413 { 2414 /** 2415 * the type of the event (%GDK_EXPOSE or %GDK_DAMAGE). 2416 */ 2417 GdkEventType type; 2418 /** 2419 * the window which received the event. 2420 */ 2421 GdkWindow* window; 2422 /** 2423 * %TRUE if the event was sent explicitly. 2424 */ 2425 byte sendEvent; 2426 /** 2427 * bounding box of @region. 2428 */ 2429 GdkRectangle area; 2430 /** 2431 * the region that needs to be redrawn. 2432 */ 2433 cairo_region_t* region; 2434 /** 2435 * the number of contiguous %GDK_EXPOSE events following this one. 2436 * The only use for this is “exposure compression”, i.e. handling all 2437 * contiguous %GDK_EXPOSE events in one go, though GDK performs some 2438 * exposure compression so this is not normally needed. 2439 */ 2440 int count; 2441 } 2442 2443 /** 2444 * Describes a change of keyboard focus. 2445 */ 2446 struct GdkEventFocus 2447 { 2448 /** 2449 * the type of the event (%GDK_FOCUS_CHANGE). 2450 */ 2451 GdkEventType type; 2452 /** 2453 * the window which received the event. 2454 */ 2455 GdkWindow* window; 2456 /** 2457 * %TRUE if the event was sent explicitly. 2458 */ 2459 byte sendEvent; 2460 /** 2461 * %TRUE if the window has gained the keyboard focus, %FALSE if 2462 * it has lost the focus. 2463 */ 2464 short inn; 2465 } 2466 2467 /** 2468 * Generated when a pointer or keyboard grab is broken. On X11, this happens 2469 * when the grab window becomes unviewable (i.e. it or one of its ancestors 2470 * is unmapped), or if the same application grabs the pointer or keyboard 2471 * again. Note that implicit grabs (which are initiated by button presses) 2472 * can also cause #GdkEventGrabBroken events. 2473 * 2474 * Since: 2.8 2475 */ 2476 struct GdkEventGrabBroken 2477 { 2478 /** 2479 * the type of the event (%GDK_GRAB_BROKEN) 2480 */ 2481 GdkEventType type; 2482 /** 2483 * the window which received the event, i.e. the window 2484 * that previously owned the grab 2485 */ 2486 GdkWindow* window; 2487 /** 2488 * %TRUE if the event was sent explicitly. 2489 */ 2490 byte sendEvent; 2491 /** 2492 * %TRUE if a keyboard grab was broken, %FALSE if a pointer 2493 * grab was broken 2494 */ 2495 bool keyboard; 2496 /** 2497 * %TRUE if the broken grab was implicit 2498 */ 2499 bool implicit; 2500 /** 2501 * If this event is caused by another grab in the same 2502 * application, @grab_window contains the new grab window. Otherwise 2503 * @grab_window is %NULL. 2504 */ 2505 GdkWindow* grabWindow; 2506 } 2507 2508 /** 2509 * Describes a key press or key release event. 2510 */ 2511 struct GdkEventKey 2512 { 2513 /** 2514 * the type of the event (%GDK_KEY_PRESS or %GDK_KEY_RELEASE). 2515 */ 2516 GdkEventType type; 2517 /** 2518 * the window which received the event. 2519 */ 2520 GdkWindow* window; 2521 /** 2522 * %TRUE if the event was sent explicitly. 2523 */ 2524 byte sendEvent; 2525 /** 2526 * the time of the event in milliseconds. 2527 */ 2528 uint time; 2529 /** 2530 * a bit-mask representing the state of 2531 * the modifier keys (e.g. Control, Shift and Alt) and the pointer 2532 * buttons. See #GdkModifierType. 2533 */ 2534 ModifierType state; 2535 /** 2536 * the key that was pressed or released. See the 2537 * `gdk/gdkkeysyms.h` header file for a 2538 * complete list of GDK key codes. 2539 */ 2540 uint keyval; 2541 /** 2542 * the length of @string. 2543 */ 2544 int length; 2545 /** 2546 * a string containing an approximation of the text that 2547 * would result from this keypress. The only correct way to handle text 2548 * input of text is using input methods (see #GtkIMContext), so this 2549 * field is deprecated and should never be used. 2550 * (gdk_unicode_to_keyval() provides a non-deprecated way of getting 2551 * an approximate translation for a key.) The string is encoded in the 2552 * encoding of the current locale (Note: this for backwards compatibility: 2553 * strings in GTK+ and GDK are typically in UTF-8.) and NUL-terminated. 2554 * In some cases, the translation of the key code will be a single 2555 * NUL byte, in which case looking at @length is necessary to distinguish 2556 * it from the an empty translation. 2557 */ 2558 char* str; 2559 /** 2560 * the raw code of the key that was pressed or released. 2561 */ 2562 ushort hardwareKeycode; 2563 /** 2564 * the keyboard group. 2565 */ 2566 ubyte group; 2567 import std.bitmanip: bitfields; 2568 mixin(bitfields!( 2569 uint, "isModifier", 1, 2570 uint, "", 31 2571 )); 2572 } 2573 2574 /** 2575 * Generated when the pointer moves. 2576 */ 2577 struct GdkEventMotion 2578 { 2579 /** 2580 * the type of the event. 2581 */ 2582 GdkEventType type; 2583 /** 2584 * the window which received the event. 2585 */ 2586 GdkWindow* window; 2587 /** 2588 * %TRUE if the event was sent explicitly. 2589 */ 2590 byte sendEvent; 2591 /** 2592 * the time of the event in milliseconds. 2593 */ 2594 uint time; 2595 /** 2596 * the x coordinate of the pointer relative to the window. 2597 */ 2598 double x; 2599 /** 2600 * the y coordinate of the pointer relative to the window. 2601 */ 2602 double y; 2603 /** 2604 * @x, @y translated to the axes of @device, or %NULL if @device is 2605 * the mouse. 2606 */ 2607 double* axes; 2608 /** 2609 * a bit-mask representing the state of 2610 * the modifier keys (e.g. Control, Shift and Alt) and the pointer 2611 * buttons. See #GdkModifierType. 2612 */ 2613 ModifierType state; 2614 /** 2615 * set to 1 if this event is just a hint, see the 2616 * %GDK_POINTER_MOTION_HINT_MASK value of #GdkEventMask. 2617 */ 2618 short isHint; 2619 /** 2620 * the master device that the event originated from. Use 2621 * gdk_event_get_source_device() to get the slave device. 2622 */ 2623 GdkDevice* device; 2624 /** 2625 * the x coordinate of the pointer relative to the root of the 2626 * screen. 2627 */ 2628 double xRoot; 2629 /** 2630 * the y coordinate of the pointer relative to the root of the 2631 * screen. 2632 */ 2633 double yRoot; 2634 } 2635 2636 /** 2637 * Generated when the owner of a selection changes. On X11, this 2638 * information is only available if the X server supports the XFIXES 2639 * extension. 2640 * 2641 * Since: 2.6 2642 */ 2643 struct GdkEventOwnerChange 2644 { 2645 /** 2646 * the type of the event (%GDK_OWNER_CHANGE). 2647 */ 2648 GdkEventType type; 2649 /** 2650 * the window which received the event 2651 */ 2652 GdkWindow* window; 2653 /** 2654 * %TRUE if the event was sent explicitly. 2655 */ 2656 byte sendEvent; 2657 /** 2658 * the new owner of the selection, or %NULL if there is none 2659 */ 2660 GdkWindow* owner; 2661 /** 2662 * the reason for the ownership change as a #GdkOwnerChange value 2663 */ 2664 GdkOwnerChange reason; 2665 /** 2666 * the atom identifying the selection 2667 */ 2668 GdkAtom selection; 2669 /** 2670 * the timestamp of the event 2671 */ 2672 uint time; 2673 /** 2674 * the time at which the selection ownership was taken 2675 * over 2676 */ 2677 uint selectionTime; 2678 } 2679 2680 /** 2681 * Describes a property change on a window. 2682 */ 2683 struct GdkEventProperty 2684 { 2685 /** 2686 * the type of the event (%GDK_PROPERTY_NOTIFY). 2687 */ 2688 GdkEventType type; 2689 /** 2690 * the window which received the event. 2691 */ 2692 GdkWindow* window; 2693 /** 2694 * %TRUE if the event was sent explicitly. 2695 */ 2696 byte sendEvent; 2697 /** 2698 * the property that was changed. 2699 */ 2700 GdkAtom atom; 2701 /** 2702 * the time of the event in milliseconds. 2703 */ 2704 uint time; 2705 /** 2706 * whether the property was changed 2707 * (%GDK_PROPERTY_NEW_VALUE) or deleted (%GDK_PROPERTY_DELETE). 2708 */ 2709 PropertyState state; 2710 } 2711 2712 /** 2713 * Proximity events are generated when using GDK’s wrapper for the 2714 * XInput extension. The XInput extension is an add-on for standard X 2715 * that allows you to use nonstandard devices such as graphics tablets. 2716 * A proximity event indicates that the stylus has moved in or out of 2717 * contact with the tablet, or perhaps that the user’s finger has moved 2718 * in or out of contact with a touch screen. 2719 * 2720 * This event type will be used pretty rarely. It only is important for 2721 * XInput aware programs that are drawing their own cursor. 2722 */ 2723 struct GdkEventProximity 2724 { 2725 /** 2726 * the type of the event (%GDK_PROXIMITY_IN or %GDK_PROXIMITY_OUT). 2727 */ 2728 GdkEventType type; 2729 /** 2730 * the window which received the event. 2731 */ 2732 GdkWindow* window; 2733 /** 2734 * %TRUE if the event was sent explicitly. 2735 */ 2736 byte sendEvent; 2737 /** 2738 * the time of the event in milliseconds. 2739 */ 2740 uint time; 2741 /** 2742 * the master device that the event originated from. Use 2743 * gdk_event_get_source_device() to get the slave device. 2744 */ 2745 GdkDevice* device; 2746 } 2747 2748 /** 2749 * Generated from button presses for the buttons 4 to 7. Wheel mice are 2750 * usually configured to generate button press events for buttons 4 and 5 2751 * when the wheel is turned. 2752 * 2753 * Some GDK backends can also generate “smooth” scroll events, which 2754 * can be recognized by the %GDK_SCROLL_SMOOTH scroll direction. For 2755 * these, the scroll deltas can be obtained with 2756 * gdk_event_get_scroll_deltas(). 2757 */ 2758 struct GdkEventScroll 2759 { 2760 /** 2761 * the type of the event (%GDK_SCROLL). 2762 */ 2763 GdkEventType type; 2764 /** 2765 * the window which received the event. 2766 */ 2767 GdkWindow* window; 2768 /** 2769 * %TRUE if the event was sent explicitly. 2770 */ 2771 byte sendEvent; 2772 /** 2773 * the time of the event in milliseconds. 2774 */ 2775 uint time; 2776 /** 2777 * the x coordinate of the pointer relative to the window. 2778 */ 2779 double x; 2780 /** 2781 * the y coordinate of the pointer relative to the window. 2782 */ 2783 double y; 2784 /** 2785 * a bit-mask representing the state of 2786 * the modifier keys (e.g. Control, Shift and Alt) and the pointer 2787 * buttons. See #GdkModifierType. 2788 */ 2789 ModifierType state; 2790 /** 2791 * the direction to scroll to (one of %GDK_SCROLL_UP, 2792 * %GDK_SCROLL_DOWN, %GDK_SCROLL_LEFT, %GDK_SCROLL_RIGHT or 2793 * %GDK_SCROLL_SMOOTH). 2794 */ 2795 GdkScrollDirection direction; 2796 /** 2797 * the master device that the event originated from. Use 2798 * gdk_event_get_source_device() to get the slave device. 2799 */ 2800 GdkDevice* device; 2801 /** 2802 * the x coordinate of the pointer relative to the root of the 2803 * screen. 2804 */ 2805 double xRoot; 2806 /** 2807 * the y coordinate of the pointer relative to the root of the 2808 * screen. 2809 */ 2810 double yRoot; 2811 /** 2812 * the x coordinate of the scroll delta 2813 */ 2814 double deltaX; 2815 /** 2816 * the y coordinate of the scroll delta 2817 */ 2818 double deltaY; 2819 } 2820 2821 /** 2822 * Generated when a selection is requested or ownership of a selection 2823 * is taken over by another client application. 2824 */ 2825 struct GdkEventSelection 2826 { 2827 /** 2828 * the type of the event (%GDK_SELECTION_CLEAR, 2829 * %GDK_SELECTION_NOTIFY or %GDK_SELECTION_REQUEST). 2830 */ 2831 GdkEventType type; 2832 /** 2833 * the window which received the event. 2834 */ 2835 GdkWindow* window; 2836 /** 2837 * %TRUE if the event was sent explicitly. 2838 */ 2839 byte sendEvent; 2840 /** 2841 * the selection. 2842 */ 2843 GdkAtom selection; 2844 /** 2845 * the target to which the selection should be converted. 2846 */ 2847 GdkAtom target; 2848 /** 2849 * the property in which to place the result of the conversion. 2850 */ 2851 GdkAtom property; 2852 /** 2853 * the time of the event in milliseconds. 2854 */ 2855 uint time; 2856 /** 2857 * the window on which to place @property or %NULL if none. 2858 */ 2859 GdkWindow* requestor; 2860 } 2861 2862 struct GdkEventSequence; 2863 2864 /** 2865 * Generated when a setting is modified. 2866 */ 2867 struct GdkEventSetting 2868 { 2869 /** 2870 * the type of the event (%GDK_SETTING). 2871 */ 2872 GdkEventType type; 2873 /** 2874 * the window which received the event. 2875 */ 2876 GdkWindow* window; 2877 /** 2878 * %TRUE if the event was sent explicitly. 2879 */ 2880 byte sendEvent; 2881 /** 2882 * what happened to the setting (%GDK_SETTING_ACTION_NEW, 2883 * %GDK_SETTING_ACTION_CHANGED or %GDK_SETTING_ACTION_DELETED). 2884 */ 2885 GdkSettingAction action; 2886 /** 2887 * the name of the setting. 2888 */ 2889 char* name; 2890 } 2891 2892 /** 2893 * Used for touch events. 2894 * @type field will be one of %GDK_TOUCH_BEGIN, %GDK_TOUCH_UPDATE, 2895 * %GDK_TOUCH_END or %GDK_TOUCH_CANCEL. 2896 * 2897 * Touch events are grouped into sequences by means of the @sequence 2898 * field, which can also be obtained with gdk_event_get_event_sequence(). 2899 * Each sequence begins with a %GDK_TOUCH_BEGIN event, followed by 2900 * any number of %GDK_TOUCH_UPDATE events, and ends with a %GDK_TOUCH_END 2901 * (or %GDK_TOUCH_CANCEL) event. With multitouch devices, there may be 2902 * several active sequences at the same time. 2903 */ 2904 struct GdkEventTouch 2905 { 2906 /** 2907 * the type of the event (%GDK_TOUCH_BEGIN, %GDK_TOUCH_UPDATE, 2908 * %GDK_TOUCH_END, %GDK_TOUCH_CANCEL) 2909 */ 2910 GdkEventType type; 2911 /** 2912 * the window which received the event 2913 */ 2914 GdkWindow* window; 2915 /** 2916 * %TRUE if the event was sent explicitly. 2917 */ 2918 byte sendEvent; 2919 /** 2920 * the time of the event in milliseconds. 2921 */ 2922 uint time; 2923 /** 2924 * the x coordinate of the pointer relative to the window 2925 */ 2926 double x; 2927 /** 2928 * the y coordinate of the pointer relative to the window 2929 */ 2930 double y; 2931 /** 2932 * @x, @y translated to the axes of @device, or %NULL if @device is 2933 * the mouse 2934 */ 2935 double* axes; 2936 /** 2937 * a bit-mask representing the state of 2938 * the modifier keys (e.g. Control, Shift and Alt) and the pointer 2939 * buttons. See #GdkModifierType 2940 */ 2941 ModifierType state; 2942 /** 2943 * the event sequence that the event belongs to 2944 */ 2945 GdkEventSequence* sequence; 2946 /** 2947 * whether the event should be used for emulating 2948 * pointer event 2949 */ 2950 bool emulatingPointer; 2951 /** 2952 * the master device that the event originated from. Use 2953 * gdk_event_get_source_device() to get the slave device. 2954 */ 2955 GdkDevice* device; 2956 /** 2957 * the x coordinate of the pointer relative to the root of the 2958 * screen 2959 */ 2960 double xRoot; 2961 /** 2962 * the y coordinate of the pointer relative to the root of the 2963 * screen 2964 */ 2965 double yRoot; 2966 } 2967 2968 /** 2969 * Generated when the window visibility status has changed. 2970 * 2971 * Deprecated: Modern composited windowing systems with pervasive 2972 * transparency make it impossible to track the visibility of a window 2973 * reliably, so this event can not be guaranteed to provide useful 2974 * information. 2975 */ 2976 struct GdkEventVisibility 2977 { 2978 /** 2979 * the type of the event (%GDK_VISIBILITY_NOTIFY). 2980 */ 2981 GdkEventType type; 2982 /** 2983 * the window which received the event. 2984 */ 2985 GdkWindow* window; 2986 /** 2987 * %TRUE if the event was sent explicitly. 2988 */ 2989 byte sendEvent; 2990 /** 2991 * the new visibility state (%GDK_VISIBILITY_FULLY_OBSCURED, 2992 * %GDK_VISIBILITY_PARTIAL or %GDK_VISIBILITY_UNOBSCURED). 2993 */ 2994 GdkVisibilityState state; 2995 } 2996 2997 /** 2998 * Generated when the state of a toplevel window changes. 2999 */ 3000 struct GdkEventWindowState 3001 { 3002 /** 3003 * the type of the event (%GDK_WINDOW_STATE). 3004 */ 3005 GdkEventType type; 3006 /** 3007 * the window which received the event. 3008 */ 3009 GdkWindow* window; 3010 /** 3011 * %TRUE if the event was sent explicitly. 3012 */ 3013 byte sendEvent; 3014 /** 3015 * mask specifying what flags have changed. 3016 */ 3017 GdkWindowState changedMask; 3018 /** 3019 * the new window state, a combination of 3020 * #GdkWindowState bits. 3021 */ 3022 GdkWindowState newWindowState; 3023 } 3024 3025 struct GdkFrameClock; 3026 3027 struct GdkFrameClockClass; 3028 3029 struct GdkFrameClockPrivate; 3030 3031 struct GdkFrameTimings; 3032 3033 struct GdkGLContext; 3034 3035 /** 3036 * The #GdkGeometry struct gives the window manager information about 3037 * a window’s geometry constraints. Normally you would set these on 3038 * the GTK+ level using gtk_window_set_geometry_hints(). #GtkWindow 3039 * then sets the hints on the #GdkWindow it creates. 3040 * 3041 * gdk_window_set_geometry_hints() expects the hints to be fully valid already 3042 * and simply passes them to the window manager; in contrast, 3043 * gtk_window_set_geometry_hints() performs some interpretation. For example, 3044 * #GtkWindow will apply the hints to the geometry widget instead of the 3045 * toplevel window, if you set a geometry widget. Also, the 3046 * @min_width/@min_height/@max_width/@max_height fields may be set to -1, and 3047 * #GtkWindow will substitute the size request of the window or geometry widget. 3048 * If the minimum size hint is not provided, #GtkWindow will use its requisition 3049 * as the minimum size. If the minimum size is provided and a geometry widget is 3050 * set, #GtkWindow will take the minimum size as the minimum size of the 3051 * geometry widget rather than the entire window. The base size is treated 3052 * similarly. 3053 * 3054 * The canonical use-case for gtk_window_set_geometry_hints() is to get a 3055 * terminal widget to resize properly. Here, the terminal text area should be 3056 * the geometry widget; #GtkWindow will then automatically set the base size to 3057 * the size of other widgets in the terminal window, such as the menubar and 3058 * scrollbar. Then, the @width_inc and @height_inc fields should be set to the 3059 * size of one character in the terminal. Finally, the base size should be set 3060 * to the size of one character. The net effect is that the minimum size of the 3061 * terminal will have a 1x1 character terminal area, and only terminal sizes on 3062 * the “character grid” will be allowed. 3063 * 3064 * Here’s an example of how the terminal example would be implemented, assuming 3065 * a terminal area widget called “terminal” and a toplevel window “toplevel”: 3066 * 3067 * |[<!-- language="C" --> 3068 * GdkGeometry hints; 3069 * 3070 * hints.base_width = terminal->char_width; 3071 * hints.base_height = terminal->char_height; 3072 * hints.min_width = terminal->char_width; 3073 * hints.min_height = terminal->char_height; 3074 * hints.width_inc = terminal->char_width; 3075 * hints.height_inc = terminal->char_height; 3076 * 3077 * gtk_window_set_geometry_hints (GTK_WINDOW (toplevel), 3078 * GTK_WIDGET (terminal), 3079 * &hints, 3080 * GDK_HINT_RESIZE_INC | 3081 * GDK_HINT_MIN_SIZE | 3082 * GDK_HINT_BASE_SIZE); 3083 * ]| 3084 * 3085 * The other useful fields are the @min_aspect and @max_aspect fields; these 3086 * contain a width/height ratio as a floating point number. If a geometry widget 3087 * is set, the aspect applies to the geometry widget rather than the entire 3088 * window. The most common use of these hints is probably to set @min_aspect and 3089 * @max_aspect to the same value, thus forcing the window to keep a constant 3090 * aspect ratio. 3091 */ 3092 struct GdkGeometry 3093 { 3094 /** 3095 * minimum width of window (or -1 to use requisition, with 3096 * #GtkWindow only) 3097 */ 3098 int minWidth; 3099 /** 3100 * minimum height of window (or -1 to use requisition, with 3101 * #GtkWindow only) 3102 */ 3103 int minHeight; 3104 /** 3105 * maximum width of window (or -1 to use requisition, with 3106 * #GtkWindow only) 3107 */ 3108 int maxWidth; 3109 /** 3110 * maximum height of window (or -1 to use requisition, with 3111 * #GtkWindow only) 3112 */ 3113 int maxHeight; 3114 /** 3115 * allowed window widths are @base_width + @width_inc * N where N 3116 * is any integer (-1 allowed with #GtkWindow) 3117 */ 3118 int baseWidth; 3119 /** 3120 * allowed window widths are @base_height + @height_inc * N where 3121 * N is any integer (-1 allowed with #GtkWindow) 3122 */ 3123 int baseHeight; 3124 /** 3125 * width resize increment 3126 */ 3127 int widthInc; 3128 /** 3129 * height resize increment 3130 */ 3131 int heightInc; 3132 /** 3133 * minimum width/height ratio 3134 */ 3135 double minAspect; 3136 /** 3137 * maximum width/height ratio 3138 */ 3139 double maxAspect; 3140 /** 3141 * window gravity, see gtk_window_set_gravity() 3142 */ 3143 GdkGravity winGravity; 3144 } 3145 3146 struct GdkKeymap; 3147 3148 /** 3149 * A #GdkKeymapKey is a hardware key that can be mapped to a keyval. 3150 */ 3151 struct GdkKeymapKey 3152 { 3153 /** 3154 * the hardware keycode. This is an identifying number for a 3155 * physical key. 3156 */ 3157 uint keycode; 3158 /** 3159 * indicates movement in a horizontal direction. Usually groups are used 3160 * for two different languages. In group 0, a key might have two English 3161 * characters, and in group 1 it might have two Hebrew characters. The Hebrew 3162 * characters will be printed on the key next to the English characters. 3163 */ 3164 int group; 3165 /** 3166 * indicates which symbol on the key will be used, in a vertical direction. 3167 * So on a standard US keyboard, the key with the number “1” on it also has the 3168 * exclamation point ("!") character on it. The level indicates whether to use 3169 * the “1” or the “!” symbol. The letter keys are considered to have a lowercase 3170 * letter at level 0, and an uppercase letter at level 1, though only the 3171 * uppercase letter is printed. 3172 */ 3173 int level; 3174 } 3175 3176 /** 3177 * Defines the x and y coordinates of a point. 3178 */ 3179 struct GdkPoint 3180 { 3181 /** 3182 * the x coordinate of the point. 3183 */ 3184 int x; 3185 /** 3186 * the y coordinate of the point. 3187 */ 3188 int y; 3189 } 3190 3191 struct GdkRGBA 3192 { 3193 /** 3194 * The intensity of the red channel from 0.0 to 1.0 inclusive 3195 */ 3196 double red; 3197 /** 3198 * The intensity of the green channel from 0.0 to 1.0 inclusive 3199 */ 3200 double green; 3201 /** 3202 * The intensity of the blue channel from 0.0 to 1.0 inclusive 3203 */ 3204 double blue; 3205 /** 3206 * The opacity of the color from 0.0 for completely translucent to 3207 * 1.0 for opaque 3208 */ 3209 double alpha; 3210 } 3211 3212 struct GdkScreen; 3213 3214 /** 3215 * A #GdkTimeCoord stores a single event in a motion history. 3216 */ 3217 struct GdkTimeCoord 3218 { 3219 /** 3220 * The timestamp for this event. 3221 */ 3222 uint time; 3223 /** 3224 * the values of the device’s axes. 3225 */ 3226 double[128] axes; 3227 } 3228 3229 struct GdkVisual; 3230 3231 struct GdkWindow; 3232 3233 /** 3234 * Attributes to use for a newly-created window. 3235 */ 3236 struct GdkWindowAttr 3237 { 3238 /** 3239 * title of the window (for toplevel windows) 3240 */ 3241 char* title; 3242 /** 3243 * event mask (see gdk_window_set_events()) 3244 */ 3245 int eventMask; 3246 /** 3247 * X coordinate relative to parent window (see gdk_window_move()) 3248 */ 3249 int x; 3250 /** 3251 * Y coordinate relative to parent window (see gdk_window_move()) 3252 */ 3253 int y; 3254 /** 3255 * width of window 3256 */ 3257 int width; 3258 /** 3259 * height of window 3260 */ 3261 int height; 3262 /** 3263 * #GDK_INPUT_OUTPUT (normal window) or #GDK_INPUT_ONLY (invisible 3264 * window that receives events) 3265 */ 3266 GdkWindowWindowClass wclass; 3267 /** 3268 * #GdkVisual for window 3269 */ 3270 GdkVisual* visual; 3271 /** 3272 * type of window 3273 */ 3274 GdkWindowType windowType; 3275 /** 3276 * cursor for the window (see gdk_window_set_cursor()) 3277 */ 3278 GdkCursor* cursor; 3279 /** 3280 * don’t use (see gtk_window_set_wmclass()) 3281 */ 3282 char* wmclassName; 3283 /** 3284 * don’t use (see gtk_window_set_wmclass()) 3285 */ 3286 char* wmclassClass; 3287 /** 3288 * %TRUE to bypass the window manager 3289 */ 3290 bool overrideRedirect; 3291 /** 3292 * a hint of the function of the window 3293 */ 3294 GdkWindowTypeHint typeHint; 3295 } 3296 3297 struct GdkWindowClass 3298 { 3299 GObjectClass parentClass; 3300 extern(C) GdkWindow* function(GdkWindow* window, double x, double y) pickEmbeddedChild; 3301 extern(C) void function(GdkWindow* window, double offscreenX, double offscreenY, double* embedderX, double* embedderY) toEmbedder; 3302 extern(C) void function(GdkWindow* window, double embedderX, double embedderY, double* offscreenX, double* offscreenY) fromEmbedder; 3303 extern(C) cairo_surface_t* function(GdkWindow* window, int width, int height) createSurface; 3304 extern(C) void function() GdkReserved1; 3305 extern(C) void function() GdkReserved2; 3306 extern(C) void function() GdkReserved3; 3307 extern(C) void function() GdkReserved4; 3308 extern(C) void function() GdkReserved5; 3309 extern(C) void function() GdkReserved6; 3310 extern(C) void function() GdkReserved7; 3311 extern(C) void function() GdkReserved8; 3312 } 3313 3314 struct GdkWindowRedirect; 3315 3316 struct GdkX11Window; 3317 3318 struct GdkX11WindowClass; 3319 3320 /** 3321 * Specifies the type of function passed to gdk_event_handler_set() to 3322 * handle all GDK events. 3323 * 3324 * Params: 3325 * event = the #GdkEvent to process. 3326 * data = user data set when the event handler was installed with 3327 * gdk_event_handler_set(). 3328 */ 3329 public alias extern(C) void function(GdkEvent* event, void* data) GdkEventFunc; 3330 3331 /** 3332 * Specifies the type of function used to filter native events before they are 3333 * converted to GDK events. 3334 * 3335 * When a filter is called, @event is unpopulated, except for 3336 * `event->window`. The filter may translate the native 3337 * event to a GDK event and store the result in @event, or handle it without 3338 * translation. If the filter translates the event and processing should 3339 * continue, it should return %GDK_FILTER_TRANSLATE. 3340 * 3341 * Params: 3342 * xevent = the native event to filter. 3343 * event = the GDK event to which the X event will be translated. 3344 * data = user data set when the filter was installed. 3345 * 3346 * Return: a #GdkFilterReturn value. 3347 */ 3348 public alias extern(C) GdkFilterReturn function(GdkXEvent* xevent, GdkEvent* event, void* data) GdkFilterFunc; 3349 3350 /** 3351 * A function of this type is passed to gdk_window_invalidate_maybe_recurse(). 3352 * It gets called for each child of the window to determine whether to 3353 * recursively invalidate it or now. 3354 * 3355 * Params: 3356 * window = a #GdkWindow 3357 * userData = user data 3358 * 3359 * Return: %TRUE to invalidate @window recursively 3360 */ 3361 public alias extern(C) int function(GdkWindow* window, void* userData) GdkWindowChildFunc; 3362 3363 /** 3364 * Whenever some area of the window is invalidated (directly in the 3365 * window or in a child window) this gets called with @region in 3366 * the coordinate space of @window. You can use @region to just 3367 * keep track of the dirty region, or you can actually change 3368 * @region in case you are doing display tricks like showing 3369 * a child in multiple places. 3370 * 3371 * Params: 3372 * window = a #GdkWindow 3373 * region = a #cairo_region_t 3374 * 3375 * Since: 3.10 3376 */ 3377 public alias extern(C) void function(GdkWindow* window, cairo_region_t* region) GdkWindowInvalidateHandlerFunc;