XWorkstation.st
changeset 3806 473cec2e5100
parent 3801 9efc83cc0da0
child 3814 0d856538e64f
--- a/XWorkstation.st	Mon Feb 24 11:17:46 2003 +0100
+++ b/XWorkstation.st	Tue Feb 25 10:30:46 2003 +0100
@@ -4703,21 +4703,21 @@
 
     viewId := evArray at:1.
     viewId notNil ifTrue:[
-        viewId = lastId ifTrue:[
-            view := lastView
-        ] ifFalse:[
-            view := self viewFromId:viewId
-        ].
+	viewId = lastId ifTrue:[
+	    view := lastView
+	] ifFalse:[
+	    view := self viewFromId:viewId
+	].
     ].
 
     evType := evArray at:3.
 
     (self respondsTo:evType) ifTrue:[
-        arguments := evArray copyFrom:3 to:(3 + evType numArgs - 1).
-        arguments at:1 put:view.
-
-        self perform:evType withArguments:arguments.
-        ^ true.
+	arguments := evArray copyFrom:3 to:(3 + evType numArgs - 1).
+	arguments at:1 put:view.
+
+	self perform:evType withArguments:arguments.
+	^ true.
     ].
 '********** unhandled event:' errorPrintCR.
 evType errorPrintCR. (evArray at:2) errorPrintCR.
@@ -4733,18 +4733,18 @@
      If the argument aMask is nonNil, only events for this eventMask are
      handled.
      WARNING: this may block to wait for an event - you better check for a 
-              pending event before calling this."
+	      pending event before calling this."
 
     |eventArray|
 
     eventArray := Array new:13.
 
     (self getEventFor:aViewIdOrNil withMask:eventMask into:eventArray) ifTrue:[
-        AbortSignal handle:[:ex |
-            ex return
-        ] do:[
-            self dispatchEvent:eventArray.
-        ]
+	AbortSignal handle:[:ex |
+	    ex return
+	] do:[
+	    self dispatchEvent:eventArray.
+	]
     ].
 
     "Modified: 19.8.1997 / 17:10:42 / cg"
@@ -4790,21 +4790,21 @@
     |eventArray|
 
     dispatchingExpose notNil ifTrue:[
-        [self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[
-            self dispatchExposeEventFor:dispatchingExpose
-        ].
-        ^ self
+	[self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[
+	    self dispatchExposeEventFor:dispatchingExpose
+	].
+	^ self
     ].
 
     eventArray := Array new:13.
     [self eventPendingWithSync:false] whileTrue:[
-        (self getEventFor:nil withMask:nil into:eventArray) ifTrue:[
-            AbortSignal handle:[:ex |
-                ex return
-            ] do:[
-                self dispatchEvent:eventArray.
-            ]
-        ].
+	(self getEventFor:nil withMask:nil into:eventArray) ifTrue:[
+	    AbortSignal handle:[:ex |
+		ex return
+	    ] do:[
+		self dispatchEvent:eventArray.
+	    ]
+	].
     ]
 
     "Modified: 19.8.1997 / 17:11:18 / cg"
@@ -5039,11 +5039,11 @@
 
      The event fields are placed them 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 an extra
      handle method to allow unlimitedstack here.
@@ -5067,7 +5067,7 @@
     OBJ arg, sym, t, windowID;
 
     if (! ISCONNECTED) {
-        RETURN (false);
+	RETURN (false);
     }
 
     dpy = myDpy;
@@ -5075,39 +5075,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)) {
-        fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
-        RETURN (false);
+	fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
+	RETURN (false);
     }
     if (__arraySize(anEventArray) < 11) {
-        fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
-        RETURN (false);
+	fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
+	RETURN (false);
     }
 
 #   define ANYBUTTON   (Button1MotionMask | Button2MotionMask | Button3MotionMask)
@@ -5133,366 +5133,366 @@
 #   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 
-             && (((buffer[0] >= ' ') && (buffer[0] <= '~'))
-                 || (buffer[0] >= 0x80))) {
-                arg = _MKCHARACTER(buffer[0])/* *_CharacterTable[buffer[0]] */;
-                keySymString = NULL;
-            } else {
-                keySymString = XKeysymToString(keySym);
-                if (keySymString) {
-                    arg = __MKSTRING(keySymString);
-                } else {
-                    arg = nil;
-                }
-            }
+	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 
+	     && (((buffer[0] >= ' ') && (buffer[0] <= '~'))
+		 || (buffer[0] >= 0x80))) {
+		arg = _MKCHARACTER(buffer[0])/* *_CharacterTable[buffer[0]] */;
+		keySymString = NULL;
+	    } else {
+		keySymString = XKeysymToString(keySym);
+		if (keySymString) {
+		    arg = __MKSTRING(keySymString);
+		} else {
+		    arg = nil;
+		}
+	    }
 
 #ifdef IGNORE_UNKNOWN_KEYCODES
-            if (arg == nil) {
-                /* happens sometimes (alt-graph on sun has no keysym) */
-                RETURN (false);
-            }
+	    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);
-            __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKUINT(ke->keycode); __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);
-            __ArrayInstPtr(anEventArray)->a_element[10] = t = __MKUINT(ke->time); __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);
-            __ArrayInstPtr(anEventArray)->a_element[9] = t = __MKUINT(be->time); __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);
-            __ArrayInstPtr(anEventArray)->a_element[8] = t = __MKUINT(me->time); __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);
-            __ArrayInstPtr(anEventArray)->a_element[10] = t = __MKUINT(ele->time); __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:x:y:width:height:above:);
-            __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ce->x);
-            __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->y);
-            __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->width);
-            __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->height);
-            __ArrayInstPtr(anEventArray)->a_element[7] = nil;
-            if (ce->above != None) {
-                __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKEXTERNALADDRESS(ce->above); __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) {
-                __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKEXTERNALADDRESS(cr->above); __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:atom: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;
-            }
-            __ArrayInstPtr(anEventArray)->a_element[5] = t = __MKUINT(pe->time); __STORE(anEventArray, t);
-            break;
-
-        case SelectionClear:
-            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:atom:time:);
-            __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection); 
-            __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKUINT(sce->time);         __STORE(anEventArray, t);
-            break;
-
-        case SelectionRequest:
-            /*
-             * someone wants the selection
-             */
-            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
-            __ArrayInstPtr(anEventArray)->a_element[3] = t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __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);  
-            __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKUINT(ev.xselectionrequest.time);         __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);  
-            __ArrayInstPtr(anEventArray)->a_element[6] = t = __MKEXTERNALADDRESS(ev.xselection.requestor); __STORE(anEventArray, t);
-            __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKUINT(ev.xselection.time); __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);
-            __ArrayInstPtr(anEventArray)->a_element[5] = t = __MKBYTEARRAY(ev.xclient.data, sizeof(ev.xclient.data)); __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;
-            __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKBYTEARRAY(&ev, sizeof(*mape));
-            __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:);
-            break;
-
-        default:
-            __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
-            break;
+	    __ArrayInstPtr(anEventArray)->a_element[2] = sym;
+
+	    __ArrayInstPtr(anEventArray)->a_element[3] = arg; __STORE(anEventArray, arg);
+	    __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKUINT(ke->keycode); __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);
+	    __ArrayInstPtr(anEventArray)->a_element[10] = t = __MKUINT(ke->time); __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);
+	    __ArrayInstPtr(anEventArray)->a_element[9] = t = __MKUINT(be->time); __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);
+	    __ArrayInstPtr(anEventArray)->a_element[8] = t = __MKUINT(me->time); __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);
+	    __ArrayInstPtr(anEventArray)->a_element[10] = t = __MKUINT(ele->time); __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:x:y:width:height:above:);
+	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ce->x);
+	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->y);
+	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->width);
+	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->height);
+	    __ArrayInstPtr(anEventArray)->a_element[7] = nil;
+	    if (ce->above != None) {
+		__ArrayInstPtr(anEventArray)->a_element[7] = t = __MKEXTERNALADDRESS(ce->above); __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) {
+		__ArrayInstPtr(anEventArray)->a_element[7] = t = __MKEXTERNALADDRESS(cr->above); __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:atom: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;
+	    }
+	    __ArrayInstPtr(anEventArray)->a_element[5] = t = __MKUINT(pe->time); __STORE(anEventArray, t);
+	    break;
+
+	case SelectionClear:
+	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:atom:time:);
+	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection); 
+	    __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKUINT(sce->time);         __STORE(anEventArray, t);
+	    break;
+
+	case SelectionRequest:
+	    /*
+	     * someone wants the selection
+	     */
+	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
+	    __ArrayInstPtr(anEventArray)->a_element[3] = t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __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);  
+	    __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKUINT(ev.xselectionrequest.time);         __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);  
+	    __ArrayInstPtr(anEventArray)->a_element[6] = t = __MKEXTERNALADDRESS(ev.xselection.requestor); __STORE(anEventArray, t);
+	    __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKUINT(ev.xselection.time); __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);
+	    __ArrayInstPtr(anEventArray)->a_element[5] = t = __MKBYTEARRAY(ev.xclient.data, sizeof(ev.xclient.data)); __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;
+	    __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKBYTEARRAY(&ev, sizeof(*mape));
+	    __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:);
+	    break;
+
+	default:
+	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
+	    break;
     }
 #undef ae
 #undef ee
@@ -6177,36 +6177,36 @@
     int i;
 
     if (ISCONNECTED) {
-        if (__isString(pattern)) {
-            for (;;) {
-                ENTER_XLIB();
-                fonts = XListFonts(myDpy, __stringVal(pattern), nnames, &available);
-                LEAVE_XLIB();
-                if (fonts == 0) RETURN(nil);
-                if (available < nnames) break;
-                XFreeFontNames(fonts);
-                nnames = available * 2;
-            }
-
-            /*
-             * now, that we know the number of font names,
-             * create the array ...
-             */
-            arr = __ARRAY_NEW_INT(available);
-            if (arr != nil) {
-                /*
-                 * ... and fill it
-                 */
-                for (i=0; i<available; i++) {
-                    __PROTECT__(arr);
-                    str = __MKSTRING(fonts[i]);
-                    __UNPROTECT__(arr);
-                    __ArrayInstPtr(arr)->a_element[i] = str; __STORE(arr, str);
-                }
-            }
-            XFreeFontNames(fonts);
-            RETURN (arr);
-        }
+	if (__isString(pattern)) {
+	    for (;;) {
+		ENTER_XLIB();
+		fonts = XListFonts(myDpy, __stringVal(pattern), nnames, &available);
+		LEAVE_XLIB();
+		if (fonts == 0) RETURN(nil);
+		if (available < nnames) break;
+		XFreeFontNames(fonts);
+		nnames = available * 2;
+	    }
+
+	    /*
+	     * now, that we know the number of font names,
+	     * create the array ...
+	     */
+	    arr = __ARRAY_NEW_INT(available);
+	    if (arr != nil) {
+		/*
+		 * ... and fill it
+		 */
+		for (i=0; i<available; i++) {
+		    __PROTECT__(arr);
+		    str = __MKSTRING(fonts[i]);
+		    __UNPROTECT__(arr);
+		    __ArrayInstPtr(arr)->a_element[i] = str; __STORE(arr, str);
+		}
+	    }
+	    XFreeFontNames(fonts);
+	    RETURN (arr);
+	}
     }
 %}.
     ^ nil
@@ -7553,15 +7553,15 @@
      as hostname:number"
 
     displayId notNil ifTrue:[
-        "/ already connected - you bad guy try to trick me manually ?
-        ^ self
+	"/ already connected - you bad guy try to trick me manually ?
+	^ self
     ].
 
     displayId := self openConnectionTo:aDisplayName.
     displayId isNil ifTrue:[
-        "/ could not connect.
-        DeviceOpenErrorSignal raiseWith:aDisplayName.
-        ^ nil
+	"/ could not connect.
+	DeviceOpenErrorSignal raiseWith:aDisplayName.
+	^ nil
     ].
 
     dispatching := false.
@@ -7787,24 +7787,24 @@
     char *nm;
 
     if (__isString(dpyName))
-        nm = (char *) __stringVal(dpyName);
+	nm = (char *) __stringVal(dpyName);
     else {
-        nm = NULL;
+	nm = NULL;
     }
     dpy = XOpenDisplay(nm);
 
     if (dpy) {
-        static int firstCall = 1;
-        OBJ dpyID;
-
-        dpyID = __MKEXTERNALADDRESS(dpy);
-
-        if (firstCall) {
-            firstCall = 0;
-            XSetErrorHandler(__XErrorHandler__);
-            XSetIOErrorHandler(__XIOErrorHandler__);
-        }
-        RETURN (dpyID);
+	static int firstCall = 1;
+	OBJ dpyID;
+
+	dpyID = __MKEXTERNALADDRESS(dpy);
+
+	if (firstCall) {
+	    firstCall = 0;
+	    XSetErrorHandler(__XErrorHandler__);
+	    XSetIOErrorHandler(__XIOErrorHandler__);
+	}
+	RETURN (dpyID);
     }
 %}.
     ^ nil
@@ -8904,26 +8904,26 @@
 
 %{
     if (ISCONNECTED && __isAtomID(propertyID)) {
-        Display *dpy = myDpy;
-        Atom prop;
-        Window window;
-
-        prop = __AtomVal(propertyID);
-
-        if (__isExternalAddress(aWindowID)) {
-            window = __WindowVal(aWindowID);
-        } else if (aWindowID == nil) {
-            window = DefaultRootWindow(dpy);
-        } else if (__isInteger(aWindowID)) {
-            window = (Window)__unsignedLongIntVal(aWindowID);
-        } else {
-            goto fail;
-        }
-
-        ENTER_XLIB();
-        XDeleteProperty(dpy, window, prop);
-        LEAVE_XLIB();
-        RETURN(true);
+	Display *dpy = myDpy;
+	Atom prop;
+	Window window;
+
+	prop = __AtomVal(propertyID);
+
+	if (__isExternalAddress(aWindowID)) {
+	    window = __WindowVal(aWindowID);
+	} else if (aWindowID == nil) {
+	    window = DefaultRootWindow(dpy);
+	} else if (__isInteger(aWindowID)) {
+	    window = (Window)__unsignedLongIntVal(aWindowID);
+	} else {
+	    goto fail;
+	}
+
+	ENTER_XLIB();
+	XDeleteProperty(dpy, window, prop);
+	LEAVE_XLIB();
+	RETURN(true);
     }
 fail:;
 %}.
@@ -9112,12 +9112,14 @@
 			    PropModeReplace,
 			    __stringVal(anObject),
 			    __wordArraySize(anObject));
+#ifdef __integerArrayVal
 	} else if (__isIntegerArray(anObject)) {
 	    /* array of atoms */
 	    XChangeProperty(dpy, window, prop, type, 32,
 			    PropModeReplace,
 			    (char *)__integerArrayVal(anObject),
 			    __integerArraySize(anObject));
+#endif
 	} else if (__isString(anObject) || __isSymbol(anObject)) { 
 	    XChangeProperty(dpy, window, prop, type, 8,
 			    PropModeReplace,
@@ -9513,17 +9515,17 @@
 
     selectionOwnerWindowId := self getSelectionOwnerOf:clipboardAtom.
     selectionOwnerWindowId isNil ifTrue:[
-        ^ nil       "no selection"
+	^ nil       "no selection"
     ].
     selectionOwnerWindowId == selectionOwner ifTrue:[
-        "I still hold the selection, so return my locally buffered data"
-        ^ copyBuffer
+	"I still hold the selection, so return my locally buffered data"
+	^ copyBuffer
     ].
 
     self requestSelection:clipboardAtom 
-                 property:(self atomIDOf:#'ST_SELECTION') 
-                     type:(self atomIDOf:#'ST_OBJECT') 
-                      for:drawableId.
+		 property:(self atomIDOf:#'ST_SELECTION') 
+		     type:(self atomIDOf:#'ST_OBJECT') 
+		      for:drawableId.
     ^ nil
 
     "Modified: / 17.6.1998 / 17:11:15 / cg"
@@ -9537,25 +9539,25 @@
     |selectionId selectionOwnerWindowId|
 
     selectionBufferSymbol == #selection ifTrue:[
-        selectionId := primaryAtom.
+	selectionId := primaryAtom.
     ] ifFalse:[
-        selectionId := clipboardAtom.
+	selectionId := clipboardAtom.
     ].
 
     selectionOwnerWindowId := self getSelectionOwnerOf:selectionId.
     selectionOwnerWindowId isNil ifTrue:[
-        ^ nil       "no selection"
+	^ nil       "no selection"
     ].
 
     selectionOwnerWindowId == selectionOwner ifTrue:[
-        "I still hold the selection, so return my locally buffered data"
-        ^ self selectionAsString.
+	"I still hold the selection, so return my locally buffered data"
+	^ self selectionAsString.
     ].
 
     self requestSelection:selectionId 
-                 property:(self atomIDOf:#'VT_SELECTION') 
-                     type:stringAtom 
-                      for:drawableId.
+		 property:(self atomIDOf:#'VT_SELECTION') 
+		     type:stringAtom 
+		      for:drawableId.
     ^ nil.
 !
 
@@ -9645,7 +9647,7 @@
      into xterm."
 
     (self setSelectionOwner:aWindowId of:clipboardAtom) ifFalse:[
-        'XWorkstation [warning]: selection ownerchange failed' errorPrintCR.
+	'XWorkstation [warning]: selection ownerchange failed' errorPrintCR.
     ].
     self setSelectionOwner:aWindowId of:primaryAtom.
     ^ true
@@ -9848,9 +9850,9 @@
     selectionOwner := aWindowId.
 
     selectionAtomSymbolOrID isString ifTrue:[
-        selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
+	selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
     ] ifFalse:[
-        selectionAtomID := selectionAtomSymbolOrID.
+	selectionAtomID := selectionAtomSymbolOrID.
     ].
 
 %{ 
@@ -9859,19 +9861,19 @@
     if (__isExternalAddress(aWindowId)
      && __isAtomID(selectionAtomID)
      && ISCONNECTED) {
-        Display *dpy = myDpy;
-        Window owner;
-
-        win = __WindowVal(aWindowId);
-        DPRINTF(("setOwner prop=%x win=%x\n", __AtomVal(selectionAtomID), win));
-        ENTER_XLIB();
-        XSetSelectionOwner(dpy, __AtomVal(selectionAtomID), win, CurrentTime);
-        owner = XGetSelectionOwner(dpy, __AtomVal(selectionAtomID));
-        LEAVE_XLIB();
-        if (owner != win) {
-            RETURN (false);
-        }
-        RETURN (true);
+	Display *dpy = myDpy;
+	Window owner;
+
+	win = __WindowVal(aWindowId);
+	DPRINTF(("setOwner prop=%x win=%x\n", __AtomVal(selectionAtomID), win));
+	ENTER_XLIB();
+	XSetSelectionOwner(dpy, __AtomVal(selectionAtomID), win, CurrentTime);
+	owner = XGetSelectionOwner(dpy, __AtomVal(selectionAtomID));
+	LEAVE_XLIB();
+	if (owner != win) {
+	    RETURN (false);
+	}
+	RETURN (true);
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -10999,7 +11001,7 @@
 !XWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.427 2003-02-13 18:18:07 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.428 2003-02-25 09:30:46 cg Exp $'
 ! !
 
 XWorkstation initialize!