16#ifdef DEBUG_ROOT_COCOA 
   28#include <Availability.h> 
   36#include "RConfigure.h" 
   53#pragma mark - Create a window or a view. 
   67   const NSUInteger 
styleMask = kTitledWindowMask | kClosableWindowMask |
 
   68                                kMiniaturizableWindowMask | kResizableWindowMask;
 
   76      throw std::runtime_error(
"CreateTopLevelWindow failed");
 
 
   96      throw std::runtime_error(
"CreateChildView failed");
 
 
  101#pragma mark - root window (does not really exist, it's our desktop built of all screens). 
  107   assert(
attr != 0 && 
"GetRootWindowAttributes, parameter 'attr' is null");
 
  118          "GetRootWindowAttributes, gVirtualX is either null or has a wrong type");
 
  128   attr->fBorderWidth = 0;
 
  129   attr->fYourEventMask = 0;
 
  130   attr->fAllEventMasks = 0;
 
 
  138#pragma mark - Coordinate conversions. 
  143   assert(window != 
nil && 
"ConvertPointFromBaseToScreen, parameter 'window' is nil");
 
 
  159   assert(window != 
nil && 
"ConvertPointFromScreenToBase, parameter 'window' is nil");
 
 
  180          "GlobalYCocoaToROOT, gVirtualX is either nul or has a wrong type");
 
 
  191          "GlobalXCocoaToROOT, gVirtualX is either nul or has a wrong type");
 
 
  201          "GlobalYROOTToCocoa, gVirtualX is either nul or has a wrong type");
 
 
  211          "GlobalXROOTToCocoa, gVirtualX is either nul or has a wrong type");
 
 
  239   assert(drawable != 
nil && 
"LocalYROOTToCocoa, drawable is nil");
 
  241   return int(drawable.fHeight - 
yROOT);
 
 
  247   assert(
from != 
nil && 
"TranslateToScreen, parameter 'from' is nil");
 
 
  261   assert(
to != 
nil && 
"TranslateFromScreen, parameter 'to' is nil");
 
 
  274   assert(
from != 
nil && 
"TranslateCoordinates, parameter 'from' is nil");
 
  275   assert(
to != 
nil && 
"TranslateCoordinates, parameter 'to' is nil");
 
  277   if ([
from window] == [
to window]) {
 
 
  298   assert(view != 
nil && 
"ScreenPointIsInView, parameter 'view' is nil");
 
  301   point.x = 
x, point.y = 
y;
 
  305   if (point.x < 0 || point.x > 
viewFrame.size.width)
 
  307   if (point.y < 0 || point.y > 
viewFrame.size.height)
 
 
  313#pragma mark - Different FindView/Window functions iterating on the ROOT's windows/views. 
  340   assert(children != 
nil && 
"FindDNDAwareViewInPoint, parameter 'children' is nil");
 
 
  456          "FindWindowForPointerEvent, parameter 'pointerEvent' is nil");
 
 
  503          "FindViewForPointerEvent, parameter 'pointerEvent' is nil");
 
 
  522#pragma mark - Downscale image ("reading color bits" on retina macs). 
  527   assert(
w != 0 && 
h != 0 && 
"DownscaledImageData, invalid geometry");
 
  528   assert(
image != 
nullptr && 
"DonwscaledImageData, invalid parameter 'image'");
 
  530   std::vector<unsigned char> 
result;
 
  533   } 
catch (
const std::bad_alloc &) {
 
  534      NSLog(
@"DownscaledImageData, memory allocation failed");
 
  540      NSLog(
@"DownscaledImageData, CGColorSpaceCreateDeviceRGB failed");
 
  548      NSLog(
@"DownscaledImageData, CGBitmapContextCreateWithData failed");
 
 
  557#pragma mark - "Focus management" - just make another window key window. 
  563   if (![
NSApp isActive])
 
  578      if (
qWindow.fContentView.fOverrideRedirect)
 
 
  586#pragma mark - 'shape mask' - to create a window with arbitrary (probably non-rectangle) shape. 
  591   assert(view != 
nil && 
"ClipToShapeMask, parameter 'view' is nil");
 
  592   assert(ctx != 0 && 
"ClipToShapeMask, parameter 'ctx' is null");
 
  596          "ClipToShapeMask, fShapeCombineMask is nil on a top-level window");
 
  598          "ClipToShapeMask, shape mask is null");
 
  604   if (!view.fParentView) {
 
  613                         toView : [view window].contentView];
 
 
  631#pragma mark - Window's geometry and attributes. 
  636   assert(
attr != 0 && 
"SetWindowAttributes, parameter 'attr' is null");
 
  637   assert(window != 
nil && 
"SetWindowAttributes, parameter 'window' is nil");
 
  642      window.fBackgroundPixel = 
attr->fBackgroundPixel;
 
  645      window.fEventMask = 
attr->fEventMask;
 
  648      window.fBitGravity = 
attr->fBitGravity;
 
  651      window.fWinGravity = 
attr->fWinGravity;
 
  660      window.fOverrideRedirect = 
YES;
 
 
  667   assert(
win != 
nil && 
"GetWindowGeometry, parameter 'win' is nil");
 
  668   assert(
dst != 0 && 
"GetWindowGeometry, parameter 'dst' is null");
 
  674   dst->fHeight = 
win.fHeight;
 
 
  680   assert(window != 
nil && 
"GetWindowAttributes, parameter 'window' is nil");
 
  681   assert(
dst != 0 && 
"GetWindowAttributes, parameter 'attr' is null");
 
  689   dst->fBorderWidth = 0;
 
  690   dst->fDepth = window.fDepth;
 
  695   dst->fClass = window.fClass;
 
  696   dst->fBitGravity = window.fBitGravity;
 
  697   dst->fWinGravity = window.fWinGravity;
 
  700   dst->fBackingPlanes = 0;
 
  703   dst->fBackingPixel = 0;
 
  712   dst->fMapState = window.fMapState;
 
  714   dst->fAllEventMasks = window.fEventMask;
 
  715   dst->fYourEventMask = window.fEventMask;
 
  720   dst->fOverrideRedirect = window.fOverrideRedirect;
 
 
  729#pragma mark - Comparators (I need them when changing a window's z-order). 
  733#ifdef MAC_OS_X_VERSION_10_11 
  750#ifdef MAC_OS_X_VERSION_10_11 
  765#pragma mark - Cursor's area. 
  770   assert(
image != 
nil && 
"CursroHotSpot, parameter 'image' is nil");
 
 
  817      if (!path || path[0] == 0) {
 
 
  894#pragma mark - Workarounds for a text view and its descendants. 
  905   return dynamic_cast<const TGTextView*
>(window);
 
 
  911   assert(view != 
nil && 
"ViewIsTextView, parameter 'view' is nil");
 
 
  919   assert(view != 
nil && 
"ViewIsTextViewFrame, parameter 'view' is nil");
 
  934   if (!view.fParentView)
 
 
  955   assert(view != 
nil && 
"ViewIsHtmlView, parameter 'view' is nil");
 
 
  964   assert(view != 
nil && 
"ViewIsHtmlViewFrame, parameter 'view' is nil");
 
  979   if (!view.fParentView)
 
 
 1011#pragma mark - Workarounds for 'paint out of paint events'. 
 1016   assert(view != 
nil && 
"LockFocus, parameter 'view' is nil");
 
 1018          "LockFocus, QuartzView is expected");
 
 
 1037   assert(view != 
nil && 
"UnlockFocus, parameter 'view' is nil");
 
 1039          "UnlockFocus, QuartzView is expected");
 
 1054#ifdef DEBUG_ROOT_COCOA 
 1056#pragma mark - 'loggers'. 
 1066   static std::ofstream logfile(
"win_attr.txt");
 
 1070      logfile<<
"win "<<
winID<<
": BackPixmap\n";
 
 1072      logfile<<
"win "<<
winID<<
": BackPixel\n";
 
 1074      logfile<<
"win "<<
winID<<
": BorderPixmap\n";
 
 1076      logfile<<
"win "<<
winID<<
": BorderPixel\n";
 
 1078      logfile<<
"win "<<
winID<<
": BorderWidth\n";
 
 1080      logfile<<
"win "<<
winID<<
": BitGravity\n";
 
 1082      logfile<<
"win "<<
winID<<
": WinGravity\n";
 
 1084      logfile<<
"win "<<
winID<<
": BackingStore\n";
 
 1086      logfile<<
"win "<<
winID<<
": BackingPlanes\n";
 
 1088      logfile<<
"win "<<
winID<<
": BackingPixel\n";
 
 1090      logfile<<
"win "<<
winID<<
": OverrideRedirect\n";
 
 1092      logfile<<
"win "<<
winID<<
": SaveUnder\n";
 
 1094      logfile<<
"win "<<
winID<<
": EventMask\n";
 
 1096      logfile<<
"win "<<
winID<<
": DontPropagate\n";
 
 1098      logfile<<
"win "<<
winID<<
": Colormap\n";
 
 1100      logfile<<
"win "<<
winID<<
": Cursor\n";
 
 1107      NSLog(
@"button press mask");
 
 1109      NSLog(
@"button release mask");
 
 1111      NSLog(
@"exposure mask");
 
 1113      NSLog(
@"pointer motion mask");
 
 1115      NSLog(
@"button motion mask");
 
 1117      NSLog(
@"enter notify mask");
 
 1119      NSLog(
@"leave notify mask");
 
 1127    std::vector<ROOT::MacOSX::X11::Command *> 
xorOps;
 
 1137    [
super drawRect:dirtyRect];
 
 1171        self.ignoresMouseEvents = 
YES; 
 
 1177#pragma mark - suppress the normal window behavior. 
 1195#pragma mark - QuartzWindow's life cycle. 
 1202   self = [
super initWithContentRect : contentRect styleMask : windowStyle
 
 1203                             backing : bufferingType defer : deferCreation];
 
 1207      [
self setAllowsConcurrentViewDrawing : NO];
 
 1217      [
self setContentView : fContentView];
 
 1219      [fContentView release];
 
 1237   assert(
glView != 
nil && 
"-initWithGLView, parameter 'glView' is nil");
 
 1245   self = [
super initWithContentRect : contentRect styleMask : styleMask
 
 1246                             backing : NSBackingStoreBuffered defer : NO];
 
 1250      [
self setAllowsConcurrentViewDrawing : NO];
 
 1253      [
self setContentView : fContentView];
 
 1265   [fShapeCombineMask release];
 
 1278    [
super setContentView:cv];
 
 1291#pragma mark - Forwaring: I want to forward a lot of property setters/getters to the content view. 
 1302      [
super forwardInvocation : anInvocation];
 
 1313         signature = [fContentView methodSignatureForSelector : selector];
 
 1328   assert(window != 
nil && 
"-addTransientWindow:, parameter 'window' is nil");
 
 1337      [
self addChildWindow : window ordered : NSWindowAbove];
 
 1345#pragma unused(sender) 
 1350#ifdef MAC_OS_X_VERSION_10_9 
 1351   [
self setCollectionBehavior : NSWindowCollectionBehaviorMoveToActiveSpace];
 
 1353   [
self setCollectionBehavior : NSWindowCollectionBehaviorCanJoinAllSpaces];
 
 1356   [
super makeKeyAndOrderFront : self];
 
 1358   [
self setCollectionBehavior : NSWindowCollectionBehaviorDefault];
 
 1377      [fShapeCombineMask release];
 
 1385#pragma mark - X11Drawable's protocol. 
 1406   return self.screen.backingScaleFactor;
 
 1424   return self.frame.size.width;
 
 1442   assert(!(
newSize.width < 0) && 
"-setDrawableSize:, width is negative");
 
 1443   assert(!(
newSize.height < 0) && 
"-setDrawableSize:, height is negative");
 
 1447   if (frame.origin.x < -100000. || frame.origin.x > 100000.) {
 
 1449      NSLog(
@"Attempting to set a frame with X: %g", frame.origin.x);
 
 1450      frame.origin.x = 0.; 
 
 1457   frame.size.height += 
dY;
 
 1458   [
self setFrame : frame display : YES];
 
 1462- (void) 
setX : (
int) x Y : (
int) y width : (
unsigned) w height : (
unsigned) h
 
 1467   [
self setContentSize : newSize];
 
 1474   [
self setFrameTopLeftPoint : topLeft];
 
 1478- (void) 
setX : (
int) x Y : (
int) y
 
 1484   [
self setFrameTopLeftPoint : topLeft];
 
 1489         clipOrigin : (
X11::Point) clipXY toPoint : (
X11::Point) dstPoint
 
 1494   [fContentView copy : src area : area withMask : mask clipOrigin : clipXY toPoint : dstPoint];
 
 1503   return [fContentView readColorBits : area];
 
 1506#pragma mark - XorDrawinWindow/View 
 1515    [
self adjustXorWindowGeometry:special];
 
 1516    [
self addChildWindow : special ordered : NSWindowAbove];
 
 1524        [
self adjustXorWindowGeometry:win];
 
 1530    assert(
win && 
"invalid (nil) parameter 'win'");
 
 1531    auto frame = 
self.contentView.frame;
 
 1532    frame = [
self convertRectToScreen:frame];
 
 1533    [win setFrame:frame display:NO];
 
 1543        [
self removeChildWindow : win];
 
 1550    auto children = [
self childWindows];
 
 1559#pragma mark - X11Window protocol's implementation. 
 1570#pragma unused(parent) 
 1594      CGFloat 
rgba[] = {0., 0., 0., 1.};
 
 1597      [
self setBackgroundColor : [
NSColor colorWithColorSpace : [
NSColorSpace deviceRGBColorSpace] components : rgba count : 4]];
 
 1633             "-addChild: gl view in a top-level window as content view is not supported");
 
 1636      [
self setContentView : child];
 
 1639      [fContentView addChild : child];
 
 
 1648   assert(
attr && 
"-getAttributes:, parameter 'attr' is nil");
 
 1656   assert(
attr != 0 && 
"-setAttributes:, parameter 'attr' is null");
 
 1658#ifdef DEBUG_ROOT_COCOA 
 1673   [fContentView setHidden : NO];
 
 1674   [
self makeKeyAndOrderFront : self];
 
 1675   [fContentView configureNotifyTree];
 
 1679      [fMainWindow addChildWindow : self ordered : NSWindowAbove];
 
 1691   [fContentView setHidden : NO];
 
 1692   [
self makeKeyAndOrderFront : self];
 
 1693   [fContentView configureNotifyTree];
 
 1697      [fMainWindow addChildWindow : self ordered : NSWindowAbove];
 
 1709   [fContentView mapSubwindows];
 
 1710   [fContentView configureNotifyTree];
 
 1719   [fContentView setHidden : YES];
 
 1720   [
self orderOut : self];
 
 1723      [fMainWindow removeChildWindow : self];
 
 1728#pragma mark - Events. 
 1751      const NSPoint 
viewPoint =  [fContentView convertPoint : windowPoint fromView : nil];
 
 1757             "-sendEvent:, gVirtualX is either null or not of TGCocoa type");
 
 1771   [
super sendEvent : theEvent];
 
 1774#pragma mark - NSWindowDelegate's methods. 
 1779#pragma unused(sender) 
 1795          "-windowShouldClose:, gVirtualX is either null or has a type different from TGCocoa");
 
 1806#pragma unused(aNotification) 
 1815             "-windowDidBecomeKey:, gVirtualX is null or not of TGCocoa type");
 
 1817      vx->GetEventTranslator()->GenerateFocusChangeEvent(
self.fContentView);
 
 1825#pragma unused(aNotification) 
 1831#pragma mark - Passive key grab info. 
 1836- (id) 
initWithKey : (unichar) keyCode modifiers : (NSUInteger) modifiers
 
 1847- (BOOL) 
matchKey : (unichar) keyCode modifiers : (NSUInteger) modifiers
 
 1853- (BOOL) 
matchKey : (unichar) keyCode
 
 1872#pragma mark - X11 property emulation. 
 1889- (id) 
initWithData : (
unsigned char *) data size : (
unsigned) dataSize type : (
Atom_t) type format : (
unsigned) format
 
 1897      [
self resetPropertyData : data size : dataSize type : type format : format];
 
 1906   [fPropertyData release];
 
 1913         type : (
Atom_t) type format : (
unsigned) format
 
 1915   [fPropertyData release];
 
 1942#pragma mark - QuartzView. 
 1975#pragma mark - Lifetime. 
 1992      [
self setCanDrawConcurrently : NO];
 
 1994      [
self setHidden : YES];
 
 2014   [fBackBuffer release];
 
 2015   [fPassiveKeyGrabs release];
 
 2016   [fX11Properties release];
 
 2017   [fBackgroundPixmap release];
 
 2021#pragma mark - Tracking area. 
 2028   [
super updateTrackingAreas];
 
 2037      for (NSUInteger i = 0; i < 
size; ++i) {
 
 2039         [
self removeTrackingArea : t];
 
 2048   frame.size.width = 
self.fWidth;
 
 2049   frame.size.height = 
self.fHeight;
 
 2052                                     options : trackerOptions owner : self userInfo : nil];
 
 2053   [
self addTrackingArea : tracker];
 
 2060   [
self updateTrackingAreas];
 
 2066#pragma mark - X11Drawable protocol. 
 2083   return self.fQuartzWindow.fScaleFactor;
 
 2089   return self.frame.origin.x;
 
 2095   return self.frame.origin.y;
 
 2101   return self.frame.size.width;
 
 2107   return self.frame.size.height;
 
 2113   assert(!(
newSize.width < 0) && 
"-setDrawableSize, width is negative");
 
 2114   assert(!(
newSize.height < 0) && 
"-setDrawableSize, height is negative");
 
 2127- (void) 
setX : (
int) x Y : (
int) y width : (
unsigned) w height : (
unsigned) h
 
 2139- (void) 
setX : (
int) x Y : (
int) y
 
 2151          toPoint : (
X11::Point) dstPoint
 
 2155          "-copyImage:area:withMask:clipOrigin:toPoint:, parameter 'srcImage' is nil");
 
 2157          "-copyImage:area:withMask:clipOrigin:toPoint:, srcImage.fImage is nil");
 
 2161          "-copyImage:area:withMask:clipOrigin:toPoint:, self.fContext is null");
 
 2164      NSLog(
@"QuartzView: -copyImage:area:withMask:clipOrigin:toPoint:," 
 2165             " srcRect and copyRect do not intersect");
 
 2177         NSLog(
@"QuartzView: -copyImage:area:withMask:clipOrigin:toPoint:," 
 2178                " subimage creation failed");
 
 2194             "-copyImage:area:withMask:clipOrigin:toPoint:, mask.fImage is nil");
 
 2196             "-copyImage:area:withMask:clipOrigin:toPoint:, mask.fImage is not a mask");
 
 2221   assert(
srcView != 
nil && 
"-copyView:area:toPoint:, parameter 'srcView' is nil");
 
 2227      NSLog(
@"QuartzView: -copyView:area:toPoint failed");
 
 2231   assert(
srcView != 
nil && 
"-copyView:area:toPoint:, parameter 'srcView' is nil");
 
 2232   assert(
self.fContext != 0 && 
"-copyView:area:toPoint, self.fContext is null");
 
 2239   [
srcView cacheDisplayInRect : frame toBitmapImageRep : imageRep];
 
 2247      NSLog(
@"QuartzView: -copyView:area:toPoint, CGImageCreateWithImageInRect failed");
 
 2264         withMask : (
QuartzImage *) mask clipOrigin : (
X11::Point) clipXY toPoint : (
X11::Point) dstPoint
 
 2267   assert(
srcPixmap != 
nil && 
"-copyPixmap:area:withMask:clipOrigin:toPoint:, parameter 'srcPixmap' is nil");
 
 2270      NSLog(
@"QuartzView: -copyPixmap:area:withMask:clipOrigin:toPoint," 
 2271             " no intersection between pixmap rectangle and cropArea");
 
 2277          "-copyPixmap:area:withMask:clipOrigin:toPoint:, self.fContext is null");
 
 2287          "-copyPixmap:area:withMask:clipOrigin:toPoint:, createImageFromPixmap failed");
 
 2296         NSLog(
@"QuartzView: -copyImage:area:withMask:clipOrigin:toPoint:," 
 2297                " subimage creation failed");
 
 2305             "-copyPixmap:area:withMask:clipOrigin:toPoint:, mask.fImage is nil");
 
 2307             "-copyPixmap:area:withMask:clipOrigin:toPoint:, mask.fImage is not a mask");
 
 2328           toPoint : (
X11::Point) dstPoint
 
 2330   assert(
srcImage != 
nil && 
"-copyImage:area:toPoint:, parameter 'srcImage' is nil");
 
 2331   assert(
srcImage.fImage != 
nil && 
"-copyImage:area:toPoint:, srcImage.fImage is nil");
 
 2332   assert(
self.fContext != 0 && 
"-copyImage:area:toPoint:, fContext is null");
 
 2335      NSLog(
@"QuartzView: -copyImage:area:toPoint, image and copy area do not intersect");
 
 2345         NSLog(
@"QuartzView: -copyImage:area:toPoint:, subimage creation failed");
 
 2368     withMask : (
QuartzImage *)mask clipOrigin : (
X11::Point) clipXY toPoint : (
X11::Point) dstPoint
 
 2370   assert(
src != 
nil && 
"-copy:area:withMask:clipOrigin:toPoint:, parameter 'src' is nil");
 
 2371   assert(
area.fWidth && 
area.fHeight && 
"-copy:area:withMask:clipOrigin:toPoint:, area to copy is empty");
 
 2377      [
self copyView : (QuartzView *)qw.fContentView area : area toPoint : dstPoint];
 
 2380      [
self copyView : (QuartzView *)src area : area toPoint : dstPoint];
 
 2382      [
self copyPixmap : (QuartzPixmap *)src area : area withMask : mask clipOrigin : clipXY toPoint : dstPoint];
 
 2384      [
self copyImage : (QuartzImage *)src area : area withMask : mask clipOrigin : clipXY toPoint : dstPoint];
 
 2386      assert(0 && 
"-copy:area:withMask:clipOrigin:toPoint:, src is of unknown type");
 
 2397   assert(
area.fWidth && 
area.fHeight && 
"-readColorBits:, area to copy is empty");
 
 2418      NSLog(
@"QuartzView: -readColorBits:, visible rect of view and copy area do not intersect");
 
 2425      NSLog(
@"QuartzView: -readColorBits:, bitmapImageRepForCachingDisplayInRect failed");
 
 2430   [
self cacheDisplayInRect : visRect toBitmapImageRep : imageRep];
 
 2431   self.fContext = ctx; 
 
 2439   unsigned char *
srcData = 
nullptr;
 
 2450      NSLog(
@"QuartzView: -readColorBits:, failed to obtain backing store contents");
 
 2455   unsigned char *
data = 
nullptr;
 
 2458      data = 
new unsigned char[
area.fWidth * area.fHeight * 4];
 
 2459   } 
catch (
const std::bad_alloc &) {
 
 2460      NSLog(
@"QuartzView: -readColorBits:, memory allocation failed");
 
 2468   for (
unsigned i = 0; i < 
area.fHeight; ++i) {
 
 2487      [fBackgroundPixmap release];
 
 2506   if ([
self isHidden])
 
 2510      if ([parent isHidden])
 
 2530#pragma unused(focus) 
 2547      [fBackBuffer release];
 
 2581- (void) 
activateGrab : (
unsigned) eventMask ownerEvents : (BOOL) ownerEvents
 
 
 2620   [
self addSubview : child];
 
 2627   assert(
attr != 0 && 
"-getAttributes:, parameter 'attr' is null");
 
 2635   assert(
attr != 0 && 
"-setAttributes:, parameter 'attr' is null");
 
 2637#ifdef DEBUG_ROOT_COCOA 
 2649   [
self removeFromSuperview];
 
 2650   [parent addSubview : self];
 
 2651   [
self setHidden : NO];
 
 2657   [
self setHidden : NO];
 
 2670   [
self setHidden : YES];
 
 2684      [child setOverlapped : overlap];
 
 2701   using namespace X11;
 
 2710         [
sibling setOverlapped : YES];
 
 2715   [
self setOverlapped : NO];
 
 2717   [
self setHidden : NO];
 
 2719   [fParentView sortSubviewsUsingFunction : CompareViewsToRaise context : (void *)self];
 
 2721   [
self updateTrackingAreasAfterRaise];
 
 2723   [
self setNeedsDisplay : YES];
 
 2731   using namespace X11;
 
 2743         [
sibling setNeedsDisplay : YES];
 
 2744         [
self setOverlapped : YES];
 
 2746         [
self setHidden : YES];
 
 2752   [fParentView sortSubviewsUsingFunction : CompareViewsToLower context : (void*)self];
 
 2769                "-configureNotifyTree, gVirtualX is either null or has type different from TGCocoa");
 
 2771         vx->GetEventTranslator()->GenerateConfigureNotifyEvent(
self, 
self.frame);
 
 2775         [v configureNotifyTree];
 
 2779#pragma mark - Key grabs. 
 2782- (void) 
addPassiveKeyGrab : (unichar) keyCode modifiers : (NSUInteger) modifiers
 
 2784   [
self removePassiveKeyGrab : keyCode modifiers : modifiers];
 
 2786                                                              modifiers : modifiers];
 
 2787   [fPassiveKeyGrabs addObject : newGrab];
 
 2794   const NSUInteger count = [fPassiveKeyGrabs count];
 
 2795   for (NSUInteger i = 0; i < count; ++i) {
 
 2798         [fPassiveKeyGrabs removeObjectAtIndex : i];
 
 2829#pragma mark - Painting mechanics. 
 2834#pragma unused(dirtyRect) 
 2836   using namespace X11;
 
 2851         assert(
fContext != 0 && 
"-drawRect:, graphicsPort returned null");
 
 2856         if (
self.fQuartzWindow.fShapeCombineMask)
 
 2889               gClient->CancelRedraw(window);
 
 2890               vx->GetCommandBuffer()->RemoveGraphicsOperationsForWindow(
fID);
 
 2897            [
self copy : fBackBuffer area : copyArea withMask : nil
 
 2898                  clipOrigin : X11::Point() toPoint : X11::Point()];
 
 2902#ifdef DEBUG_ROOT_COCOA 
 2909#ifdef DEBUG_ROOT_COCOA 
 2910         NSLog(
@"QuartzView: -drawRect: method, no window for id %u was found", 
fID);
 
 2916#pragma mark - Geometry. 
 2927   [
super setFrame : newFrame];
 
 2935   [
super setFrameSize : newSize];
 
 2939             "setFrameSize:, gVirtualX is either null or has a type, different from TGCocoa");
 
 2941      vx->GetEventTranslator()->GenerateConfigureNotifyEvent(
self, 
self.frame);
 
 2944   [
self setNeedsDisplay : YES];
 
 2947#pragma mark - Event handling. 
 2952   assert(
fID != 0 && 
"-mouseDown:, fID is 0");
 
 2955          "-mouseDown:, gVirtualX is either null or has a type, different from TGCocoa");
 
 2963   assert(
fID != 0 && 
"-scrollWheel:, fID is 0");
 
 2967          "-scrollWheel:, gVirtualX is either null or has a type, different from TGCocoa");
 
 2980#ifdef DEBUG_ROOT_COCOA 
 2984   assert(
fID != 0 && 
"-printWindowInformation, fID is 0");
 
 2986   assert(window != 0 && 
"printWindowInformation, window not found");
 
 2988   NSLog(
@"-----------------View %u info:---------------------", 
fID);
 
 2990   NSLog(
@"event mask is:");
 
 2992   NSLog(
@"grab mask is:");
 
 2994   NSLog(
@"view's geometry: x == %g, y == %g, w == %g, h == %g", 
self.frame.origin.x,
 
 2995         self.frame.origin.y, 
self.frame.size.width, 
self.frame.size.height);
 
 2996   NSLog(
@"----------------End of view info------------------");
 
 3003   assert(
fID != 0 && 
"-rightMouseDown:, fID is 0");
 
 3005#ifdef DEBUG_ROOT_COCOA 
 3006   [
self printViewInformation];
 
 3010          "-rightMouseDown:, gVirtualX is either null or has type different from TGCocoa");
 
 3018   assert(
fID != 0 && 
"-otherMouseDown:, fID is 0");
 
 3026             "-otherMouseDown:, gVirtualX is either null or has type different from TGCocoa");
 
 3035   assert(
fID != 0 && 
"-mouseUp:, fID is 0");
 
 3038          "-mouseUp:, gVirtualX is either null or has type different from TGCocoa");
 
 3047   assert(
fID != 0 && 
"-rightMouseUp:, fID is 0");
 
 3050          "-rightMouseUp:, gVirtualX is either null or has type different from TGCocoa");
 
 3059   assert(
fID != 0 && 
"-otherMouseUp:, fID is 0");
 
 3063          "-otherMouseUp:, gVirtualX is either null or has type different from TGCocoa");
 
 3071   assert(
fID != 0 && 
"-mouseEntered:, fID is 0");
 
 3073          "-mouseEntered:, gVirtualX is null or not of TGCocoa type");
 
 3076   vx->GetEventTranslator()->GenerateCrossingEvent(
theEvent);
 
 3082   assert(
fID != 0 && 
"-mouseExited:, fID is 0");
 
 3085          "-mouseExited:, gVirtualX is null or not of TGCocoa type");
 
 3088   vx->GetEventTranslator()->GenerateCrossingEvent(
theEvent);
 
 3094   assert(
fID != 0 && 
"-mouseMoved:, fID is 0");
 
 3100          "-mouseMoved:, gVirtualX is null or not of TGCocoa type");
 
 3103   vx->GetEventTranslator()->GeneratePointerMotionEvent(
theEvent);
 
 3109   assert(
fID != 0 && 
"-mouseDragged:, fID is 0");
 
 3112   assert(
vx != 0 && 
"-mouseDragged:, gVirtualX is null or not of TGCocoa type");
 
 3114   vx->GetEventTranslator()->GeneratePointerMotionEvent(
theEvent);
 
 3120   assert(
fID != 0 && 
"-rightMouseDragged:, fID is 0");
 
 3123          "-rightMouseDragged:, gVirtualX is null or not of TGCocoa type");
 
 3126   vx->GetEventTranslator()->GeneratePointerMotionEvent(
theEvent);
 
 3132   assert(
fID != 0 && 
"-otherMouseDragged:, fID is 0");
 
 3136             "-otherMouseDragged:, gVirtualX is null or not of TGCocoa type");
 
 3138      vx->GetEventTranslator()->GeneratePointerMotionEvent(
theEvent);
 
 3145   assert(
fID != 0 && 
"-keyDown:, fID is 0");
 
 3148          "-keyDown:, gVirtualX is null or not of TGCocoa type");
 
 3161   assert(
fID != 0 && 
"-keyUp:, fID is 0");
 
 3164          "-keyUp:, gVirtualX is null or not of TGCocoa type");
 
 3174#pragma mark - First responder stuff. 
 3179#pragma unused(theEvent) 
 3189#pragma mark - Cursors. 
 3196      [
self.fQuartzWindow invalidateCursorRectsForView : self];
 
 3236      if (!path || path[0] == 0) {
 
 3249                                                         hotSpot : hotSpot] autorelease];
 
 3263      [
self addCursorRect : self.visibleRect cursor : cursor];
 
 3279#pragma unused(event) 
 3291   [
self performSelector : @selector(cursorUpdate) withObject : nil afterDelay : 0.05f];
 
 3294#pragma mark - Emulated X11 properties. 
 3297- (void) 
setProperty : (
const char *) propName data : (
unsigned char *) propData
 
 3298         size : (
unsigned) dataSize forType : (
Atom_t) dataType format : (
unsigned) format
 
 3300   assert(
propName != 0 && 
"-setProperty:data:size:forType:, parameter 'propName' is null");
 
 3301   assert(
propData != 0 && 
"-setProperty:data:size:forType:, parameter 'propData' is null");
 
 3302   assert(
dataSize != 0 && 
"-setProperty:data:size:forType:, parameter 'dataSize' is 0");
 
 3304   NSString * 
const key = [
NSString stringWithCString : propName encoding : NSASCIIStringEncoding];
 
 3309      [property resetPropertyData : propData size : dataSize type : dataType format : format];
 
 3313                                               type : dataType format : format];
 
 3314      [fX11Properties setObject : property forKey : key];
 
 3322   assert(
propName != 0 && 
"-hasProperty:, propName parameter is null");
 
 3324   NSString * 
const key = [
NSString stringWithCString : propName encoding : NSASCIIStringEncoding];
 
 3327   return property != 
nil;
 
 3332   returnFormat : (
unsigned *) format nElements : (
unsigned *) nElements
 
 3335          "-getProperty:returnType:returnFormat:nElements:, parameter 'propName' is null");
 
 3337          "-getProperty:returnType:returnFormat:nElements:, parameter 'type' is null");
 
 3339          "-getProperty:returnType:returnFormat:nElements:, parameter 'format' is null");
 
 3341          "-getProperty:returnType:returnFormat:nElements:, parameter 'nElements' is null");
 
 3343   NSString * 
const key = [
NSString stringWithCString : propName encoding : NSASCIIStringEncoding];
 
 3346          "-getProperty:returnType:returnFormat:nElements, property not found");
 
 3351   unsigned char *
buff = 0;
 
 3354   } 
catch (
const std::bad_alloc &) {
 
 3356      NSLog(
@"QuartzWindow: -getProperty:returnType:returnFormat:nElements:," 
 3357            " memory allocation failed");
 
 3361   [
propData getBytes : buff length : dataSize];
 
 3362   *
format = 
property.fFormat;
 
 3371   *
type = 
property.fType;
 
 3379   assert(
propName != 0 && 
"-removeProperty:, parameter 'propName' is null");
 
 3382                           encoding : NSASCIIStringEncoding];
 
 3383   [fX11Properties removeObjectForKey : key];
 
 3425         const NSUInteger 
len = [item lengthOfBytesUsingEncoding : NSASCIIStringEncoding] + 1;
 
 3428            [item getCString : (char *)&propertyData[0] maxLength : propertyData.size()
 
 3429             encoding : NSASCIIStringEncoding];
 
 3432            [
targetView setProperty : "_XC_DND_DATA" data : &propertyData[0]
 
 3433                        size : propertyData.size() forType : textUriAtom format : 8];
 
 3434         } 
catch (
const std::bad_alloc &) {
 
 3436            NSLog(
@"QuartzView: -performDragOperation:, memory allocation failed");
 
 3466      dropPoint = [
self convertPoint : dropPoint fromView : nil];
 
const Mask_t kWABorderPixel
 
const Mask_t kWAOverrideRedirect
 
const Mask_t kWABitGravity
 
const Mask_t kWADontPropagate
 
const Mask_t kButtonMotionMask
 
const Mask_t kWABackingStore
 
const Mask_t kButtonPressMask
 
const Mask_t kExposureMask
 
const Mask_t kWAEventMask
 
Handle_t Window_t
Window handle.
 
const Mask_t kWASaveUnder
 
const Mask_t kWABackPixel
 
const Mask_t kWAWinGravity
 
const Mask_t kWABackingPixel
 
const Mask_t kPointerMotionMask
 
const Mask_t kLeaveWindowMask
 
const Mask_t kStructureNotifyMask
 
const Mask_t kButtonReleaseMask
 
const Mask_t kWABorderPixmap
 
const Mask_t kEnterWindowMask
 
const Mask_t kWABackPixmap
 
const Mask_t kWABorderWidth
 
const Mask_t kWABackingPlanes
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t mask
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t cursor
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t TranslateCoordinates
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t GetWindowAttributes
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t rect
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t child
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t win
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t attr
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name CreateCursor
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t grab
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t property
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
 
R__EXTERN TSystem * gSystem
 
This class implements TVirtualX interface for MacOS X, using Cocoa and Quartz 2D.
 
static Atom_t fgDeleteWindowAtom
 
A TGTextView is a text viewer widget.
 
ROOT GUI Window base class.
 
TClass * IsA() const override
 
const char * GetName() const override
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
static const TString & GetIconPath()
Get the icon path in the installation. Static utility function.
 
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
 
QuartzPixmap * fBackBuffer
 
unsigned fPassiveGrabKeyModifiers
 
void activateImplicitGrab()
 
NSMutableArray * fPassiveKeyGrabs
 
BOOL fActiveGrabOwnerEvents
 
QuartzWindow * fQuartzWindow
 
void configureNotifyTree()
 
void activatePassiveGrab()
 
NSMutableDictionary * fX11Properties
 
BOOL fPassiveGrabOwnerEvents
 
unsigned fPassiveGrabEventMask
 
QuartzImage * fBackgroundPixmap
 
ROOT::MacOSX::X11::PointerGrab fCurrentGrabType
 
unsigned long fBackgroundPixel
 
unsigned fActiveGrabEventMask
 
NSView< X11Window > * fContentView
 
unsigned long fBackgroundPixel
 
QuartzWindow * fQuartzWindow
 
void adjustXorWindowGeometry()
 
XorDrawingWindow * findXorWindow()
 
QuartzWindow * fMainWindow
 
QuartzView * fContentView
 
QuartzImage * fShapeCombineMask
 
const NSUInteger kMiniaturizableWindowMask
 
const NSEventType kLeftMouseDown
 
const NSEventType kRightMouseDown
 
const NSUInteger kTitledWindowMask
 
const NSUInteger kResizableWindowMask
 
const NSUInteger kClosableWindowMask
 
const NSUInteger kBorderlessWindowMask
 
NSCursor * CreateCustomCursor(ECursor currentCursor)
 
int GlobalYROOTToCocoa(CGFloat yROOT)
 
NSPoint ConvertPointFromScreenToBase(NSPoint screenPoint, NSWindow *window)
 
bool ViewIsHtmlViewFrame(NSView< X11Window > *view, bool checkParent)
 
int GlobalYCocoaToROOT(CGFloat yCocoa)
 
void PixelToRGB(Pixel_t pixelColor, CGFloat *rgb)
 
NSPoint ConvertPointFromBaseToScreen(NSWindow *window, NSPoint windowPoint)
 
NSPoint TranslateToScreen(NSView< X11Window > *from, NSPoint point)
 
CGImageRef CreateSubImage(QuartzImage *image, const Rectangle &area)
 
bool ScreenPointIsInView(NSView< X11Window > *view, Int_t x, Int_t y)
 
NSPoint GetCursorHotStop(NSImage *image, ECursor cursor)
 
void GetWindowGeometry(NSObject< X11Window > *win, WindowAttributes_t *dst)
 
void GetWindowAttributes(NSObject< X11Window > *window, WindowAttributes_t *dst)
 
NSView< X11Window > * FindDNDAwareViewInPoint(NSView *parentView, Window_t dragWinID, Window_t inputWinID, Int_t x, Int_t y, Int_t maxDepth)
 
NSView< X11Window > * FrameForHtmlView(NSView< X11Window > *htmlView)
 
QuartzWindow * FindWindowInPoint(Int_t x, Int_t y)
 
int GlobalXCocoaToROOT(CGFloat xCocoa)
 
void WindowLostFocus(Window_t winID)
 
int LocalYROOTToCocoa(NSView< X11Window > *parentView, CGFloat yROOT)
 
NSView< X11Window > * FindViewForPointerEvent(NSEvent *pointerEvent)
 
NSView< X11Window > * FrameForTextView(NSView< X11Window > *textView)
 
NSComparisonResult CompareViewsToLower(id view1, id view2, void *context)
 
int LocalYCocoaToROOT(NSView< X11Window > *parentView, CGFloat yCocoa)
 
QuartzWindow * CreateTopLevelWindow(Int_t x, Int_t y, UInt_t w, UInt_t h, UInt_t border, Int_t depth, UInt_t clss, void *visual, SetWindowAttributes_t *attr, UInt_t)
 
NSView< X11Window > * FindViewUnderPointer()
 
void UnlockFocus(NSView< X11Window > *view)
 
int GlobalXROOTToCocoa(CGFloat xROOT)
 
QuartzView * CreateChildView(QuartzView *parent, Int_t x, Int_t y, UInt_t w, UInt_t h, UInt_t border, Int_t depth, UInt_t clss, void *visual, SetWindowAttributes_t *attr, UInt_t wtype)
 
bool AdjustCropArea(const Rectangle &srcRect, Rectangle &cropArea)
 
QuartzWindow * FindWindowForPointerEvent(NSEvent *pointerEvent)
 
bool ViewIsTextView(unsigned viewID)
 
void GetRootWindowAttributes(WindowAttributes_t *attr)
 
bool ViewIsHtmlView(unsigned viewID)
 
QuartzWindow * FindWindowUnderPointer()
 
bool ViewIsTextViewFrame(NSView< X11Window > *view, bool checkParent)
 
NSPoint TranslateFromScreen(NSPoint point, NSView< X11Window > *to)
 
void ClipToShapeMask(NSView< X11Window > *view, CGContextRef ctx)
 
void SetWindowAttributes(const SetWindowAttributes_t *attr, NSObject< X11Window > *window)
 
NSCursor * CreateCursor(ECursor currentCursor)
 
bool LockFocus(NSView< X11Window > *view)
 
NSComparisonResult CompareViewsToRaise(id view1, id view2, void *context)
 
std::vector< unsigned char > DownscaledImageData(unsigned w, unsigned h, CGImageRef image)
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
EGEventType fType
of event (see EGEventType)
 
Handle_t fHandle
general resource handle (used for atoms or windows)
 
Int_t fFormat
Next fields only used by kClientMessageEvent.
 
Window_t fWindow
window reported event is relative to
 
Longptr_t fUser[5]
5 longs can be used by client message events NOTE: only [0], [1] and [2] may be used.
 
Attributes that can be used when creating or changing a window.
 
Window attributes that can be inquired.