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 window;
357 [StructLayout(LayoutKind.Sequential)]
358 internal struct XCirculateEvent {
359 internal XEventName type;
360 internal IntPtr serial;
361 internal bool send_event;
362 internal IntPtr display;
363 internal IntPtr xevent;
364 internal IntPtr window;
368 [StructLayout(LayoutKind.Sequential)]
369 internal struct XCirculateRequestEvent {
370 internal XEventName type;
371 internal IntPtr serial;
372 internal bool send_event;
373 internal IntPtr display;
374 internal IntPtr parent;
375 internal IntPtr window;
379 [StructLayout(LayoutKind.Sequential)]
380 internal struct XPropertyEvent {
381 internal XEventName type;
382 internal IntPtr serial;
383 internal bool send_event;
384 internal IntPtr display;
385 internal IntPtr window;
387 internal IntPtr time;
391 [StructLayout(LayoutKind.Sequential)]
392 internal struct XSelectionClearEvent {
393 internal XEventName type;
394 internal IntPtr serial;
395 internal bool send_event;
396 internal IntPtr display;
397 internal IntPtr window;
398 internal int selection;
399 internal IntPtr time;
402 [StructLayout(LayoutKind.Sequential)]
403 internal struct XSelectionRequestEvent {
404 internal XEventName type;
405 internal IntPtr serial;
406 internal bool send_event;
407 internal IntPtr display;
408 internal IntPtr owner;
409 internal IntPtr requestor;
410 internal int selection;
412 internal int property;
413 internal IntPtr time;
416 [StructLayout(LayoutKind.Sequential)]
417 internal struct XSelectionEvent {
418 internal XEventName type;
419 internal IntPtr serial;
420 internal bool send_event;
421 internal IntPtr display;
422 internal IntPtr requestor;
423 internal int selection;
425 internal int property;
426 internal IntPtr time;
429 [StructLayout(LayoutKind.Sequential)]
430 internal struct XColormapEvent {
431 internal XEventName type;
432 internal IntPtr serial;
433 internal bool send_event;
434 internal IntPtr display;
435 internal IntPtr window;
436 internal IntPtr colormap;
441 [StructLayout(LayoutKind.Sequential)]
442 internal struct XClientMessageEvent {
443 internal XEventName type;
444 internal IntPtr serial;
445 internal bool send_event;
446 internal IntPtr display;
447 internal IntPtr window;
448 internal IntPtr message_type;
450 internal IntPtr ptr1;
451 internal IntPtr ptr2;
452 internal IntPtr ptr3;
453 internal IntPtr ptr4;
454 internal IntPtr ptr5;
457 [StructLayout(LayoutKind.Sequential)]
458 internal struct XMappingEvent {
459 internal XEventName type;
460 internal IntPtr serial;
461 internal bool send_event;
462 internal IntPtr display;
463 internal IntPtr window;
464 internal int request;
465 internal int first_keycode;
469 [StructLayout(LayoutKind.Sequential)]
470 internal struct XErrorEvent {
471 internal XEventName type;
472 internal IntPtr display;
473 internal IntPtr resourceid;
474 internal IntPtr serial;
475 internal byte error_code;
476 internal XRequest request_code;
477 internal byte minor_code;
480 [StructLayout(LayoutKind.Sequential)]
481 internal struct XTimerNotifyEvent {
482 internal XEventName type;
483 internal EventHandler handler;
486 [StructLayout(LayoutKind.Sequential)]
487 internal struct XEventPad {
488 internal IntPtr pad0;
489 internal IntPtr pad1;
490 internal IntPtr pad2;
491 internal IntPtr pad3;
492 internal IntPtr pad4;
493 internal IntPtr pad5;
494 internal IntPtr pad6;
495 internal IntPtr pad7;
496 internal IntPtr pad8;
497 internal IntPtr pad9;
498 internal IntPtr pad10;
499 internal IntPtr pad11;
500 internal IntPtr pad12;
501 internal IntPtr pad13;
502 internal IntPtr pad14;
503 internal IntPtr pad15;
504 internal IntPtr pad16;
505 internal IntPtr pad17;
506 internal IntPtr pad18;
507 internal IntPtr pad19;
508 internal IntPtr pad20;
509 internal IntPtr pad21;
510 internal IntPtr pad22;
511 internal IntPtr pad23;
514 [StructLayout(LayoutKind.Explicit)]
515 internal struct XEvent {
516 [ FieldOffset(0) ] internal XEventName type;
517 [ FieldOffset(0) ] internal XAnyEvent AnyEvent;
518 [ FieldOffset(0) ] internal XKeyEvent KeyEvent;
519 [ FieldOffset(0) ] internal XButtonEvent ButtonEvent;
520 [ FieldOffset(0) ] internal XMotionEvent MotionEvent;
521 [ FieldOffset(0) ] internal XCrossingEvent CrossingEvent;
522 [ FieldOffset(0) ] internal XFocusChangeEvent FocusChangeEvent;
523 [ FieldOffset(0) ] internal XExposeEvent ExposeEvent;
524 [ FieldOffset(0) ] internal XGraphicsExposeEvent GraphicsExposeEvent;
525 [ FieldOffset(0) ] internal XNoExposeEvent NoExposeEvent;
526 [ FieldOffset(0) ] internal XVisibilityEvent VisibilityEvent;
527 [ FieldOffset(0) ] internal XCreateWindowEvent CreateWindowEvent;
528 [ FieldOffset(0) ] internal XDestroyWindowEvent DestroyWindowEvent;
529 [ FieldOffset(0) ] internal XUnmapEvent UnmapEvent;
530 [ FieldOffset(0) ] internal XMapEvent MapEvent;
531 [ FieldOffset(0) ] internal XMapRequestEvent MapRequestEvent;
532 [ FieldOffset(0) ] internal XReparentEvent ReparentEvent;
533 [ FieldOffset(0) ] internal XConfigureEvent ConfigureEvent;
534 [ FieldOffset(0) ] internal XGravityEvent GravityEvent;
535 [ FieldOffset(0) ] internal XResizeRequestEvent ResizeRequestEvent;
536 [ FieldOffset(0) ] internal XConfigureRequestEvent ConfigureRequestEvent;
537 [ FieldOffset(0) ] internal XCirculateEvent CirculateEvent;
538 [ FieldOffset(0) ] internal XCirculateRequestEvent CirculateRequestEvent;
539 [ FieldOffset(0) ] internal XPropertyEvent PropertyEvent;
540 [ FieldOffset(0) ] internal XSelectionClearEvent SelectionClearEvent;
541 [ FieldOffset(0) ] internal XSelectionRequestEvent SelectionRequestEvent;
542 [ FieldOffset(0) ] internal XSelectionEvent SelectionEvent;
543 [ FieldOffset(0) ] internal XColormapEvent ColormapEvent;
544 [ FieldOffset(0) ] internal XClientMessageEvent ClientMessageEvent;
545 [ FieldOffset(0) ] internal XMappingEvent MappingEvent;
546 [ FieldOffset(0) ] internal XErrorEvent ErrorEvent;
547 [ FieldOffset(0) ] internal XKeymapEvent KeymapEvent;
548 [ FieldOffset(0) ] internal XTimerNotifyEvent TimerNotifyEvent;
550 //[MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst=24)]
551 //[ FieldOffset(0) ] internal int[] pad;
552 [ FieldOffset(0) ] internal XEventPad Pad;
555 [StructLayout(LayoutKind.Sequential)]
556 internal struct XSetWindowAttributes {
557 internal IntPtr background_pixmap;
558 internal IntPtr background_pixel;
559 internal IntPtr border_pixmap;
560 internal IntPtr border_pixel;
561 internal Gravity bit_gravity;
562 internal Gravity win_gravity;
563 internal int backing_store;
564 internal IntPtr backing_planes;
565 internal IntPtr backing_pixel;
566 internal bool save_under;
567 internal IntPtr event_mask;
568 internal IntPtr do_not_propagate_mask;
569 internal bool override_redirect;
570 internal IntPtr colormap;
571 internal IntPtr cursor;
574 [StructLayout(LayoutKind.Sequential)]
575 internal struct XWindowAttributes {
580 internal int border_width;
582 internal IntPtr visual;
583 internal IntPtr root;
584 internal int c_class;
585 internal Gravity bit_gravity;
586 internal Gravity win_gravity;
587 internal int backing_store;
588 internal IntPtr backing_planes;
589 internal IntPtr backing_pixel;
590 internal bool save_under;
591 internal IntPtr colormap;
592 internal bool map_installed;
593 internal MapState map_state;
594 internal IntPtr all_event_masks;
595 internal IntPtr your_event_mask;
596 internal IntPtr do_not_propagate_mask;
597 internal bool override_direct;
598 internal IntPtr screen;
601 [StructLayout(LayoutKind.Sequential)]
602 internal struct XTextProperty {
603 internal string value;
604 internal IntPtr encoding;
606 internal IntPtr nitems;
609 internal enum XWindowClass {
614 internal enum XEventName {
628 VisibilityNotify = 15,
635 ConfigureNotify = 22,
636 ConfigureRequest = 23,
639 CirculateNotify = 26,
640 CirculateRequest = 27,
643 SelectionRequest = 30,
644 SelectionNotify = 31,
654 internal enum SetWindowValuemask {
665 OverrideRedirect = 512,
668 DontPropagate = 4096,
673 internal enum CreateWindowArgs {
680 internal enum Gravity {
694 internal enum XKeySym {
695 XK_BackSpace = 0xFF08,
705 XK_Page_Down = 0xFF56,
711 XK_Control_L = 0xFFE3,
712 XK_Control_R = 0xFFE4,
713 XK_Caps_Lock = 0xFFE5,
714 XK_Shift_Lock = 0xFFE6,
726 internal enum EventMask {
729 KeyReleaseMask = 1<<1,
730 ButtonPressMask = 1<<2,
731 ButtonReleaseMask = 1<<3,
732 EnterWindowMask = 1<<4,
733 LeaveWindowMask = 1<<5,
734 PointerMotionMask = 1<<6,
735 PointerMotionHintMask = 1<<7,
736 Button1MotionMask = 1<<8,
737 Button2MotionMask = 1<<9,
738 Button3MotionMask = 1<<10,
739 Button4MotionMask = 1<<11,
740 Button5MotionMask = 1<<12,
741 ButtonMotionMask = 1<<13,
742 KeymapStateMask = 1<<14,
743 ExposureMask = 1<<15,
744 VisibilityChangeMask = 1<<16,
745 StructureNotifyMask = 1<<17,
746 ResizeRedirectMask = 1<<18,
747 SubstructureNotifyMask = 1<<19,
748 SubstructureRedirectMask= 1<<20,
749 FocusChangeMask = 1<<21,
750 PropertyChangeMask = 1<<22,
751 ColormapChangeMask = 1<<23,
752 OwnerGrabButtonMask = 1<<24
755 internal enum GrabMode {
760 [StructLayout(LayoutKind.Sequential)]
761 internal struct XStandardColormap {
762 internal IntPtr colormap;
763 internal IntPtr red_max;
764 internal IntPtr red_mult;
765 internal IntPtr green_max;
766 internal IntPtr green_mult;
767 internal IntPtr blue_max;
768 internal IntPtr blue_mult;
769 internal IntPtr base_pixel;
770 internal IntPtr visualid;
771 internal IntPtr killid;
774 [StructLayout(LayoutKind.Sequential, Pack=2)]
775 internal struct XColor {
776 internal IntPtr pixel;
778 internal ushort green;
779 internal ushort blue;
808 XA_RESOURCE_MANAGER = 23,
809 XA_RGB_COLOR_MAP = 24,
810 XA_RGB_BEST_MAP = 25,
811 XA_RGB_BLUE_MAP = 26,
812 XA_RGB_DEFAULT_MAP = 27,
813 XA_RGB_GRAY_MAP = 28,
814 XA_RGB_GREEN_MAP = 29,
821 XA_WM_CLIENT_MACHINE = 36,
822 XA_WM_ICON_NAME = 37,
823 XA_WM_ICON_SIZE = 38,
825 XA_WM_NORMAL_HINTS = 40,
826 XA_WM_SIZE_HINTS = 41,
827 XA_WM_ZOOM_HINTS = 42,
832 XA_SUPERSCRIPT_X = 47,
833 XA_SUPERSCRIPT_Y = 48,
836 XA_UNDERLINE_POSITION = 51,
837 XA_UNDERLINE_THICKNESS = 52,
838 XA_STRIKEOUT_ASCENT = 53,
839 XA_STRIKEOUT_DESCENT = 54,
840 XA_ITALIC_ANGLE = 55,
853 XA_WM_TRANSIENT_FOR = 68,
855 XA_LAST_PREDEFINED = 68
858 [StructLayout(LayoutKind.Sequential)]
859 internal struct XScreen {
860 internal IntPtr ext_data;
861 internal IntPtr display;
862 internal IntPtr root;
866 internal int mheight;
867 internal int ndepths;
868 internal IntPtr depths;
869 internal int root_depth;
870 internal IntPtr root_visual;
871 internal IntPtr default_gc;
872 internal IntPtr cmap;
873 internal IntPtr white_pixel;
874 internal IntPtr black_pixel;
875 internal int max_maps;
876 internal int min_maps;
877 internal int backing_store;
878 internal bool save_unders;
879 internal IntPtr root_input_mask;
883 internal enum ChangeWindowFlags {
888 CWBorderWidth = 1<<4,
893 internal enum StackMode {
901 [StructLayout(LayoutKind.Sequential)]
902 internal struct XWindowChanges {
907 internal int border_width;
908 internal IntPtr sibling;
909 internal StackMode stack_mode;
913 internal enum ColorFlags {
919 internal enum NotifyMode {
925 internal enum NotifyDetail {
930 NotifyNonlinearVirtual = 4,
932 NotifyPointerRoot = 6,
936 [StructLayout(LayoutKind.Sequential)]
937 internal struct MotifWmHints {
938 internal IntPtr flags;
939 internal IntPtr functions;
940 internal IntPtr decorations;
941 internal IntPtr input_mode;
942 internal IntPtr status;
946 internal enum MotifFlags {
954 internal enum MotifFunctions {
964 internal enum MotifDecorations {
976 internal enum MotifInputMode {
978 ApplicationModal = 1,
980 FullApplicationMondal = 3
984 internal enum KeyMasks {
985 ShiftMask = (1 << 0),
987 ControlMask = (1 << 2),
994 ModMasks = Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask
997 [StructLayout (LayoutKind.Sequential)]
998 internal struct XModifierKeymap {
999 public int max_keypermod;
1000 public IntPtr modifiermap;
1003 internal enum PropertyMode {
1009 [StructLayout (LayoutKind.Sequential)]
1010 internal struct XKeyBoardState {
1011 int key_click_percent;
1013 uint bell_pitch, bell_duration;
1015 int global_auto_repeat;
1016 AutoRepeats auto_repeats;
1018 [StructLayout (LayoutKind.Explicit)]
1019 struct AutoRepeats {
1029 internal enum GCFunction {
1032 GCForeground = 1<<2,
1033 GCBackground = 1<<3,
1042 GCTileStipXOrigin = 1<<12,
1043 GCTileStipYOrigin = 1<<13,
1045 GCSubwindowMode = 1<<15,
1046 GCGraphicsExposures = 1<<16,
1047 GCClipXOrigin = 1<<17,
1048 GCClipYOrigin = 1<<18,
1050 GCDashOffset = 1<<20,
1055 internal enum GCJoinStyle {
1061 internal enum GCLineStyle {
1067 internal enum GCCapStyle {
1074 internal enum GCFillStyle {
1078 FillOpaqueStppled = 3
1081 internal enum GCFillRule {
1086 internal enum GCArcMode {
1091 internal enum GCSubwindowMode {
1093 IncludeInferiors = 1
1096 [StructLayout (LayoutKind.Sequential)]
1097 internal struct XGCValues {
1098 internal GXFunction function;
1099 internal IntPtr plane_mask;
1100 internal IntPtr foreground;
1101 internal IntPtr background;
1102 internal int line_width;
1103 internal GCLineStyle line_style;
1104 internal GCCapStyle cap_style;
1105 internal GCJoinStyle join_style;
1106 internal GCFillStyle fill_style;
1107 internal GCFillRule fill_rule;
1108 internal GCArcMode arc_mode;
1109 internal IntPtr tile;
1110 internal IntPtr stipple;
1111 internal int ts_x_origin;
1112 internal int ts_y_origin;
1113 internal IntPtr font;
1114 internal GCSubwindowMode subwindow_mode;
1115 internal bool graphics_exposures;
1116 internal int clip_x_origin;
1117 internal int clib_y_origin;
1118 internal IntPtr clip_mask;
1119 internal int dash_offset;
1120 internal byte dashes;
1123 internal enum GXFunction {
1124 GXclear = 0x0, /* 0 */
1125 GXand = 0x1, /* src AND dst */
1126 GXandReverse = 0x2, /* src AND NOT dst */
1127 GXcopy = 0x3, /* src */
1128 GXandInverted = 0x4, /* NOT src AND dst */
1129 GXnoop = 0x5, /* dst */
1130 GXxor = 0x6, /* src XOR dst */
1131 GXor = 0x7, /* src OR dst */
1132 GXnor = 0x8, /* NOT src AND NOT dst */
1133 GXequiv = 0x9, /* NOT src XOR dst */
1134 GXinvert = 0xa, /* NOT dst */
1135 GXorReverse = 0xb, /* src OR NOT dst */
1136 GXcopyInverted = 0xc, /* NOT src */
1137 GXorInverted = 0xd, /* NOT src OR dst */
1138 GXnand = 0xe, /* NOT src OR NOT dst */
1142 internal enum NetWindowManagerState {
1148 internal enum RevertTo {
1154 internal enum MapState {
1160 internal enum CursorFontShape {
1163 XC_based_arrow_down = 4,
1164 XC_based_arrow_up = 6,
1167 XC_bottom_left_corner = 12,
1168 XC_bottom_right_corner = 14,
1169 XC_bottom_side = 16,
1178 XC_cross_reverse = 32,
1180 XC_diamond_cross = 36,
1183 XC_double_arrow = 42,
1184 XC_draft_large = 44,
1185 XC_draft_small = 46,
1201 XC_left_button = 74,
1205 XC_middlebutton = 82,
1210 XC_question_arrow = 92,
1215 XC_rightbutton = 100,
1218 XC_sb_down_arrow = 106,
1219 XC_sb_h_double_arrow = 108,
1220 XC_sb_left_arrow = 110,
1221 XC_sb_right_arrow = 112,
1222 XC_sb_up_arrow = 114,
1223 XC_sb_v_double_arrow = 116,
1224 XC_sb_shuttle = 118,
1232 XC_top_left_arrow = 132,
1233 XC_top_left_corner = 134,
1234 XC_top_right_corner = 136,
1247 internal enum SystrayRequest {
1248 SYSTEM_TRAY_REQUEST_DOCK = 0,
1249 SYSTEM_TRAY_BEGIN_MESSAGE = 1,
1250 SYSTEM_TRAY_CANCEL_MESSAGE = 2
1254 internal enum XSizeHintsFlags {
1255 USPosition = (1 << 0),
1257 PPosition = (1 << 2),
1259 PMinSize = (1 << 4),
1260 PMaxSize = (1 << 5),
1261 PResizeInc = (1 << 6),
1263 PAllHints = (PPosition | PSize | PMinSize | PMaxSize | PResizeInc | PAspect),
1264 PBaseSize = (1 << 8),
1265 PWinGravity = (1 << 9),
1268 [StructLayout(LayoutKind.Sequential)]
1269 internal struct XSizeHints {
1270 internal IntPtr flags;
1274 internal int height;
1275 internal int min_width;
1276 internal int min_height;
1277 internal int max_width;
1278 internal int max_height;
1279 internal int width_inc;
1280 internal int height_inc;
1281 internal int min_aspect_x;
1282 internal int min_aspect_y;
1283 internal int max_aspect_x;
1284 internal int max_aspect_y;
1285 internal int base_width;
1286 internal int base_height;
1287 internal int win_gravity;
1291 internal enum XWMHintsFlags {
1292 InputHint = (1 << 0),
1293 StateHint = (1 << 1),
1294 IconPixmapHint = (1 << 2),
1295 IconWindowHint = (1 << 3),
1296 IconPositionHint = (1 << 4),
1297 IconMaskHint = (1 << 5),
1298 WindowGroupHint = (1 << 6),
1299 AllHints = (InputHint | StateHint | IconPixmapHint | IconWindowHint | IconPositionHint | IconMaskHint | WindowGroupHint)
1302 internal enum XInitialState {
1310 [StructLayout(LayoutKind.Sequential)]
1311 internal struct XWMHints {
1312 internal IntPtr flags;
1313 internal bool input;
1314 internal XInitialState initial_state;
1315 internal IntPtr icon_pixmap;
1316 internal IntPtr icon_window;
1317 internal int icon_x;
1318 internal int icon_y;
1319 internal IntPtr icon_mask;
1320 internal IntPtr window_group;
1323 [StructLayout(LayoutKind.Sequential)]
1324 internal struct XIconSize {
1325 internal int min_width;
1326 internal int min_height;
1327 internal int max_width;
1328 internal int max_height;
1329 internal int width_inc;
1330 internal int height_inc;
1340 _NET_NUMBER_OF_DESKTOPS,
1341 _NET_DESKTOP_GEOMETRY,
1342 _NET_DESKTOP_VIEWPORT,
1343 _NET_CURRENT_DESKTOP,
1347 _NET_SUPPORTING_WM_CHECK,
1349 _NET_DESKTOP_LAYOUT,
1350 _NET_SHOWING_DESKTOP,
1353 _NET_MOVERESIZE_WINDOW,
1355 _NET_RESTACK_WINDOW,
1356 _NET_REQUEST_FRAME_EXTENTS,
1359 _NET_WM_VISIBLE_NAME,
1361 _NET_WM_VISIBLE_ICON_NAME,
1363 _NET_WM_WINDOW_TYPE,
1365 _NET_WM_ALLOWED_ACTIONS,
1367 _NET_WM_STRUT_PARTIAL,
1368 _NET_WM_ICON_GEOMETRY,
1371 _NET_WM_HANDLED_ICONS,
1376 _NET_WM_SYNC_REQUEST,
1379 _NET_SYSTEM_TRAY_ORIENTATION,
1380 _NET_SYSTEM_TRAY_OPCODE,
1382 _NET_WM_STATE_MAXIMIZED_HORZ,
1383 _NET_WM_STATE_MAXIMIZED_VERT,
1390 _NET_WM_STATE_NO_TASKBAR,
1391 _NET_WM_STATE_ABOVE,
1392 _NET_WM_STATE_MODAL,
1393 _NET_WM_CONTEXT_HELP,
1404 internal struct CaretStruct {
1405 internal Timer Timer; // Blink interval
1406 internal IntPtr Hwnd; // Window owning the caret
1407 internal IntPtr Window; // Actual X11 handle of the window
1408 internal int X; // X position of the caret
1409 internal int Y; // Y position of the caret
1410 internal int Width; // Width of the caret; if no image used
1411 internal int Height; // Height of the caret, if no image used
1412 internal int Visible; // Counter for visible/hidden
1413 internal bool On; // Caret blink display state: On/Off
1414 internal IntPtr gc; // Graphics context
1415 internal bool Paused; // Don't update right now
1418 internal struct HoverStruct {
1419 internal Timer Timer; // for hovering
1420 internal IntPtr Window; // Last window we entered; used to generate WM_MOUSEHOVER (handle is X11 handle)
1421 internal int X; // Last MouseMove X coordinate; used to generate WM_MOUSEHOVER
1422 internal int Y; // Last MouseMove Y coordinate; used to generate WM_MOUSEHOVER
1423 internal int Interval; // in milliseconds, how long to hold before hover is generated
1424 internal int Atom; // X Atom
1427 internal struct ClickStruct {
1428 internal IntPtr Hwnd; //
1429 internal Msg Message; //
1430 internal IntPtr wParam; //
1431 internal IntPtr lParam; //
1432 internal long Time; // Last time we received a mouse click
1433 internal bool Pending; // True if we haven't sent the last mouse click
1436 internal struct GrabStruct {
1437 internal bool Confined; // Is the current grab (if any) confined to grab_area?
1438 internal IntPtr Hwnd; // The window that is grabbed
1439 internal Rectangle Area; // The area the current grab is confined to
1442 internal struct ClipboardStruct {
1443 internal object Item; // Object on the clipboard
1444 internal object Type; // Type if object on the clipboard
1445 internal ArrayList Formats; // list of formats available in the clipboard
1446 internal bool Retrieving; // true if we are requesting an item
1447 internal bool Enumerating; // true if we are enumerating through all known types
1448 internal XplatUI.ObjectToClipboard Converter;
1451 internal delegate int XErrorHandler(IntPtr DisplayHandle, ref XErrorEvent error_event);
1453 internal enum XRequest : byte {
1455 X_ChangeWindowAttributes = 2,
1456 X_GetWindowAttributes = 3,
1457 X_DestroyWindow = 4,
1458 X_DestroySubwindows = 5,
1459 X_ChangeSaveSet = 6,
1460 X_ReparentWindow = 7,
1462 X_MapSubwindows = 9,
1464 X_UnmapSubwindows = 11,
1465 X_ConfigureWindow = 12,
1466 X_CirculateWindow = 13,
1471 X_ChangeProperty = 18,
1472 X_DeleteProperty = 19,
1474 X_ListProperties = 21,
1475 X_SetSelectionOwner = 22,
1476 X_GetSelectionOwner = 23,
1477 X_ConvertSelection = 24,
1480 X_UngrabPointer = 27,
1482 X_UngrabButton = 29,
1483 X_ChangeActivePointerGrab = 30,
1484 X_GrabKeyboard = 31,
1485 X_UngrabKeyboard = 32,
1490 X_UngrabServer = 37,
1491 X_QueryPointer = 38,
1492 X_GetMotionEvents = 39,
1493 X_TranslateCoords = 40,
1495 X_SetInputFocus = 42,
1496 X_GetInputFocus = 43,
1501 X_QueryTextExtents = 48,
1503 X_ListFontsWithInfo = 50,
1506 X_CreatePixmap = 53,
1512 X_SetClipRectangles = 59,
1520 X_PolyRectangle = 67,
1523 X_PolyFillRectangle = 70,
1531 X_CreateColormap = 78,
1532 X_FreeColormap = 79,
1533 X_CopyColormapAndFree = 80,
1534 X_InstallColormap = 81,
1535 X_UninstallColormap = 82,
1536 X_ListInstalledColormaps = 83,
1538 X_AllocNamedColor = 85,
1539 X_AllocColorCells = 86,
1540 X_AllocColorPlanes = 87,
1543 X_StoreNamedColor = 90,
1546 X_CreateCursor = 93,
1547 X_CreateGlyphCursor = 94,
1549 X_RecolorCursor = 96,
1550 X_QueryBestSize = 97,
1551 X_QueryExtension = 98,
1552 X_ListExtensions = 99,
1553 X_ChangeKeyboardMapping = 100,
1554 X_GetKeyboardMapping = 101,
1555 X_ChangeKeyboardControl = 102,
1556 X_GetKeyboardControl = 103,
1558 X_ChangePointerControl = 105,
1559 X_GetPointerControl = 106,
1560 X_SetScreenSaver = 107,
1561 X_GetScreenSaver = 108,
1562 X_ChangeHosts = 109,
1564 X_SetAccessControl = 111,
1565 X_SetCloseDownMode = 112,
1567 X_RotateProperties = 114,
1568 X_ForceScreenSaver = 115,
1569 X_SetPointerMapping = 116,
1570 X_GetPointerMapping = 117,
1571 X_SetModifierMapping = 118,
1572 X_GetModifierMapping = 119,