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