#BUGFIX by stefan
authorStefan Vogel <sv@exept.de>
Thu, 17 May 2018 19:10:33 +0200
changeset 8368 03bf464aa8c8
parent 8367 e0d6816f072b
child 8369 512cb726b5f0
#BUGFIX by stefan class: XWorkstation changed: #getEventFor:withMask:into: #grabKey:modifier:grabModeKeyboard:grabModePointer:window: #grabPointerIn:withCursor:eventMask:pointerMode:keyboardMode:confineTo: adapt function parameters to function prototypes
XWorkstation.st
--- a/XWorkstation.st	Thu May 17 16:52:29 2018 +0200
+++ b/XWorkstation.st	Thu May 17 19:10:33 2018 +0200
@@ -6096,11 +6096,11 @@
 
      The event fields are placed into anEventArray (must be at least size 13):
      the fields are:
-	1:      windowID
-	2:      eventType-ID
-	3:      eventTypeSymbol
-
-	4..     args
+        1:      windowID
+        2:      eventType-ID
+        3:      eventTypeSymbol
+
+        4..     args
 
      Sorry I had to split dispatch into this fetch method and a separate
      handler method to allow UNLIMITEDSTACK here.
@@ -6112,7 +6112,8 @@
 
     Display *dpy;
     Window win, wWanted;
-    int evMask, returnValue;
+    long evMask;
+    int returnValue;
     XEvent ev;
     OBJ eB;
     KeySym keySym;
@@ -6122,7 +6123,7 @@
     OBJ arg, sym, t, windowID;
 
     if (! ISCONNECTED) {
-	RETURN (false);
+        RETURN (false);
     }
 
     dpy = myDpy;
@@ -6130,39 +6131,39 @@
     ev.type = 0;
 
     if (__isSmallInteger(eventMask)) {
-	evMask = __intVal(eventMask);
+        evMask = __intVal(eventMask);
     } else {
-	evMask = ~0;
+        evMask = ~0;
     }
 
     if (__isExternalAddress(aViewIdOrNil)) {
-	wWanted = __WindowVal(aViewIdOrNil);
-	returnValue = XCheckWindowEvent(dpy, wWanted, evMask, &ev);
+        wWanted = __WindowVal(aViewIdOrNil);
+        returnValue = XCheckWindowEvent(dpy, wWanted, evMask, &ev);
     } else {
-	if (evMask == ~0) {
-	    XNextEvent(dpy, &ev);
-	    returnValue = 1;
-	} else {
-	    returnValue = XCheckMaskEvent(dpy, evMask, &ev);
-	}
+        if (evMask == ~0) {
+            XNextEvent(dpy, &ev);
+            returnValue = 1;
+        } else {
+            returnValue = XCheckMaskEvent(dpy, evMask, &ev);
+        }
     }
     if (!returnValue) {
-	/* there is no event */
-	RETURN (false);
+        /* there is no event */
+        RETURN (false);
     }
 
     if (anEventArray == nil) {
-	/* sender is not interested in the event */
-	RETURN(true);
+        /* sender is not interested in the event */
+        RETURN(true);
     }
 
     if (!__isArray(anEventArray)) {
-	console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
-	RETURN (false);
+        console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
+        RETURN (false);
     }
     if (__arraySize(anEventArray) < 11) {
-	console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
-	RETURN (false);
+        console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
+        RETURN (false);
     }
 
 #   define ANYBUTTON   (Button1MotionMask | Button2MotionMask | Button3MotionMask)
@@ -6189,374 +6190,374 @@
 #   define cme ((XColormapEvent *)&ev)
 
     if (((t = __INST(lastId)) != nil)
-	 && __isExternalAddress(t)
-	 && (__WindowVal(t) == ae->window)) {
-	windowID = t;
+         && __isExternalAddress(t)
+         && (__WindowVal(t) == ae->window)) {
+        windowID = t;
     } else {
-	windowID = __MKEXTERNALADDRESS(ae->window);
+        windowID = __MKEXTERNALADDRESS(ae->window);
     }
 
     __ArrayInstPtr(anEventArray)->a_element[0] = windowID; __STORE(anEventArray, windowID);
     __ArrayInstPtr(anEventArray)->a_element[1] = __MKSMALLINT(ev.type);
 
     switch (ev.type) {
-	case KeyRelease:
-	    sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:);
-	    goto keyPressAndRelease;
-
-	case KeyPress:
-	    sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:);
-	    /* FALL INTO */
-
-	keyPressAndRelease:
-	    arg = nil;
-	    nchars = XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL);
-	    if (nchars == 1 && (((buffer[0] >= ' ') && (buffer[0] <= '~'))
-		|| (buffer[0] >= 0x80))) {
-		arg = __MKCHARACTER(buffer[0]);
+        case KeyRelease:
+            sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:);
+            goto keyPressAndRelease;
+
+        case KeyPress:
+            sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:);
+            /* FALL INTO */
+
+        keyPressAndRelease:
+            arg = nil;
+            nchars = XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL);
+            if (nchars == 1 && (((buffer[0] >= ' ') && (buffer[0] <= '~'))
+                || (buffer[0] >= 0x80))) {
+                arg = __MKCHARACTER(buffer[0]);
 //            } else if (nchars > 2) {
 //                arg = __MKSTRING_L(buffer, nchars);
-	    } else {
-		keySymString = XKeysymToString(keySym);
-		if (keySymString) {
-		    arg = __MKSYMBOL(keySymString, 0);
-		}
-	    }
+            } else {
+                keySymString = XKeysymToString(keySym);
+                if (keySymString) {
+                    arg = __MKSYMBOL(keySymString, 0);
+                }
+            }
 
 #ifdef IGNORE_UNKNOWN_KEYCODES
-	    if (arg == nil) {
-		/* happens sometimes (alt-graph on sun has no keysym) */
-		RETURN (false);
-	    }
-#endif
-	    __ArrayInstPtr(anEventArray)->a_element[2] = sym;
-
-	    __ArrayInstPtr(anEventArray)->a_element[3] = arg; __STORE(anEventArray, arg);
-	    t = __MKUINT(ke->keycode); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ke->state);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ke->x);
-	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ke->y);
-	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ke->x_root);
-	    __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ke->y_root);
-	    t = __MKUINT(ke->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
-	    break;
-
-	case ButtonPress:
-	    sym = @symbol(buttonPress:button:state:x:y:rootX:rootY:time:);
-	    goto buttonPressAndRelease;
-
-	case ButtonRelease:
-	    sym = @symbol(buttonRelease:button:state:x:y:rootX:rootY:time:);
-	    /* fall into */
-
-	buttonPressAndRelease:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = sym;
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(be->button);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ke->state);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(be->x);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(be->y);
-	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(be->x_root);
-	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(be->y_root);
-	    t = __MKUINT(be->time); __ArrayInstPtr(anEventArray)->a_element[9] = t; __STORE(anEventArray, t);
-	    break;
-
-	case MotionNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(buttonMotion:state:x:y:rootX:rootY:time:);
-
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(me->state);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(me->x);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(me->y);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(me->x_root);
-	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(me->y_root);
-	    t = __MKUINT(me->time); __ArrayInstPtr(anEventArray)->a_element[8] = t; __STORE(anEventArray, t);
-	    break;
-
-	case FocusIn:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusIn:mode:detail:);
-	    goto focusInOut;
-
-	case FocusOut:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusOut:mode:detail:);
-	    /* fall into */
-
-	focusInOut:
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(fe->mode);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(fe->detail);
-	    break;
-
-	case EnterNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerEnter:x:y:rootX:rootY:state:mode:detail:time:);
-	    goto enterLeave;
-
-	case LeaveNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerLeave:x:y:rootX:rootY:state:mode:detail:time:);
-	    /* fall into */
-
-	enterLeave:
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ele->x);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ele->y);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ele->x_root);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ele->y_root);
-	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ele->state);
-	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ele->mode);
-	    __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ele->detail);
-	    t = __MKUINT(ele->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
-	    break;
-
-	case Expose:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(expose:x:y:width:height:count:);
-	    goto expose;
-
-	case GraphicsExpose:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(graphicsExpose:x:y:width:height:count:);
-	    /* fall into */
-
-	expose:
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ee->x);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ee->y);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ee->width);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ee->height);
-	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ee->count);
-	    break;
-
-	case NoExpose:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(noExposeView:);
-	    break;
-
-	case VisibilityNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(visibilityNotify:state:);
-	    switch (ve->state) {
-		case VisibilityUnobscured:
-		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(unobscured);
-		    break;
-		case VisibilityPartiallyObscured:
-		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(partiallyObscured);
-		    break;
-		case VisibilityFullyObscured:
-		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(fullyObscured);
-		    break;
-		default:
-		    __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(ve->state);
-		    break;
-	    }
-	    break;
-
-	case CreateNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(createWindow:x:y:width:height:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cre->x);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cre->y);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cre->width);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cre->height);
-	    break;
-
-	case DestroyNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(destroyedView:);
-	    break;
-
-	case UnmapNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unmappedView:);
-	    break;
-
-	case MapNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappedView:);
-	    break;
-
-	case ConfigureNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configure:relativeTo:x:y:width:height:borderWidth:above:overrideRedirect:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = nil;
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->x);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->y);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->width);
-	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ce->height);
-	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ce->border_width);
-	   __ArrayInstPtr(anEventArray)->a_element[9] = nil;
-	    __ArrayInstPtr(anEventArray)->a_element[10] = ce->override_redirect ? true : false;
-	    if (ce->event != None) {
-		t = __MKEXTERNALADDRESS(ce->event); __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
-	    }
-	    if (ce->above != None) {
-		t = __MKEXTERNALADDRESS(ce->above); __ArrayInstPtr(anEventArray)->a_element[9] = t; __STORE(anEventArray, t);
-	    }
-	    break;
-
-	case GravityNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(gravityNotify:x:y:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(gre->x);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(gre->y);
-	    break;
-
-	case ResizeRequest:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(resizeRequest:width:height:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(rr->width);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rr->height);
-	    break;
-
-	case ConfigureRequest:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configureRequest:x:y:width:height:above:detail:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cr->x);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cr->y);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cr->width);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cr->height);
-	    __ArrayInstPtr(anEventArray)->a_element[7] = nil;
-	    if (cr->above != None) {
-		t = __MKEXTERNALADDRESS(cr->above); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
-	    }
-	    switch (cr->detail) {
-		case Above:
-		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(above);
-		    break;
-		case Below:
-		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(below);
-		    break;
-		case TopIf:
-		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(topIf);
-		    break;
-		case BottomIf:
-		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(bottomIf);
-		    break;
-		case Opposite:
-		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(opposite);
-		    break;
-		default:
-		    __ArrayInstPtr(anEventArray)->a_element[8] = __MKSMALLINT(cr->detail);
-		    break;
-	    }
-	    break;
-
-	case CirculateNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateNotify:place:);
-	    goto circulate;
-
-	case CirculateRequest:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateRequest:place:);
-	    /* fall into */
-	circulate:
-	    switch (cie->place) {
-		case PlaceOnTop:
-		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnTop);
-		    break;
-		case PlaceOnBottom:
-		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnBottom);
-		    break;
-		default:
-		    __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(cie->place);
-		    break;
-	    }
-	    break;
-
-	case PropertyNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(propertyChange:property:state:time:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(pe->atom);
-	    switch (pe->state) {
-		case PropertyNewValue:
-		    __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(newValue);
-		    break;
-		case PropertyDelete:
-		    __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(deleted);
-		    break;
-		default:
-		    __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(pe->state);
-		    break;
-	    }
-	    t = __MKUINT(pe->time); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
-	    break;
-
-	case SelectionClear:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:selection:time:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection);
-	    t = __MKUINT(sce->time); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
-	    break;
-
-	case SelectionRequest:
-	    /*
-	     * someone wants the selection
-	     */
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
-	    t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselectionrequest.selection);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselectionrequest.target);
-	    __ArrayInstPtr(anEventArray)->a_element[6] = __MKATOMOBJ(ev.xselectionrequest.property);
-	    t = __MKUINT(ev.xselectionrequest.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
-	    break;
-
-	case SelectionNotify:
-	    /*
-	     * returned selection value (answer from SelectionRequest)
-	     */
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionNotify:selection:target:property:requestor:time:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xselection.selection);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselection.target);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselection.property);
-	    t = __MKEXTERNALADDRESS(ev.xselection.requestor); __ArrayInstPtr(anEventArray)->a_element[6] = t; __STORE(anEventArray, t);
-	    t = __MKUINT(ev.xselection.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
-	    break;
-
-	case ColormapNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(colormapNotify:state:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = cme->state == ColormapInstalled ? true : false;
-	    break;
-
-	case ClientMessage:
-	    if (ev.xclient.message_type == (int) __AtomVal(__INST(protocolsAtom))) {
-		if ((ev.xclient.data.l[0] == (int) __AtomVal(__INST(quitAppAtom)))
-		 || (ev.xclient.data.l[0] == (int) __AtomVal(__INST(deleteWindowAtom)))) {
-		    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(terminateView:);
-		    break;
-		}
-		if (ev.xclient.data.l[0] == (int) __AtomVal(__INST(saveYourselfAtom))) {
-		    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(saveAndTerminateView:);
-		    break;
-		}
-	    }
-	    /*
-	     * any other client message
-	     */
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(clientMessage:type:format:data:);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xclient.message_type);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(ev.xclient.format);
-	    t = __MKBYTEARRAY(&ev.xclient.data, sizeof(ev.xclient.data)); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
-	    break;
-
-	case MappingNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappingNotify:request:event:);
-	    switch(mape->request) {
-		case MappingModifier:
-		    arg = @symbol(mappingModifier);
-		    break;
-		case MappingKeyboard:
-		    arg = @symbol(mappingKeyboard);
-		    break;
-		case MappingPointer:
-		    arg = @symbol(mappingPointer);
-		    break;
-		default:
-		    arg = __MKSMALLINT(mape->request);
-		    break;
-	    }
-	    __ArrayInstPtr(anEventArray)->a_element[3] = arg;
-	    t = __MKBYTEARRAY(&ev, sizeof(*mape)); __ArrayInstPtr(anEventArray)->a_element[4] = t;
-	    __STORE(anEventArray, t);
-	    break;
-
-	case KeymapNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(keymapNotify:);
-	    break;
-
-	case MapRequest:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mapRequest:);
-	    break;
-
-	case ReparentNotify:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(reparentedView:parentId:x:y:);
-	    t = __MKEXTERNALADDRESS(rpe->parent);
-	    __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
-	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rpe->x);
-	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(rpe->y);
-	    break;
-
-	default:
-	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
-	    break;
+            if (arg == nil) {
+                /* happens sometimes (alt-graph on sun has no keysym) */
+                RETURN (false);
+            }
+#endif
+            __ArrayInstPtr(anEventArray)->a_element[2] = sym;
+
+            __ArrayInstPtr(anEventArray)->a_element[3] = arg; __STORE(anEventArray, arg);
+            t = __MKUINT(ke->keycode); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ke->state);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ke->x);
+            __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ke->y);
+            __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ke->x_root);
+            __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ke->y_root);
+            t = __MKUINT(ke->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
+            break;
+
+        case ButtonPress:
+            sym = @symbol(buttonPress:button:state:x:y:rootX:rootY:time:);
+            goto buttonPressAndRelease;
+
+        case ButtonRelease:
+            sym = @symbol(buttonRelease:button:state:x:y:rootX:rootY:time:);
+            /* fall into */
+
+        buttonPressAndRelease:
+            __ArrayInstPtr(anEventArray)->a_element[2] = sym;
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(be->button);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ke->state);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(be->x);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(be->y);
+            __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(be->x_root);
+            __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(be->y_root);
+            t = __MKUINT(be->time); __ArrayInstPtr(anEventArray)->a_element[9] = t; __STORE(anEventArray, t);
+            break;
+
+        case MotionNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(buttonMotion:state:x:y:rootX:rootY:time:);
+
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(me->state);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(me->x);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(me->y);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(me->x_root);
+            __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(me->y_root);
+            t = __MKUINT(me->time); __ArrayInstPtr(anEventArray)->a_element[8] = t; __STORE(anEventArray, t);
+            break;
+
+        case FocusIn:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusIn:mode:detail:);
+            goto focusInOut;
+
+        case FocusOut:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusOut:mode:detail:);
+            /* fall into */
+
+        focusInOut:
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(fe->mode);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(fe->detail);
+            break;
+
+        case EnterNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerEnter:x:y:rootX:rootY:state:mode:detail:time:);
+            goto enterLeave;
+
+        case LeaveNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerLeave:x:y:rootX:rootY:state:mode:detail:time:);
+            /* fall into */
+
+        enterLeave:
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ele->x);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ele->y);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ele->x_root);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ele->y_root);
+            __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ele->state);
+            __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ele->mode);
+            __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ele->detail);
+            t = __MKUINT(ele->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
+            break;
+
+        case Expose:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(expose:x:y:width:height:count:);
+            goto expose;
+
+        case GraphicsExpose:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(graphicsExpose:x:y:width:height:count:);
+            /* fall into */
+
+        expose:
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ee->x);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ee->y);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ee->width);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ee->height);
+            __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ee->count);
+            break;
+
+        case NoExpose:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(noExposeView:);
+            break;
+
+        case VisibilityNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(visibilityNotify:state:);
+            switch (ve->state) {
+                case VisibilityUnobscured:
+                    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(unobscured);
+                    break;
+                case VisibilityPartiallyObscured:
+                    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(partiallyObscured);
+                    break;
+                case VisibilityFullyObscured:
+                    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(fullyObscured);
+                    break;
+                default:
+                    __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(ve->state);
+                    break;
+            }
+            break;
+
+        case CreateNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(createWindow:x:y:width:height:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cre->x);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cre->y);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cre->width);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cre->height);
+            break;
+
+        case DestroyNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(destroyedView:);
+            break;
+
+        case UnmapNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unmappedView:);
+            break;
+
+        case MapNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappedView:);
+            break;
+
+        case ConfigureNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configure:relativeTo:x:y:width:height:borderWidth:above:overrideRedirect:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = nil;
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->x);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->y);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->width);
+            __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ce->height);
+            __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ce->border_width);
+           __ArrayInstPtr(anEventArray)->a_element[9] = nil;
+            __ArrayInstPtr(anEventArray)->a_element[10] = ce->override_redirect ? true : false;
+            if (ce->event != None) {
+                t = __MKEXTERNALADDRESS(ce->event); __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
+            }
+            if (ce->above != None) {
+                t = __MKEXTERNALADDRESS(ce->above); __ArrayInstPtr(anEventArray)->a_element[9] = t; __STORE(anEventArray, t);
+            }
+            break;
+
+        case GravityNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(gravityNotify:x:y:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(gre->x);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(gre->y);
+            break;
+
+        case ResizeRequest:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(resizeRequest:width:height:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(rr->width);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rr->height);
+            break;
+
+        case ConfigureRequest:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configureRequest:x:y:width:height:above:detail:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cr->x);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cr->y);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cr->width);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cr->height);
+            __ArrayInstPtr(anEventArray)->a_element[7] = nil;
+            if (cr->above != None) {
+                t = __MKEXTERNALADDRESS(cr->above); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
+            }
+            switch (cr->detail) {
+                case Above:
+                    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(above);
+                    break;
+                case Below:
+                    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(below);
+                    break;
+                case TopIf:
+                    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(topIf);
+                    break;
+                case BottomIf:
+                    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(bottomIf);
+                    break;
+                case Opposite:
+                    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(opposite);
+                    break;
+                default:
+                    __ArrayInstPtr(anEventArray)->a_element[8] = __MKSMALLINT(cr->detail);
+                    break;
+            }
+            break;
+
+        case CirculateNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateNotify:place:);
+            goto circulate;
+
+        case CirculateRequest:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateRequest:place:);
+            /* fall into */
+        circulate:
+            switch (cie->place) {
+                case PlaceOnTop:
+                    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnTop);
+                    break;
+                case PlaceOnBottom:
+                    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnBottom);
+                    break;
+                default:
+                    __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(cie->place);
+                    break;
+            }
+            break;
+
+        case PropertyNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(propertyChange:property:state:time:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(pe->atom);
+            switch (pe->state) {
+                case PropertyNewValue:
+                    __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(newValue);
+                    break;
+                case PropertyDelete:
+                    __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(deleted);
+                    break;
+                default:
+                    __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(pe->state);
+                    break;
+            }
+            t = __MKUINT(pe->time); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
+            break;
+
+        case SelectionClear:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:selection:time:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection);
+            t = __MKUINT(sce->time); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
+            break;
+
+        case SelectionRequest:
+            /*
+             * someone wants the selection
+             */
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
+            t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselectionrequest.selection);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselectionrequest.target);
+            __ArrayInstPtr(anEventArray)->a_element[6] = __MKATOMOBJ(ev.xselectionrequest.property);
+            t = __MKUINT(ev.xselectionrequest.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
+            break;
+
+        case SelectionNotify:
+            /*
+             * returned selection value (answer from SelectionRequest)
+             */
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionNotify:selection:target:property:requestor:time:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xselection.selection);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselection.target);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselection.property);
+            t = __MKEXTERNALADDRESS(ev.xselection.requestor); __ArrayInstPtr(anEventArray)->a_element[6] = t; __STORE(anEventArray, t);
+            t = __MKUINT(ev.xselection.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
+            break;
+
+        case ColormapNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(colormapNotify:state:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = cme->state == ColormapInstalled ? true : false;
+            break;
+
+        case ClientMessage:
+            if (ev.xclient.message_type == (int) __AtomVal(__INST(protocolsAtom))) {
+                if ((ev.xclient.data.l[0] == (int) __AtomVal(__INST(quitAppAtom)))
+                 || (ev.xclient.data.l[0] == (int) __AtomVal(__INST(deleteWindowAtom)))) {
+                    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(terminateView:);
+                    break;
+                }
+                if (ev.xclient.data.l[0] == (int) __AtomVal(__INST(saveYourselfAtom))) {
+                    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(saveAndTerminateView:);
+                    break;
+                }
+            }
+            /*
+             * any other client message
+             */
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(clientMessage:type:format:data:);
+            __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xclient.message_type);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(ev.xclient.format);
+            t = __MKBYTEARRAY(&ev.xclient.data, sizeof(ev.xclient.data)); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
+            break;
+
+        case MappingNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappingNotify:request:event:);
+            switch(mape->request) {
+                case MappingModifier:
+                    arg = @symbol(mappingModifier);
+                    break;
+                case MappingKeyboard:
+                    arg = @symbol(mappingKeyboard);
+                    break;
+                case MappingPointer:
+                    arg = @symbol(mappingPointer);
+                    break;
+                default:
+                    arg = __MKSMALLINT(mape->request);
+                    break;
+            }
+            __ArrayInstPtr(anEventArray)->a_element[3] = arg;
+            t = __MKBYTEARRAY(&ev, sizeof(*mape)); __ArrayInstPtr(anEventArray)->a_element[4] = t;
+            __STORE(anEventArray, t);
+            break;
+
+        case KeymapNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(keymapNotify:);
+            break;
+
+        case MapRequest:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mapRequest:);
+            break;
+
+        case ReparentNotify:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(reparentedView:parentId:x:y:);
+            t = __MKEXTERNALADDRESS(rpe->parent);
+            __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
+            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rpe->x);
+            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(rpe->y);
+            break;
+
+        default:
+            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
+            break;
     }
 #undef ae
 #undef ee
@@ -6585,6 +6586,8 @@
 %}.
 
     ^ true
+
+    "Modified: / 17-05-2018 / 18:26:09 / Stefan Vogel"
 !
 
 handleAllEvents
@@ -8355,98 +8358,101 @@
     <context: #return>
 %{
 
-    int result, ok, evMask;
+    int result, ok;
+    unsigned int evMask;
     Window confineWin;
     Cursor curs;
     int pointer_mode, keyboard_mode;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aWindowId)) {
-	    if (__isExternalAddress(confineId))
-		confineWin = __WindowVal(confineId);
-	    else
-		confineWin = (Window) None;
-
-	    if (__isExternalAddress(aCursorId))
-		curs = __CursorVal(aCursorId);
-	    else
-		curs = (Cursor) None;
-
-	    if (pMode == @symbol(sync))
-		pointer_mode = GrabModeSync;
-	    else
-		pointer_mode = GrabModeAsync;
-
-	    if (kMode == @symbol(sync))
-		keyboard_mode = GrabModeSync;
-	    else
-		keyboard_mode = GrabModeAsync;
-
-	    if (__isSmallInteger(eventMask))
-		evMask = __intVal(eventMask);
-	    else
-		evMask = ButtonPressMask | ButtonMotionMask | PointerMotionMask | ButtonReleaseMask;
+        if (__isExternalAddress(aWindowId)) {
+            if (__isExternalAddress(confineId))
+                confineWin = __WindowVal(confineId);
+            else
+                confineWin = (Window) None;
+
+            if (__isExternalAddress(aCursorId))
+                curs = __CursorVal(aCursorId);
+            else
+                curs = (Cursor) None;
+
+            if (pMode == @symbol(sync))
+                pointer_mode = GrabModeSync;
+            else
+                pointer_mode = GrabModeAsync;
+
+            if (kMode == @symbol(sync))
+                keyboard_mode = GrabModeSync;
+            else
+                keyboard_mode = GrabModeAsync;
+
+            if (__isSmallInteger(eventMask))
+                evMask = __intVal(eventMask);
+            else
+                evMask = ButtonPressMask | ButtonMotionMask | PointerMotionMask | ButtonReleaseMask;
 
 
 /*
-	    ENTER_XLIB();
+            ENTER_XLIB();
 */
-	    result = XGrabPointer(myDpy,
-				  __WindowVal(aWindowId),
-				  False,
-				  evMask,
-				  pointer_mode, keyboard_mode,
-				  confineWin,
-				  curs,
-				  CurrentTime);
+            result = XGrabPointer(myDpy,
+                                  __WindowVal(aWindowId),
+                                  False,
+                                  evMask,
+                                  pointer_mode, keyboard_mode,
+                                  confineWin,
+                                  curs,
+                                  CurrentTime);
 /*
-	    LEAVE_XLIB();
+            LEAVE_XLIB();
 */
 
 
-	    ok = 0;
-	    switch (result) {
-		case AlreadyGrabbed:
-		    if (@global(ErrorPrinting) == true) {
-			console_fprintf(stderr, "XWorkstation [warning]: grab pointer: AlreadyGrabbed\n");
-		    }
-		    break;
-		case GrabNotViewable:
-		    if (@global(ErrorPrinting) == true) {
-			console_fprintf(stderr, "XWorkstation [warning]: grab pointer: GrabNotViewable\n");
-		    }
-		    break;
-		case GrabInvalidTime:
-		    if (@global(ErrorPrinting) == true) {
-			console_fprintf(stderr, "XWorkstation [warning]: grab pointer: InvalidTime\n");
-		    }
-		    break;
-		case GrabFrozen:
-		    if (@global(ErrorPrinting) == true) {
-			console_fprintf(stderr, "XWorkstation [warning]: grab pointer: Frozen\n");
-		    }
-		    break;
-		default:
-		    ok = 1;
-		    break;
-	    }
-
-	    if (! ok) {
+            ok = 0;
+            switch (result) {
+                case AlreadyGrabbed:
+                    if (@global(ErrorPrinting) == true) {
+                        console_fprintf(stderr, "XWorkstation [warning]: grab pointer: AlreadyGrabbed\n");
+                    }
+                    break;
+                case GrabNotViewable:
+                    if (@global(ErrorPrinting) == true) {
+                        console_fprintf(stderr, "XWorkstation [warning]: grab pointer: GrabNotViewable\n");
+                    }
+                    break;
+                case GrabInvalidTime:
+                    if (@global(ErrorPrinting) == true) {
+                        console_fprintf(stderr, "XWorkstation [warning]: grab pointer: InvalidTime\n");
+                    }
+                    break;
+                case GrabFrozen:
+                    if (@global(ErrorPrinting) == true) {
+                        console_fprintf(stderr, "XWorkstation [warning]: grab pointer: Frozen\n");
+                    }
+                    break;
+                default:
+                    ok = 1;
+                    break;
+            }
+
+            if (! ok) {
 /*
-		ENTER_XLIB();
+                ENTER_XLIB();
 */
-		XUngrabPointer(myDpy, CurrentTime);
+                XUngrabPointer(myDpy, CurrentTime);
 /*
-		LEAVE_XLIB();
+                LEAVE_XLIB();
 */
-		RETURN (false);
-	    }
-	    RETURN ( true );
-	}
+                RETURN (false);
+            }
+            RETURN ( true );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection.
     ^ false
+
+    "Modified: / 17-05-2018 / 18:27:33 / Stefan Vogel"
 !
 
 grabPointerIn:aWindowId withCursor:aCursorId pointerMode:pMode keyboardMode:kMode confineTo:confineId
@@ -8541,81 +8547,82 @@
     <context: #return>
 
 %{
-    int modifierMask = AnyModifier;
+    unsigned int modifierMask = AnyModifier;
     KeySym keySym, *syms;
 
     if (__isStringLike(keySymCodeOrChar)) {
-	keySym = XStringToKeysym(__stringVal(keySymCodeOrChar));
+        keySym = XStringToKeysym(__stringVal(keySymCodeOrChar));
     } else {
-	if (__isCharacter(keySymCodeOrChar)) {
-	    char s[2];
-
-	    s[0] = __intVal(__characterVal(keySymCodeOrChar));
-	    s[1] = '\0';
-	    keySym = XStringToKeysym(s);
-	} else {
-	    if (__isSmallInteger(keySymCodeOrChar)) {
-		keySym = (KeySym) __intVal(keySymCodeOrChar);
-	    } else {
-		goto notOK;
-	    }
-	}
+        if (__isCharacter(keySymCodeOrChar)) {
+            char s[2];
+
+            s[0] = __intVal(__characterVal(keySymCodeOrChar));
+            s[1] = '\0';
+            keySym = XStringToKeysym(s);
+        } else {
+            if (__isSmallInteger(keySymCodeOrChar)) {
+                keySym = (KeySym) __intVal(keySymCodeOrChar);
+            } else {
+                goto notOK;
+            }
+        }
     }
 
     if (modifierMaskOrNil != nil) {
-	if (__isSmallInteger(modifierMaskOrNil)) {
-	    modifierMask = __intVal(modifierMaskOrNil);
-	} else {
-	    goto notOK;
-	}
+        if (__isSmallInteger(modifierMaskOrNil)) {
+            modifierMask = __intVal(modifierMaskOrNil);
+        } else {
+            goto notOK;
+        }
     }
 
     if (ISCONNECTED) {
-	Display *dpy;
-	Window window;
-	int keyCode;
-	int result;
-	int mKbd, mPtr;
-
-	mKbd = modeKbd == @symbol(GrabModeAsync) ? GrabModeAsync :GrabModeSync;
-	mPtr = modePtr == @symbol(GrabModeAsync) ? GrabModeAsync :GrabModeSync;
-
-	dpy = myDpy;
-	keyCode = XKeysymToKeycode(dpy, keySym);
-	if (__isExternalAddress(aWindowIdOrNil)) {
-	    window = __WindowVal(aWindowIdOrNil);
-	} else {
-	    int screen;
-
-	    screen = DefaultScreen(dpy);
-	    window = RootWindow(dpy, screen);
-	}
-	ENTER_XLIB();
-
-	result = XGrabKey (dpy,
-	    keyCode, modifierMask, window,
-	    False, mKbd, mPtr );
-
-	XSync(dpy, True);
-	XFlush(dpy);
-
-	LEAVE_XLIB();
-
-	if (result != Success) {
-	    if (result == BadAccess) {
-		__INST(lastError) = @symbol(badAccess);
-	    } else {
-		__INST(lastError) = @symbol(other);
-	    }
-	    RETURN (false);
-	}
-	RETURN (true);
+        Display *dpy;
+        Window window;
+        int keyCode;
+        int result;
+        int mKbd, mPtr;
+
+        mKbd = modeKbd == @symbol(GrabModeAsync) ? GrabModeAsync :GrabModeSync;
+        mPtr = modePtr == @symbol(GrabModeAsync) ? GrabModeAsync :GrabModeSync;
+
+        dpy = myDpy;
+        keyCode = XKeysymToKeycode(dpy, keySym);
+        if (__isExternalAddress(aWindowIdOrNil)) {
+            window = __WindowVal(aWindowIdOrNil);
+        } else {
+            int screen;
+
+            screen = DefaultScreen(dpy);
+            window = RootWindow(dpy, screen);
+        }
+        ENTER_XLIB();
+
+        result = XGrabKey (dpy,
+            keyCode, modifierMask, window,
+            False, mKbd, mPtr );
+
+        XSync(dpy, True);
+        XFlush(dpy);
+
+        LEAVE_XLIB();
+
+        if (result != Success) {
+            if (result == BadAccess) {
+                __INST(lastError) = @symbol(badAccess);
+            } else {
+                __INST(lastError) = @symbol(other);
+            }
+            RETURN (false);
+        }
+        RETURN (true);
     }
   notOK: ;
 %}.
     self primitiveFailedOrClosedConnection
 
     "Modified: / 03-05-2018 / 16:27:51 / stefan"
+    "Modified: / 17-05-2018 / 18:29:18 / Stefan Vogel"
 !
 
 grabKey:keySymCodeOrChar modifier:modifierMaskOrNil window:aWindowIdOrNil