1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software",, to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (c) 2004 Novell, Inc.
23 // Peter Bartok pbartok@novell.com
30 using System.ComponentModel;
31 using System.Collections;
33 using System.Diagnostics;
34 using System.Runtime.InteropServices;
37 namespace System.Windows.Forms {
39 // In the structures below, fields of type long are mapped to IntPtr.
40 // This will work on all platforms where sizeof(long)==sizeof(void*), which
41 // is almost all platforms except WIN64.
44 [StructLayout(LayoutKind.Sequential)]
45 internal struct XAnyEvent {
46 internal XEventName type;
47 internal IntPtr serial;
48 internal bool send_event;
49 internal IntPtr display;
50 internal IntPtr window;
53 [StructLayout(LayoutKind.Sequential)]
54 internal struct XKeyEvent {
55 internal XEventName type;
56 internal IntPtr serial;
57 internal bool send_event;
58 internal IntPtr display;
59 internal IntPtr window;
61 internal IntPtr subwindow;
69 internal bool same_screen;
72 [StructLayout(LayoutKind.Sequential)]
73 internal struct XButtonEvent {
74 internal XEventName type;
75 internal IntPtr serial;
76 internal bool send_event;
77 internal IntPtr display;
78 internal IntPtr window;
80 internal IntPtr subwindow;
88 internal bool same_screen;
91 [StructLayout(LayoutKind.Sequential)]
92 internal struct XMotionEvent {
93 internal XEventName type;
94 internal IntPtr serial;
95 internal bool send_event;
96 internal IntPtr display;
97 internal IntPtr window;
99 internal IntPtr subwindow;
100 internal IntPtr time;
106 internal byte is_hint;
107 internal bool same_screen;
110 [StructLayout(LayoutKind.Sequential)]
111 internal struct XCrossingEvent {
112 internal XEventName type;
113 internal IntPtr serial;
114 internal bool send_event;
115 internal IntPtr display;
116 internal IntPtr window;
117 internal IntPtr root;
118 internal IntPtr subwindow;
119 internal IntPtr time;
124 internal NotifyMode mode;
125 internal NotifyDetail detail;
126 internal bool same_screen;
131 [StructLayout(LayoutKind.Sequential)]
132 internal struct XFocusChangeEvent {
133 internal XEventName type;
134 internal IntPtr serial;
135 internal bool send_event;
136 internal IntPtr display;
137 internal IntPtr window;
139 internal NotifyDetail detail;
142 [StructLayout(LayoutKind.Sequential)]
143 internal struct XKeymapEvent {
144 internal XEventName type;
145 internal IntPtr serial;
146 internal bool send_event;
147 internal IntPtr display;
148 internal IntPtr window;
149 internal byte key_vector0;
150 internal byte key_vector1;
151 internal byte key_vector2;
152 internal byte key_vector3;
153 internal byte key_vector4;
154 internal byte key_vector5;
155 internal byte key_vector6;
156 internal byte key_vector7;
157 internal byte key_vector8;
158 internal byte key_vector9;
159 internal byte key_vector10;
160 internal byte key_vector11;
161 internal byte key_vector12;
162 internal byte key_vector13;
163 internal byte key_vector14;
164 internal byte key_vector15;
165 internal byte key_vector16;
166 internal byte key_vector17;
167 internal byte key_vector18;
168 internal byte key_vector19;
169 internal byte key_vector20;
170 internal byte key_vector21;
171 internal byte key_vector22;
172 internal byte key_vector23;
173 internal byte key_vector24;
174 internal byte key_vector25;
175 internal byte key_vector26;
176 internal byte key_vector27;
177 internal byte key_vector28;
178 internal byte key_vector29;
179 internal byte key_vector30;
180 internal byte key_vector31;
183 [StructLayout(LayoutKind.Sequential)]
184 internal struct XExposeEvent {
185 internal XEventName type;
186 internal IntPtr serial;
187 internal bool send_event;
188 internal IntPtr display;
189 internal IntPtr window;
197 [StructLayout(LayoutKind.Sequential)]
198 internal struct XGraphicsExposeEvent {
199 internal XEventName type;
200 internal IntPtr serial;
201 internal bool send_event;
202 internal IntPtr display;
203 internal IntPtr drawable;
209 internal int major_code;
210 internal int minor_code;
213 [StructLayout(LayoutKind.Sequential)]
214 internal struct XNoExposeEvent {
215 internal XEventName type;
216 internal IntPtr serial;
217 internal bool send_event;
218 internal IntPtr display;
219 internal IntPtr drawable;
220 internal int major_code;
221 internal int minor_code;
224 [StructLayout(LayoutKind.Sequential)]
225 internal struct XVisibilityEvent {
226 internal XEventName type;
227 internal IntPtr serial;
228 internal bool send_event;
229 internal IntPtr display;
230 internal IntPtr window;
234 [StructLayout(LayoutKind.Sequential)]
235 internal struct XCreateWindowEvent {
236 internal XEventName type;
237 internal IntPtr serial;
238 internal bool send_event;
239 internal IntPtr display;
240 internal IntPtr parent;
241 internal IntPtr window;
246 internal int border_width;
247 internal bool override_redirect;
250 [StructLayout(LayoutKind.Sequential)]
251 internal struct XDestroyWindowEvent {
252 internal XEventName type;
253 internal IntPtr serial;
254 internal bool send_event;
255 internal IntPtr display;
256 internal IntPtr xevent;
257 internal IntPtr window;
260 [StructLayout(LayoutKind.Sequential)]
261 internal struct XUnmapEvent {
262 internal XEventName type;
263 internal IntPtr serial;
264 internal bool send_event;
265 internal IntPtr display;
266 internal IntPtr xevent;
267 internal IntPtr window;
268 internal bool from_configure;
271 [StructLayout(LayoutKind.Sequential)]
272 internal struct XMapEvent {
273 internal XEventName type;
274 internal IntPtr serial;
275 internal bool send_event;
276 internal IntPtr display;
277 internal IntPtr xevent;
278 internal IntPtr window;
279 internal bool override_redirect;
282 [StructLayout(LayoutKind.Sequential)]
283 internal struct XMapRequestEvent {
284 internal XEventName type;
285 internal IntPtr serial;
286 internal bool send_event;
287 internal IntPtr display;
288 internal IntPtr parent;
289 internal IntPtr window;
292 [StructLayout(LayoutKind.Sequential)]
293 internal struct XReparentEvent {
294 internal XEventName type;
295 internal IntPtr serial;
296 internal bool send_event;
297 internal IntPtr display;
298 internal IntPtr xevent;
299 internal IntPtr window;
300 internal IntPtr parent;
303 internal bool override_redirect;
306 [StructLayout(LayoutKind.Sequential)]
307 internal struct XConfigureEvent {
308 internal XEventName type;
309 internal IntPtr serial;
310 internal bool send_event;
311 internal IntPtr display;
312 internal IntPtr xevent;
313 internal IntPtr window;
318 internal int border_width;
319 internal IntPtr above;
320 internal bool override_redirect;
323 [StructLayout(LayoutKind.Sequential)]
324 internal struct XGravityEvent {
325 internal XEventName type;
326 internal IntPtr serial;
327 internal bool send_event;
328 internal IntPtr display;
329 internal IntPtr xevent;
330 internal IntPtr window;
335 [StructLayout(LayoutKind.Sequential)]
336 internal struct XResizeRequestEvent {
337 internal XEventName type;
338 internal IntPtr serial;
339 internal bool send_event;
340 internal IntPtr display;
341 internal IntPtr window;
346 [StructLayout(LayoutKind.Sequential)]
347 internal struct XConfigureRequestEvent {
348 internal XEventName type;
349 internal IntPtr serial;
350 internal bool send_event;
351 internal IntPtr display;
352 internal IntPtr parent;
353 internal IntPtr window;
358 internal int border_width;
359 internal IntPtr above;
361 internal IntPtr value_mask;
364 [StructLayout(LayoutKind.Sequential)]
365 internal struct XCirculateEvent {
366 internal XEventName type;
367 internal IntPtr serial;
368 internal bool send_event;
369 internal IntPtr display;
370 internal IntPtr xevent;
371 internal IntPtr window;
375 [StructLayout(LayoutKind.Sequential)]
376 internal struct XCirculateRequestEvent {
377 internal XEventName type;
378 internal IntPtr serial;
379 internal bool send_event;
380 internal IntPtr display;
381 internal IntPtr parent;
382 internal IntPtr window;
386 [StructLayout(LayoutKind.Sequential)]
387 internal struct XPropertyEvent {
388 internal XEventName type;
389 internal IntPtr serial;
390 internal bool send_event;
391 internal IntPtr display;
392 internal IntPtr window;
393 internal IntPtr atom;
394 internal IntPtr time;
398 [StructLayout(LayoutKind.Sequential)]
399 internal struct XSelectionClearEvent {
400 internal XEventName type;
401 internal IntPtr serial;
402 internal bool send_event;
403 internal IntPtr display;
404 internal IntPtr window;
405 internal IntPtr selection;
406 internal IntPtr time;
409 [StructLayout(LayoutKind.Sequential)]
410 internal struct XSelectionRequestEvent {
411 internal XEventName type;
412 internal IntPtr serial;
413 internal bool send_event;
414 internal IntPtr display;
415 internal IntPtr owner;
416 internal IntPtr requestor;
417 internal IntPtr selection;
418 internal IntPtr target;
419 internal IntPtr property;
420 internal IntPtr time;
423 [StructLayout(LayoutKind.Sequential)]
424 internal struct XSelectionEvent {
425 internal XEventName type;
426 internal IntPtr serial;
427 internal bool send_event;
428 internal IntPtr display;
429 internal IntPtr requestor;
430 internal IntPtr selection;
431 internal IntPtr target;
432 internal IntPtr property;
433 internal IntPtr time;
436 [StructLayout(LayoutKind.Sequential)]
437 internal struct XColormapEvent {
438 internal XEventName type;
439 internal IntPtr serial;
440 internal bool send_event;
441 internal IntPtr display;
442 internal IntPtr window;
443 internal IntPtr colormap;
448 [StructLayout(LayoutKind.Sequential)]
449 internal struct XClientMessageEvent {
450 internal XEventName type;
451 internal IntPtr serial;
452 internal bool send_event;
453 internal IntPtr display;
454 internal IntPtr window;
455 internal IntPtr message_type;
457 internal IntPtr ptr1;
458 internal IntPtr ptr2;
459 internal IntPtr ptr3;
460 internal IntPtr ptr4;
461 internal IntPtr ptr5;
464 [StructLayout(LayoutKind.Sequential)]
465 internal struct XMappingEvent {
466 internal XEventName type;
467 internal IntPtr serial;
468 internal bool send_event;
469 internal IntPtr display;
470 internal IntPtr window;
471 internal int request;
472 internal int first_keycode;
476 [StructLayout(LayoutKind.Sequential)]
477 internal struct XErrorEvent {
478 internal XEventName type;
479 internal IntPtr display;
480 internal IntPtr resourceid;
481 internal IntPtr serial;
482 internal byte error_code;
483 internal XRequest request_code;
484 internal byte minor_code;
487 [StructLayout(LayoutKind.Sequential)]
488 internal struct XEventPad {
489 internal IntPtr pad0;
490 internal IntPtr pad1;
491 internal IntPtr pad2;
492 internal IntPtr pad3;
493 internal IntPtr pad4;
494 internal IntPtr pad5;
495 internal IntPtr pad6;
496 internal IntPtr pad7;
497 internal IntPtr pad8;
498 internal IntPtr pad9;
499 internal IntPtr pad10;
500 internal IntPtr pad11;
501 internal IntPtr pad12;
502 internal IntPtr pad13;
503 internal IntPtr pad14;
504 internal IntPtr pad15;
505 internal IntPtr pad16;
506 internal IntPtr pad17;
507 internal IntPtr pad18;
508 internal IntPtr pad19;
509 internal IntPtr pad20;
510 internal IntPtr pad21;
511 internal IntPtr pad22;
512 internal IntPtr pad23;
515 [StructLayout(LayoutKind.Explicit)]
516 internal struct XEvent {
517 [ FieldOffset(0) ] internal XEventName type;
518 [ FieldOffset(0) ] internal XAnyEvent AnyEvent;
519 [ FieldOffset(0) ] internal XKeyEvent KeyEvent;
520 [ FieldOffset(0) ] internal XButtonEvent ButtonEvent;
521 [ FieldOffset(0) ] internal XMotionEvent MotionEvent;
522 [ FieldOffset(0) ] internal XCrossingEvent CrossingEvent;
523 [ FieldOffset(0) ] internal XFocusChangeEvent FocusChangeEvent;
524 [ FieldOffset(0) ] internal XExposeEvent ExposeEvent;
525 [ FieldOffset(0) ] internal XGraphicsExposeEvent GraphicsExposeEvent;
526 [ FieldOffset(0) ] internal XNoExposeEvent NoExposeEvent;
527 [ FieldOffset(0) ] internal XVisibilityEvent VisibilityEvent;
528 [ FieldOffset(0) ] internal XCreateWindowEvent CreateWindowEvent;
529 [ FieldOffset(0) ] internal XDestroyWindowEvent DestroyWindowEvent;
530 [ FieldOffset(0) ] internal XUnmapEvent UnmapEvent;
531 [ FieldOffset(0) ] internal XMapEvent MapEvent;
532 [ FieldOffset(0) ] internal XMapRequestEvent MapRequestEvent;
533 [ FieldOffset(0) ] internal XReparentEvent ReparentEvent;
534 [ FieldOffset(0) ] internal XConfigureEvent ConfigureEvent;
535 [ FieldOffset(0) ] internal XGravityEvent GravityEvent;
536 [ FieldOffset(0) ] internal XResizeRequestEvent ResizeRequestEvent;
537 [ FieldOffset(0) ] internal XConfigureRequestEvent ConfigureRequestEvent;
538 [ FieldOffset(0) ] internal XCirculateEvent CirculateEvent;
539 [ FieldOffset(0) ] internal XCirculateRequestEvent CirculateRequestEvent;
540 [ FieldOffset(0) ] internal XPropertyEvent PropertyEvent;
541 [ FieldOffset(0) ] internal XSelectionClearEvent SelectionClearEvent;
542 [ FieldOffset(0) ] internal XSelectionRequestEvent SelectionRequestEvent;
543 [ FieldOffset(0) ] internal XSelectionEvent SelectionEvent;
544 [ FieldOffset(0) ] internal XColormapEvent ColormapEvent;
545 [ FieldOffset(0) ] internal XClientMessageEvent ClientMessageEvent;
546 [ FieldOffset(0) ] internal XMappingEvent MappingEvent;
547 [ FieldOffset(0) ] internal XErrorEvent ErrorEvent;
548 [ FieldOffset(0) ] internal XKeymapEvent KeymapEvent;
550 //[MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst=24)]
551 //[ FieldOffset(0) ] internal int[] pad;
552 [ FieldOffset(0) ] internal XEventPad Pad;
553 public override string ToString() {
554 return type.ToString();
558 [StructLayout(LayoutKind.Sequential)]
559 internal struct XSetWindowAttributes {
560 internal IntPtr background_pixmap;
561 internal IntPtr background_pixel;
562 internal IntPtr border_pixmap;
563 internal IntPtr border_pixel;
564 internal Gravity bit_gravity;
565 internal Gravity win_gravity;
566 internal int backing_store;
567 internal IntPtr backing_planes;
568 internal IntPtr backing_pixel;
569 internal bool save_under;
570 internal IntPtr event_mask;
571 internal IntPtr do_not_propagate_mask;
572 internal bool override_redirect;
573 internal IntPtr colormap;
574 internal IntPtr cursor;
577 [StructLayout(LayoutKind.Sequential)]
578 internal struct XWindowAttributes {
583 internal int border_width;
585 internal IntPtr visual;
586 internal IntPtr root;
587 internal int c_class;
588 internal Gravity bit_gravity;
589 internal Gravity win_gravity;
590 internal int backing_store;
591 internal IntPtr backing_planes;
592 internal IntPtr backing_pixel;
593 internal bool save_under;
594 internal IntPtr colormap;
595 internal bool map_installed;
596 internal MapState map_state;
597 internal IntPtr all_event_masks;
598 internal IntPtr your_event_mask;
599 internal IntPtr do_not_propagate_mask;
600 internal bool override_direct;
601 internal IntPtr screen;
604 [StructLayout(LayoutKind.Sequential)]
605 internal struct XTextProperty {
606 internal string value;
607 internal IntPtr encoding;
609 internal IntPtr nitems;
612 internal enum XWindowClass {
617 internal enum XEventName {
631 VisibilityNotify = 15,
638 ConfigureNotify = 22,
639 ConfigureRequest = 23,
642 CirculateNotify = 26,
643 CirculateRequest = 27,
646 SelectionRequest = 30,
647 SelectionNotify = 31,
656 internal enum SetWindowValuemask {
667 OverrideRedirect = 512,
670 DontPropagate = 4096,
675 internal enum CreateWindowArgs {
682 internal enum Gravity {
696 internal enum XKeySym : uint {
697 XK_BackSpace = 0xFF08,
707 XK_Page_Down = 0xFF56,
713 XK_Control_L = 0xFFE3,
714 XK_Control_R = 0xFFE4,
715 XK_Caps_Lock = 0xFFE5,
716 XK_Shift_Lock = 0xFFE6,
728 internal enum EventMask {
731 KeyReleaseMask = 1<<1,
732 ButtonPressMask = 1<<2,
733 ButtonReleaseMask = 1<<3,
734 EnterWindowMask = 1<<4,
735 LeaveWindowMask = 1<<5,
736 PointerMotionMask = 1<<6,
737 PointerMotionHintMask = 1<<7,
738 Button1MotionMask = 1<<8,
739 Button2MotionMask = 1<<9,
740 Button3MotionMask = 1<<10,
741 Button4MotionMask = 1<<11,
742 Button5MotionMask = 1<<12,
743 ButtonMotionMask = 1<<13,
744 KeymapStateMask = 1<<14,
745 ExposureMask = 1<<15,
746 VisibilityChangeMask = 1<<16,
747 StructureNotifyMask = 1<<17,
748 ResizeRedirectMask = 1<<18,
749 SubstructureNotifyMask = 1<<19,
750 SubstructureRedirectMask= 1<<20,
751 FocusChangeMask = 1<<21,
752 PropertyChangeMask = 1<<22,
753 ColormapChangeMask = 1<<23,
754 OwnerGrabButtonMask = 1<<24
757 internal enum GrabMode {
762 [StructLayout(LayoutKind.Sequential)]
763 internal struct XStandardColormap {
764 internal IntPtr colormap;
765 internal IntPtr red_max;
766 internal IntPtr red_mult;
767 internal IntPtr green_max;
768 internal IntPtr green_mult;
769 internal IntPtr blue_max;
770 internal IntPtr blue_mult;
771 internal IntPtr base_pixel;
772 internal IntPtr visualid;
773 internal IntPtr killid;
776 [StructLayout(LayoutKind.Sequential, Pack=2)]
777 internal struct XColor {
778 internal IntPtr pixel;
780 internal ushort green;
781 internal ushort blue;
810 XA_RESOURCE_MANAGER = 23,
811 XA_RGB_COLOR_MAP = 24,
812 XA_RGB_BEST_MAP = 25,
813 XA_RGB_BLUE_MAP = 26,
814 XA_RGB_DEFAULT_MAP = 27,
815 XA_RGB_GRAY_MAP = 28,
816 XA_RGB_GREEN_MAP = 29,
823 XA_WM_CLIENT_MACHINE = 36,
824 XA_WM_ICON_NAME = 37,
825 XA_WM_ICON_SIZE = 38,
827 XA_WM_NORMAL_HINTS = 40,
828 XA_WM_SIZE_HINTS = 41,
829 XA_WM_ZOOM_HINTS = 42,
834 XA_SUPERSCRIPT_X = 47,
835 XA_SUPERSCRIPT_Y = 48,
838 XA_UNDERLINE_POSITION = 51,
839 XA_UNDERLINE_THICKNESS = 52,
840 XA_STRIKEOUT_ASCENT = 53,
841 XA_STRIKEOUT_DESCENT = 54,
842 XA_ITALIC_ANGLE = 55,
855 XA_WM_TRANSIENT_FOR = 68,
857 XA_LAST_PREDEFINED = 68
860 [StructLayout(LayoutKind.Sequential)]
861 internal struct XScreen {
862 internal IntPtr ext_data;
863 internal IntPtr display;
864 internal IntPtr root;
868 internal int mheight;
869 internal int ndepths;
870 internal IntPtr depths;
871 internal int root_depth;
872 internal IntPtr root_visual;
873 internal IntPtr default_gc;
874 internal IntPtr cmap;
875 internal IntPtr white_pixel;
876 internal IntPtr black_pixel;
877 internal int max_maps;
878 internal int min_maps;
879 internal int backing_store;
880 internal bool save_unders;
881 internal IntPtr root_input_mask;
885 internal enum ChangeWindowFlags {
890 CWBorderWidth = 1<<4,
895 internal enum StackMode {
903 [StructLayout(LayoutKind.Sequential)]
904 internal struct XWindowChanges {
909 internal int border_width;
910 internal IntPtr sibling;
911 internal StackMode stack_mode;
915 internal enum ColorFlags {
921 internal enum NotifyMode {
927 internal enum NotifyDetail {
932 NotifyNonlinearVirtual = 4,
934 NotifyPointerRoot = 6,
938 [StructLayout(LayoutKind.Sequential)]
939 internal struct MotifWmHints {
940 internal IntPtr flags;
941 internal IntPtr functions;
942 internal IntPtr decorations;
943 internal IntPtr input_mode;
944 internal IntPtr status;
948 internal enum MotifFlags {
956 internal enum MotifFunctions {
966 internal enum MotifDecorations {
978 internal enum MotifInputMode {
980 ApplicationModal = 1,
982 FullApplicationModal = 3
986 internal enum KeyMasks {
987 ShiftMask = (1 << 0),
989 ControlMask = (1 << 2),
996 ModMasks = Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask
999 [StructLayout (LayoutKind.Sequential)]
1000 internal struct XModifierKeymap {
1001 public int max_keypermod;
1002 public IntPtr modifiermap;
1005 internal enum PropertyMode {
1011 [StructLayout (LayoutKind.Sequential)]
1012 internal struct XKeyBoardState {
1013 public int key_click_percent;
1014 public int bell_percent;
1015 public uint bell_pitch, bell_duration;
1016 public IntPtr led_mask;
1017 public int global_auto_repeat;
1018 public AutoRepeats auto_repeats;
1020 [StructLayout (LayoutKind.Explicit)]
1021 public struct AutoRepeats {
1031 internal enum GCFunction {
1034 GCForeground = 1<<2,
1035 GCBackground = 1<<3,
1044 GCTileStipXOrigin = 1<<12,
1045 GCTileStipYOrigin = 1<<13,
1047 GCSubwindowMode = 1<<15,
1048 GCGraphicsExposures = 1<<16,
1049 GCClipXOrigin = 1<<17,
1050 GCClipYOrigin = 1<<18,
1052 GCDashOffset = 1<<20,
1057 internal enum GCJoinStyle {
1063 internal enum GCLineStyle {
1069 internal enum GCCapStyle {
1076 internal enum GCFillStyle {
1080 FillOpaqueStppled = 3
1083 internal enum GCFillRule {
1088 internal enum GCArcMode {
1093 internal enum GCSubwindowMode {
1095 IncludeInferiors = 1
1098 [StructLayout (LayoutKind.Sequential)]
1099 internal struct XGCValues {
1100 internal GXFunction function;
1101 internal IntPtr plane_mask;
1102 internal IntPtr foreground;
1103 internal IntPtr background;
1104 internal int line_width;
1105 internal GCLineStyle line_style;
1106 internal GCCapStyle cap_style;
1107 internal GCJoinStyle join_style;
1108 internal GCFillStyle fill_style;
1109 internal GCFillRule fill_rule;
1110 internal GCArcMode arc_mode;
1111 internal IntPtr tile;
1112 internal IntPtr stipple;
1113 internal int ts_x_origin;
1114 internal int ts_y_origin;
1115 internal IntPtr font;
1116 internal GCSubwindowMode subwindow_mode;
1117 internal bool graphics_exposures;
1118 internal int clip_x_origin;
1119 internal int clib_y_origin;
1120 internal IntPtr clip_mask;
1121 internal int dash_offset;
1122 internal byte dashes;
1125 internal enum GXFunction {
1126 GXclear = 0x0, /* 0 */
1127 GXand = 0x1, /* src AND dst */
1128 GXandReverse = 0x2, /* src AND NOT dst */
1129 GXcopy = 0x3, /* src */
1130 GXandInverted = 0x4, /* NOT src AND dst */
1131 GXnoop = 0x5, /* dst */
1132 GXxor = 0x6, /* src XOR dst */
1133 GXor = 0x7, /* src OR dst */
1134 GXnor = 0x8, /* NOT src AND NOT dst */
1135 GXequiv = 0x9, /* NOT src XOR dst */
1136 GXinvert = 0xa, /* NOT dst */
1137 GXorReverse = 0xb, /* src OR NOT dst */
1138 GXcopyInverted = 0xc, /* NOT src */
1139 GXorInverted = 0xd, /* NOT src OR dst */
1140 GXnand = 0xe, /* NOT src OR NOT dst */
1144 internal enum NetWindowManagerState {
1150 internal enum RevertTo {
1156 internal enum MapState {
1162 internal enum CursorFontShape {
1165 XC_based_arrow_down = 4,
1166 XC_based_arrow_up = 6,
1169 XC_bottom_left_corner = 12,
1170 XC_bottom_right_corner = 14,
1171 XC_bottom_side = 16,
1180 XC_cross_reverse = 32,
1182 XC_diamond_cross = 36,
1185 XC_double_arrow = 42,
1186 XC_draft_large = 44,
1187 XC_draft_small = 46,
1203 XC_left_button = 74,
1207 XC_middlebutton = 82,
1212 XC_question_arrow = 92,
1217 XC_rightbutton = 100,
1220 XC_sb_down_arrow = 106,
1221 XC_sb_h_double_arrow = 108,
1222 XC_sb_left_arrow = 110,
1223 XC_sb_right_arrow = 112,
1224 XC_sb_up_arrow = 114,
1225 XC_sb_v_double_arrow = 116,
1226 XC_sb_shuttle = 118,
1234 XC_top_left_arrow = 132,
1235 XC_top_left_corner = 134,
1236 XC_top_right_corner = 136,
1249 internal enum SystrayRequest {
1250 SYSTEM_TRAY_REQUEST_DOCK = 0,
1251 SYSTEM_TRAY_BEGIN_MESSAGE = 1,
1252 SYSTEM_TRAY_CANCEL_MESSAGE = 2
1256 internal enum XSizeHintsFlags {
1257 USPosition = (1 << 0),
1259 PPosition = (1 << 2),
1261 PMinSize = (1 << 4),
1262 PMaxSize = (1 << 5),
1263 PResizeInc = (1 << 6),
1265 PAllHints = (PPosition | PSize | PMinSize | PMaxSize | PResizeInc | PAspect),
1266 PBaseSize = (1 << 8),
1267 PWinGravity = (1 << 9),
1270 [StructLayout(LayoutKind.Sequential)]
1271 internal struct XSizeHints {
1272 internal IntPtr flags;
1276 internal int height;
1277 internal int min_width;
1278 internal int min_height;
1279 internal int max_width;
1280 internal int max_height;
1281 internal int width_inc;
1282 internal int height_inc;
1283 internal int min_aspect_x;
1284 internal int min_aspect_y;
1285 internal int max_aspect_x;
1286 internal int max_aspect_y;
1287 internal int base_width;
1288 internal int base_height;
1289 internal int win_gravity;
1293 internal enum XWMHintsFlags {
1294 InputHint = (1 << 0),
1295 StateHint = (1 << 1),
1296 IconPixmapHint = (1 << 2),
1297 IconWindowHint = (1 << 3),
1298 IconPositionHint = (1 << 4),
1299 IconMaskHint = (1 << 5),
1300 WindowGroupHint = (1 << 6),
1301 AllHints = (InputHint | StateHint | IconPixmapHint | IconWindowHint | IconPositionHint | IconMaskHint | WindowGroupHint)
1304 internal enum XInitialState {
1312 [StructLayout(LayoutKind.Sequential)]
1313 internal struct XWMHints {
1314 internal IntPtr flags;
1315 internal bool input;
1316 internal XInitialState initial_state;
1317 internal IntPtr icon_pixmap;
1318 internal IntPtr icon_window;
1319 internal int icon_x;
1320 internal int icon_y;
1321 internal IntPtr icon_mask;
1322 internal IntPtr window_group;
1325 [StructLayout(LayoutKind.Sequential)]
1326 internal struct XIconSize {
1327 internal int min_width;
1328 internal int min_height;
1329 internal int max_width;
1330 internal int max_height;
1331 internal int width_inc;
1332 internal int height_inc;
1335 internal struct CaretStruct {
1336 internal Timer Timer; // Blink interval
1337 internal IntPtr Hwnd; // Window owning the caret
1338 internal IntPtr Window; // Actual X11 handle of the window
1339 internal int X; // X position of the caret
1340 internal int Y; // Y position of the caret
1341 internal int Width; // Width of the caret; if no image used
1342 internal int Height; // Height of the caret, if no image used
1343 internal bool Visible; // Is caret visible?
1344 internal bool On; // Caret blink display state: On/Off
1345 internal IntPtr gc; // Graphics context
1346 internal bool Paused; // Don't update right now
1349 internal struct HoverStruct {
1350 internal Timer Timer; // for hovering
1351 internal IntPtr Window; // Last window we entered; used to generate WM_MOUSEHOVER (handle is X11 handle)
1352 internal int X; // Last MouseMove X coordinate; used to generate WM_MOUSEHOVER
1353 internal int Y; // Last MouseMove Y coordinate; used to generate WM_MOUSEHOVER
1354 internal Size Size; // Size of the rectangle the mouse has to stay in to generate hover
1355 internal int Interval; // in milliseconds, how long to hold before hover is generated
1356 internal IntPtr Atom; // X Atom
1359 internal struct ClickStruct {
1360 internal IntPtr Hwnd; //
1361 internal Msg Message; //
1362 internal IntPtr wParam; //
1363 internal IntPtr lParam; //
1364 internal long Time; // Last time we received a mouse click
1365 internal bool Pending; // True if we haven't sent the last mouse click
1368 internal struct GrabStruct {
1369 internal bool Confined; // Is the current grab (if any) confined to grab_area?
1370 internal IntPtr Hwnd; // The window that is grabbed
1371 internal Rectangle Area; // The area the current grab is confined to
1374 internal struct ClipboardStruct {
1375 internal object Item; // Object on the clipboard
1376 internal object Type; // Type if object on the clipboard
1377 internal ArrayList Formats; // list of formats available in the clipboard
1378 internal bool Retrieving; // true if we are requesting an item
1379 internal bool Enumerating; // true if we are enumerating through all known types
1380 internal XplatUI.ObjectToClipboard Converter;
1383 internal delegate int XErrorHandler(IntPtr DisplayHandle, ref XErrorEvent error_event);
1385 internal enum XRequest : byte {
1387 X_ChangeWindowAttributes = 2,
1388 X_GetWindowAttributes = 3,
1389 X_DestroyWindow = 4,
1390 X_DestroySubwindows = 5,
1391 X_ChangeSaveSet = 6,
1392 X_ReparentWindow = 7,
1394 X_MapSubwindows = 9,
1396 X_UnmapSubwindows = 11,
1397 X_ConfigureWindow = 12,
1398 X_CirculateWindow = 13,
1403 X_ChangeProperty = 18,
1404 X_DeleteProperty = 19,
1406 X_ListProperties = 21,
1407 X_SetSelectionOwner = 22,
1408 X_GetSelectionOwner = 23,
1409 X_ConvertSelection = 24,
1412 X_UngrabPointer = 27,
1414 X_UngrabButton = 29,
1415 X_ChangeActivePointerGrab = 30,
1416 X_GrabKeyboard = 31,
1417 X_UngrabKeyboard = 32,
1422 X_UngrabServer = 37,
1423 X_QueryPointer = 38,
1424 X_GetMotionEvents = 39,
1425 X_TranslateCoords = 40,
1427 X_SetInputFocus = 42,
1428 X_GetInputFocus = 43,
1433 X_QueryTextExtents = 48,
1435 X_ListFontsWithInfo = 50,
1438 X_CreatePixmap = 53,
1444 X_SetClipRectangles = 59,
1452 X_PolyRectangle = 67,
1455 X_PolyFillRectangle = 70,
1463 X_CreateColormap = 78,
1464 X_FreeColormap = 79,
1465 X_CopyColormapAndFree = 80,
1466 X_InstallColormap = 81,
1467 X_UninstallColormap = 82,
1468 X_ListInstalledColormaps = 83,
1470 X_AllocNamedColor = 85,
1471 X_AllocColorCells = 86,
1472 X_AllocColorPlanes = 87,
1475 X_StoreNamedColor = 90,
1478 X_CreateCursor = 93,
1479 X_CreateGlyphCursor = 94,
1481 X_RecolorCursor = 96,
1482 X_QueryBestSize = 97,
1483 X_QueryExtension = 98,
1484 X_ListExtensions = 99,
1485 X_ChangeKeyboardMapping = 100,
1486 X_GetKeyboardMapping = 101,
1487 X_ChangeKeyboardControl = 102,
1488 X_GetKeyboardControl = 103,
1490 X_ChangePointerControl = 105,
1491 X_GetPointerControl = 106,
1492 X_SetScreenSaver = 107,
1493 X_GetScreenSaver = 108,
1494 X_ChangeHosts = 109,
1496 X_SetAccessControl = 111,
1497 X_SetCloseDownMode = 112,
1499 X_RotateProperties = 114,
1500 X_ForceScreenSaver = 115,
1501 X_SetPointerMapping = 116,
1502 X_GetPointerMapping = 117,
1503 X_SetModifierMapping = 118,
1504 X_GetModifierMapping = 119,
1509 internal enum XIMProperties {
1510 XIMPreeditArea = 0x0001,
1511 XIMPreeditCallbacks = 0x0002,
1512 XIMPreeditPosition = 0x0004,
1513 XIMPreeditNothing = 0x0008,
1514 XIMPreeditNone = 0x0010,
1515 XIMStatusArea = 0x0100,
1516 XIMStatusCallbacks = 0x0200,
1517 XIMStatusNothing = 0x0400,
1518 XIMStatusNone = 0x0800,
1522 internal enum WindowType {
1528 internal enum XEmbedMessage {
1531 WindowDeactivate = 2,
1537 /* 8-9 were used for XEMBED_GRAB_KEY/XEMBED_UNGRAB_KEY */
1540 RegisterAccelerator = 12,
1541 UnregisterAccelerator = 13,
1542 ActivateAccelerator = 14