class: XWorkstation
authorStefan Vogel <sv@exept.de>
Mon, 25 Nov 2013 12:00:04 +0100
changeset 6160 3ea2f08308ae
parent 6159 d4e463e0c56c
child 6161 7ade6e53ab87
class: XWorkstation changed: #selectionBuffer:as: #selectionRequest:requestor:selection:target:property:time: #supportedTargetAtoms
XWorkstation.st
--- a/XWorkstation.st	Mon Nov 25 11:51:46 2013 +0100
+++ b/XWorkstation.st	Mon Nov 25 12:00:04 2013 +0100
@@ -1,6 +1,6 @@
 "
 COPYRIGHT (c) 1989 by Claus Gittinger
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -12,41 +12,41 @@
 "{ Package: 'stx:libview' }"
 
 DeviceWorkstation subclass:#XWorkstation
-	instanceVariableNames:'hasShapeExtension hasShmExtension hasDPSExtension
-		hasMbufExtension hasXVideoExtension hasSaveUnder hasPEXExtension
-		hasImageExtension hasInputExtension hasXineramaExtension
-		hasRenderExtension hasXftLibrary ignoreBackingStore blackpixel whitepixel atoms protocolsAtom
-		deleteWindowAtom saveYourselfAtom quitAppAtom primaryAtom
-		clipboardAtom stringAtom wmStateAtom motifWMHintsAtom
-		listOfXFonts buttonsPressed eventRootX eventRootY displayName
-		eventTrace dispatchingExpose rgbVisual rgbaVisual virtualRootId
-		rootId altModifierMask metaModifierMask lastEventTime
-		rawMonitorBounds monitorBounds lastButtonPressTime
-		deviceIOTimeoutErrorSignal activateOnClick rawKeySymTranslation
-		selectionOwner selectionTime selectionFetchers selectionHandlers
-		preWaitAction xlibTimeout xlibTimeoutForWindowCreation
-		hasConnectionBroken uniqueDeviceID stxDeviceAtom uuidAtom
-		primaryBuffer windowGroupWindow maxOperationsUntilFlush
-		operationsUntilFlush'
-	classVariableNames:'RawKeySymTranslation ConservativeSync MaxStringLength
-		DefaultXLibTimeout DefaultXLibTimeoutForWindowCreation'
-	poolDictionaries:''
-	category:'Interface-Graphics'
+        instanceVariableNames:'hasShapeExtension hasShmExtension hasDPSExtension
+                hasMbufExtension hasXVideoExtension hasSaveUnder hasPEXExtension
+                hasImageExtension hasInputExtension hasXineramaExtension
+                hasRenderExtension hasXftLibrary ignoreBackingStore blackpixel whitepixel atoms protocolsAtom
+                deleteWindowAtom saveYourselfAtom quitAppAtom primaryAtom
+                clipboardAtom stringAtom wmStateAtom motifWMHintsAtom
+                listOfXFonts buttonsPressed eventRootX eventRootY displayName
+                eventTrace dispatchingExpose rgbVisual rgbaVisual virtualRootId
+                rootId altModifierMask metaModifierMask lastEventTime
+                rawMonitorBounds monitorBounds lastButtonPressTime
+                deviceIOTimeoutErrorSignal activateOnClick rawKeySymTranslation
+                selectionOwner clipboardSelectionTime primarySelectionTime
+                selectionFetchers selectionHandlers preWaitAction xlibTimeout
+                xlibTimeoutForWindowCreation hasConnectionBroken uniqueDeviceID
+                stxDeviceAtom uuidAtom primaryBuffer windowGroupWindow
+                maxOperationsUntilFlush operationsUntilFlush'
+        classVariableNames:'RawKeySymTranslation ConservativeSync MaxStringLength
+                DefaultXLibTimeout DefaultXLibTimeoutForWindowCreation'
+        poolDictionaries:''
+        category:'Interface-Graphics'
 !
 
 Object subclass:#SelectionFetcher
-	instanceVariableNames:'sema message display drawableID selectionID propertyID targetID
-		buffer done incremental'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:XWorkstation
+        instanceVariableNames:'sema message display drawableID selectionID propertyID targetID
+                buffer done incremental'
+        classVariableNames:''
+        poolDictionaries:''
+        privateIn:XWorkstation
 !
 
 SimpleView subclass:#WindowGroupWindow
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:XWorkstation
+        instanceVariableNames:''
+        classVariableNames:''
+        poolDictionaries:''
+        privateIn:XWorkstation
 !
 
 !XWorkstation primitiveDefinitions!
@@ -244,16 +244,16 @@
  */
 #define __ENTER_XLIB(whichTimeout)   \
     { \
-	__blockingPrimitiveTimoutHandler__ = (VOIDFUNC)__XTimeoutErrorHandler; \
-	__blockingPrimitiveTimeoutArg__ = self; \
-	__blockingPrimitiveTimeout__ = __intVal(__INST(whichTimeout)) * 1000; \
+        __blockingPrimitiveTimoutHandler__ = (VOIDFUNC)__XTimeoutErrorHandler; \
+        __blockingPrimitiveTimeoutArg__ = self; \
+        __blockingPrimitiveTimeout__ = __intVal(__INST(whichTimeout)) * 1000; \
     } {
 
 #define LEAVE_XLIB()   \
     { \
-	__blockingPrimitiveTimoutHandler__ = (VOIDFUNC)0; \
-	__blockingPrimitiveTimeoutArg__ = nil; \
-	__blockingPrimitiveTimeout__ = 0; \
+        __blockingPrimitiveTimoutHandler__ = (VOIDFUNC)0; \
+        __blockingPrimitiveTimeoutArg__ = nil; \
+        __blockingPrimitiveTimeout__ = 0; \
     } }
 
 #define ENTER_XLIB()   __ENTER_XLIB(xlibTimeout)
@@ -347,18 +347,18 @@
 # endif
 static
 dummyToForceLoading() {
-	XCreateSimpleWindow(0, 0, 0, 0, 0, 0, 0, 0, 0);
-	XCloseDisplay(0);
-	XCreateImage(0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0);
-	XSetWindowColormap(0, 0, 0);
-	XQueryColors(0,0,0,0);
+        XCreateSimpleWindow(0, 0, 0, 0, 0, 0, 0, 0, 0);
+        XCloseDisplay(0);
+        XCreateImage(0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0);
+        XSetWindowColormap(0, 0, 0);
+        XQueryColors(0,0,0,0);
 # ifdef SHM
-	XShmAttach(0, 0);
-	XShmCreateImage(0, 0, 0, 0, 0, 0, 0 ,0);
-	XShmDetach(0, 0);
-	XShmPutImage(0, 0, 0, 0 , 0,0,0,0,0,0,0);
-	shmctl(0,0,0);
-	fgetc(0);
+        XShmAttach(0, 0);
+        XShmCreateImage(0, 0, 0, 0, 0, 0, 0 ,0);
+        XShmDetach(0, 0);
+        XShmPutImage(0, 0, 0, 0 , 0,0,0,0,0,0,0);
+        shmctl(0,0,0);
+        fgetc(0);
 # endif
 }
 #endif
@@ -383,26 +383,26 @@
     lastErrorMsg[127] = '\0';
 
     if (lastErrorMsg[0] == '\0') {
-	sprintf(lastErrorMsg, "code: %d", event->error_code);
+        sprintf(lastErrorMsg, "code: %d", event->error_code);
     }
     lastRequestCode = event->request_code;
     lastMinorCode = event->minor_code;
     lastResource = event->resourceid;
     if ((event->error_code == BadWindow) && (lastRequestCode == 4) && (lastMinorCode == 0)) {
-	/*
-	 * this is a BadWindow error for X_DestroyWindow.
-	 * ignore it here, since it results from the GC freeing windows
-	 * in non bottom-up window order.
-	 */
-	return 0;
+        /*
+         * this is a BadWindow error for X_DestroyWindow.
+         * ignore it here, since it results from the GC freeing windows
+         * in non bottom-up window order.
+         */
+        return 0;
     }
 
     if (@global(DeviceWorkstation:ErrorPrinting) == true) {
-	console_fprintf(stderr, "XWorkstation [error]: x-error caught maj=%d (0x%x) min=%d (0x%x) resource=%"_lx_"\n",
-			event->request_code, event->request_code,
-			event->minor_code, event->minor_code, (INT)(event->resourceid));
-	console_fprintf(stderr, "XWorkstation [error]: x-error message is [%d] '%s'\n",
-			event->error_code, lastErrorMsg);
+        console_fprintf(stderr, "XWorkstation [error]: x-error caught maj=%d (0x%x) min=%d (0x%x) resource=%"_lx_"\n",
+                        event->request_code, event->request_code,
+                        event->minor_code, event->minor_code, (INT)(event->resourceid));
+        console_fprintf(stderr, "XWorkstation [error]: x-error message is [%d] '%s'\n",
+                        event->error_code, lastErrorMsg);
     }
 
     __errorInterruptWithIDAndParameter__(@symbol(DisplayError), __MKEXTERNALADDRESS(dpy));
@@ -422,10 +422,10 @@
     Display *dpy;
 {
     if (@global(DeviceWorkstation:ErrorPrinting) == true) {
-	console_fprintf(stderr, "XWorkstation [error]: I/O error\n");
+        console_fprintf(stderr, "XWorkstation [error]: I/O error\n");
     }
     __immediateErrorInterruptWithIDAndParameter__(@symbol(DisplayIOError),
-						  __MKEXTERNALADDRESS(dpy));
+                                                  __MKEXTERNALADDRESS(dpy));
 
 #if 0
     /*
@@ -457,12 +457,12 @@
     OBJ displayDeviceInst;
 {
     if ((displayDeviceInst == @global(MainDisplay))
-	|| (displayDeviceInst == @global(DeviceWorkstation:DefaultScreen))) {
-	console_fprintf(stderr, "XWorkstation [error]: keep display connection for master display after X11 timeout (no shutdown)\n");
-	return;
+        || (displayDeviceInst == @global(DeviceWorkstation:DefaultScreen))) {
+        console_fprintf(stderr, "XWorkstation [error]: keep display connection for master display after X11 timeout (no shutdown)\n");
+        return;
     }
     if (@global(DeviceWorkstation:ErrorPrinting) == true) {
-	console_fprintf(stderr, "XWorkstation [error]: X11 request timeout dpy=%"_lx_"\n", (INT)displayDeviceInst);
+        console_fprintf(stderr, "XWorkstation [error]: X11 request timeout dpy=%"_lx_"\n", (INT)displayDeviceInst);
     }
     __OINST(displayDeviceInst, hasConnectionBroken) = true;
 
@@ -474,14 +474,14 @@
      * if we return from the error interrupt ...
      */
     if (__OINST(displayDeviceInst, displayId) != nil) {
-	__internalError("unhandled X11 display timeout error");
-
-	/*
-	 * the current process failed to do an X11 request.
-	 * Terminate it!
-	 */
-	__terminateProcess(0);      /* soft terminate */
-	__terminateProcess(1);      /* hard terminate */
+        __internalError("unhandled X11 display timeout error");
+
+        /*
+         * the current process failed to do an X11 request.
+         * Terminate it!
+         */
+        __terminateProcess(0);      /* soft terminate */
+        __terminateProcess(1);      /* hard terminate */
     }
 }
 
@@ -493,7 +493,7 @@
 copyright
 "
 COPYRIGHT (c) 1989 by Claus Gittinger
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -519,21 +519,21 @@
     query is answered by the launcher when opening its applications.
 
     Timeouts:
-	sometimes, X-connections are lost and, as the Xlib is blocking and synchronous by
-	default, this would lead to a locked ST/X system.
-	Therefore, this class defines a timeOut, whenever doing an Xlib call.
-	The default for this timeout is 30seconds.
-	This may be a problem with windowmanagers which show a rubber-band rectangle
-	when creating windows.
-	If the user does not specify the rectangle within 30 seconds, the device assumes
-	a timeout and closes the connection.
-	As a (kludgy) workaround, a second timeout value is used for window-creation.
-	This secondary timeout value defaults to 60*5 seconds (5 minutes).
+        sometimes, X-connections are lost and, as the Xlib is blocking and synchronous by
+        default, this would lead to a locked ST/X system.
+        Therefore, this class defines a timeOut, whenever doing an Xlib call.
+        The default for this timeout is 30seconds.
+        This may be a problem with windowmanagers which show a rubber-band rectangle
+        when creating windows.
+        If the user does not specify the rectangle within 30 seconds, the device assumes
+        a timeout and closes the connection.
+        As a (kludgy) workaround, a second timeout value is used for window-creation.
+        This secondary timeout value defaults to 60*5 seconds (5 minutes).
 
     See more documentation in my superclass, DeviceWorkstation.
 
     [author:]
-	Claus Gittinger
+        Claus Gittinger
 "
 ! !
 
@@ -551,18 +551,18 @@
     DefaultXLibTimeoutForWindowCreation := 5*60.
 
     RawKeySymTranslation isNil ifTrue:[
-	"/ the following table maps X-keyevents to ST/X
-	"/ device independend events.
-	"/ It is NOT meant as a keyboardMap replacement.
-
-	RawKeySymTranslation := Dictionary new:6.
-	RawKeySymTranslation
-	    at:#'Delete_line' put:#DeleteLine;
-	    at:#'Delete_word' put:#DeleteWord;
-	    at:#Down put:#CursorDown;
-	    at:#Up put:#CursorUp;
-	    at:#Left put:#CursorLeft;
-	    at:#Right put:#CursorRight.
+        "/ the following table maps X-keyevents to ST/X
+        "/ device independend events.
+        "/ It is NOT meant as a keyboardMap replacement.
+
+        RawKeySymTranslation := Dictionary new:6.
+        RawKeySymTranslation
+            at:#'Delete_line' put:#DeleteLine;
+            at:#'Delete_word' put:#DeleteWord;
+            at:#Down put:#CursorDown;
+            at:#Up put:#CursorUp;
+            at:#Left put:#CursorLeft;
+            at:#Right put:#CursorRight.
     ]
 
     "Modified: / 27.4.1999 / 17:21:30 / cg"
@@ -581,8 +581,8 @@
 %{
 #ifdef COUNT_RESOURCES
     console_fprintf(stderr, "colors:%d bitmaps:%d views:%d gc:%d cursors:%d fonts:%d\n",
-	    __cnt_color, __cnt_bitmap,
-	    __cnt_view, __cnt_gc, __cnt_cursor, __cnt_font);
+            __cnt_color, __cnt_bitmap,
+            __cnt_view, __cnt_gc, __cnt_cursor, __cnt_font);
 #endif
 %}
 
@@ -624,13 +624,13 @@
     match := 'XRequest.' , self requestCodeOfLastError printString.
     s := '/usr/lib/X11/XErrorDB' asFilename readStreamOrNil.
     s notNil ifTrue:[
-	line := s peekForLineStartingWith:match.
-	s close.
+        line := s peekForLineStartingWith:match.
+        s close.
     ].
     line isNil ifTrue:[
-	string := string, ' in ', match
+        string := string, ' in ', match
     ] ifFalse:[
-	string := string , ' in ' , (line copyFrom:(line indexOf:$:)+1)
+        string := string , ' in ' , (line copyFrom:(line indexOf:$:)+1)
     ].
     ^ string
 !
@@ -653,7 +653,7 @@
 %{  /* NOCONTEXT */
 
       if (lastResource != 0) {
-	 RETURN ( __MKEXTERNALADDRESS(lastResource) );
+         RETURN ( __MKEXTERNALADDRESS(lastResource) );
       }
 %}.
 
@@ -661,7 +661,7 @@
 
 
      "
-	 Screen resourceIdOfLastError
+         Screen resourceIdOfLastError
      "
 !
 
@@ -729,7 +729,7 @@
 
     prev := activateOnClick ? false.
     aBoolean notNil ifTrue:[
-	activateOnClick := aBoolean.
+        activateOnClick := aBoolean.
     ].
     ^ prev
 
@@ -792,13 +792,13 @@
 
 %{  /* NOCONTEXT */
     if (aButton == __MKSMALLINT(1)) {
-	RETURN (__MKSMALLINT(Button1MotionMask));
+        RETURN (__MKSMALLINT(Button1MotionMask));
     }
     if (aButton == __MKSMALLINT(2)) {
-	RETURN (__MKSMALLINT(Button2MotionMask));
+        RETURN (__MKSMALLINT(Button2MotionMask));
     }
     if (aButton == __MKSMALLINT(3)) {
-	RETURN (__MKSMALLINT(Button3MotionMask));
+        RETURN (__MKSMALLINT(Button3MotionMask));
     }
 %}.
     ^ nil
@@ -819,7 +819,7 @@
 %{  /* NOCONTEXT */
 #ifndef WIN32
     if (ISCONNECTED) {
-	RETURN ( __MKSMALLINT(ConnectionNumber(myDpy)) );
+        RETURN ( __MKSMALLINT(ConnectionNumber(myDpy)) );
     }
 #endif
     RETURN (nil);
@@ -846,7 +846,7 @@
 
 %{  /* NOCONTEXT */
     if (ISCONNECTED) {
-	RETURN ( __MKSMALLINT(XProtocolVersion(myDpy)) );
+        RETURN ( __MKSMALLINT(XProtocolVersion(myDpy)) );
     }
     RETURN (nil);
 %}
@@ -862,7 +862,7 @@
      (to avoid bugs in certain implementations)"
 %{
     if (ISCONNECTED) {
-	RETURN ( __MKSTRING(XServerVendor(myDpy)) );
+        RETURN ( __MKSTRING(XServerVendor(myDpy)) );
     }
     RETURN (nil);
 %}
@@ -903,28 +903,28 @@
      && __isExternalAddress(windowId1)
      && __isExternalAddress(windowId2)
      && __bothSmallInteger(x1, y1)) {
-	Display *dpy = myDpy;
-	Window rootWin;
-
-	w1 = __WindowVal(windowId1);
-	w2 = __WindowVal(windowId2);
-
-	rootWin = RootWindow(dpy, screen);
-	if (w1 == rootWin) {
-	    w1 = (Window)__externalAddressVal(rootWindowId);
-	}
-	if (w2 == rootWin) {
-	    w2 = (Window)__externalAddressVal(rootWindowId);
-	}
-
-	ENTER_XLIB();
-	XTranslateCoordinates(dpy, w1, w2,
-			      __intVal(x1), __intVal(y1),
-			      &xpos, &ypos, &child_ret);
-	LEAVE_XLIB();
-
-	x2 = __MKSMALLINT(xpos);
-	y2 = __MKSMALLINT(ypos);
+        Display *dpy = myDpy;
+        Window rootWin;
+
+        w1 = __WindowVal(windowId1);
+        w2 = __WindowVal(windowId2);
+
+        rootWin = RootWindow(dpy, screen);
+        if (w1 == rootWin) {
+            w1 = (Window)__externalAddressVal(rootWindowId);
+        }
+        if (w2 == rootWin) {
+            w2 = (Window)__externalAddressVal(rootWindowId);
+        }
+
+        ENTER_XLIB();
+        XTranslateCoordinates(dpy, w1, w2,
+                              __intVal(x1), __intVal(y1),
+                              &xpos, &ypos, &child_ret);
+        LEAVE_XLIB();
+
+        x2 = __MKSMALLINT(xpos);
+        y2 = __MKSMALLINT(ypos);
     }
 %}.
 
@@ -938,7 +938,7 @@
 
 %{  /* NOCONTEXT */
     if (ISCONNECTED) {
-	RETURN ( __MKSMALLINT(XVendorRelease(myDpy)) );
+        RETURN ( __MKSMALLINT(XVendorRelease(myDpy)) );
     }
     RETURN (nil);
 %}
@@ -965,31 +965,31 @@
     if (ISCONNECTED
      && __isExternalAddress(windowId)
      && __isPoint(aPoint)) {
-	Display *dpy = myDpy;
-
-	xp = _point_X(aPoint);
-	yp = _point_Y(aPoint);
-	if (__bothSmallInteger(xp, yp)) {
-
-	    ENTER_XLIB();
-	    XTranslateCoordinates(dpy,
-				  RootWindow(dpy, screen),
-				  __WindowVal(windowId),
-				  __intVal(xp), __intVal(yp),
-				  &xpos, &ypos, &child_ret);
-	    LEAVE_XLIB();
-
-	    if (child_ret) {
-		RETURN ( __MKEXTERNALADDRESS(child_ret) );
-	    }
-	    RETURN ( nil );
-	}
+        Display *dpy = myDpy;
+
+        xp = _point_X(aPoint);
+        yp = _point_Y(aPoint);
+        if (__bothSmallInteger(xp, yp)) {
+
+            ENTER_XLIB();
+            XTranslateCoordinates(dpy,
+                                  RootWindow(dpy, screen),
+                                  __WindowVal(windowId),
+                                  __intVal(xp), __intVal(yp),
+                                  &xpos, &ypos, &child_ret);
+            LEAVE_XLIB();
+
+            if (child_ret) {
+                RETURN ( __MKEXTERNALADDRESS(child_ret) );
+            }
+            RETURN ( nil );
+        }
     }
 %}.
     windowId notNil ifTrue:[
-	aPoint isPoint ifTrue:[
-	    ^ self viewIdFromPoint:aPoint asPoint truncated in:windowId
-	]
+        aPoint isPoint ifTrue:[
+            ^ self viewIdFromPoint:aPoint asPoint truncated in:windowId
+        ]
     ].
 
     ^ nil
@@ -1009,21 +1009,21 @@
     if (ISCONNECTED
      && (__INST(rootId) != __INST(virtualRootId))
      && __isExternalAddress(__INST(virtualRootId))) {
-	Window vRootWin;
-	Window root;
-	int x, y;
-	unsigned int width, height;
-	unsigned int dummy;
-	int ret;
-
-	vRootWin = __WindowVal(__INST(virtualRootId));
-	ENTER_XLIB();
-	ret = XGetGeometry(myDpy, vRootWin, &root, &x, &y, &width, &height,
-					  &dummy, &dummy);
-	LEAVE_XLIB();
-	if (ret) {
-	    RETURN ( __MKPOINT_INT(width, height) );
-	}
+        Window vRootWin;
+        Window root;
+        int x, y;
+        unsigned int width, height;
+        unsigned int dummy;
+        int ret;
+
+        vRootWin = __WindowVal(__INST(virtualRootId));
+        ENTER_XLIB();
+        ret = XGetGeometry(myDpy, vRootWin, &root, &x, &y, &width, &height,
+                                          &dummy, &dummy);
+        LEAVE_XLIB();
+        if (ret) {
+            RETURN ( __MKPOINT_INT(width, height) );
+        }
     }
 %}.
     ^ width @ height
@@ -1066,9 +1066,9 @@
      This method must be redefined for displays which need it (i.e. X11 on osx)"
 
     OperatingSystem getOSType == #osx ifTrue:[
-	"/ should check for local display here - sigh, osx's Xserver does not give
-	"/ us a hint through the server vendor...
-	^ 16@16
+        "/ should check for local display here - sigh, osx's Xserver does not give
+        "/ us a hint through the server vendor...
+        ^ 16@16
     ].
     ^ 0@0
 !
@@ -1098,11 +1098,11 @@
 
     if (ISCONNECTED
      && __isStringLike(extensionString)) {
-	ENTER_XLIB();
-	if (XQueryExtension(myDpy, __stringVal(extensionString), &dummy, &dummy, &dummy)) {
-	    rslt = true;
-	}
-	LEAVE_XLIB();
+        ENTER_XLIB();
+        if (XQueryExtension(myDpy, __stringVal(extensionString), &dummy, &dummy, &dummy)) {
+            rslt = true;
+        }
+        LEAVE_XLIB();
     }
     RETURN (rslt);
 %}
@@ -1205,44 +1205,44 @@
     int cnt;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-	int status;
-
-	ENTER_XLIB();
-	status = XGetIconSizes(dpy, RootWindow(dpy, screen), &sizeList, &cnt);
-	LEAVE_XLIB();
-	if (status > 0) {
-	   xIconSizes = __MKEXTERNALBYTES(sizeList);
-	   count = __MKSMALLINT(cnt);
-	}
+        Display *dpy = myDpy;
+        int status;
+
+        ENTER_XLIB();
+        status = XGetIconSizes(dpy, RootWindow(dpy, screen), &sizeList, &cnt);
+        LEAVE_XLIB();
+        if (status > 0) {
+           xIconSizes = __MKEXTERNALBYTES(sizeList);
+           count = __MKSMALLINT(cnt);
+        }
     }
 %}.
     xIconSizes isNil ifTrue:[^ nil].
 
     ret := OrderedCollection new:count.
     1 to:count do:[ :i |
-	|minWidth minHeight maxWidth maxHeight widthStep heightStep d|
-
-%{
-	XIconSize *slp;
-
-	slp = &((XIconSize *)__externalAddressVal(xIconSizes))[__intVal(i)-1];
-	minWidth = __MKSMALLINT(slp->min_width);
-	minHeight = __MKSMALLINT(slp->min_height);
-	maxWidth = __MKSMALLINT(slp->max_width);
-	maxHeight = __MKSMALLINT(slp->max_height);
-	widthStep = __MKSMALLINT(slp->width_inc);
-	heightStep = __MKSMALLINT(slp->height_inc);
-%}.
-	d := IdentityDictionary new.
-	d at:#minWidth put:minWidth.
-	d at:#maxWidth put:maxWidth.
-	d at:#widthStep put:widthStep.
-	d at:#minHeight put:minHeight.
-	d at:#maxHeight put:maxHeight.
-	d at:#heightStep put:heightStep.
-
-	ret add:d
+        |minWidth minHeight maxWidth maxHeight widthStep heightStep d|
+
+%{
+        XIconSize *slp;
+
+        slp = &((XIconSize *)__externalAddressVal(xIconSizes))[__intVal(i)-1];
+        minWidth = __MKSMALLINT(slp->min_width);
+        minHeight = __MKSMALLINT(slp->min_height);
+        maxWidth = __MKSMALLINT(slp->max_width);
+        maxHeight = __MKSMALLINT(slp->max_height);
+        widthStep = __MKSMALLINT(slp->width_inc);
+        heightStep = __MKSMALLINT(slp->height_inc);
+%}.
+        d := IdentityDictionary new.
+        d at:#minWidth put:minWidth.
+        d at:#maxWidth put:maxWidth.
+        d at:#widthStep put:widthStep.
+        d at:#minHeight put:minHeight.
+        d at:#maxHeight put:maxHeight.
+        d at:#heightStep put:heightStep.
+
+        ret add:d
     ].
 
     xIconSizes free.
@@ -1270,52 +1270,52 @@
 %{
 #ifdef XINERAMA
     if (ISCONNECTED && __INST(hasXineramaExtension) == true) {
-	Display *dpy = myDpy;
-	XineramaScreenInfo *screenInfo;
-	int numDisplays;
-	OBJ *cResultArray;
-	int i, ci;
-
-	screenInfo = XineramaQueryScreens (dpy, &numDisplays);
-	if (screenInfo == 0) {
-	    goto out;
-	}
-
-	numberOfMonitors = __mkSmallInteger(numDisplays);
-	resultArray = __ARRAY_NEW_INT(numDisplays * 5);
-	cResultArray = __ArrayInstPtr(resultArray)->a_element;
-
-	for (i=0, ci=0; i < numDisplays; i++, ci+=5) {
-	    cResultArray[ci] = __mkSmallInteger(screenInfo[i].screen_number);
-	    cResultArray[ci+1] = __mkSmallInteger(screenInfo[i].x_org);
-	    cResultArray[ci+2] = __mkSmallInteger(screenInfo[i].y_org);
-	    cResultArray[ci+3] = __mkSmallInteger(screenInfo[i].width);
-	    cResultArray[ci+4] = __mkSmallInteger(screenInfo[i].height);
-	}
-
-	XFree(screenInfo);
+        Display *dpy = myDpy;
+        XineramaScreenInfo *screenInfo;
+        int numDisplays;
+        OBJ *cResultArray;
+        int i, ci;
+
+        screenInfo = XineramaQueryScreens (dpy, &numDisplays);
+        if (screenInfo == 0) {
+            goto out;
+        }
+
+        numberOfMonitors = __mkSmallInteger(numDisplays);
+        resultArray = __ARRAY_NEW_INT(numDisplays * 5);
+        cResultArray = __ArrayInstPtr(resultArray)->a_element;
+
+        for (i=0, ci=0; i < numDisplays; i++, ci+=5) {
+            cResultArray[ci] = __mkSmallInteger(screenInfo[i].screen_number);
+            cResultArray[ci+1] = __mkSmallInteger(screenInfo[i].x_org);
+            cResultArray[ci+2] = __mkSmallInteger(screenInfo[i].y_org);
+            cResultArray[ci+3] = __mkSmallInteger(screenInfo[i].width);
+            cResultArray[ci+4] = __mkSmallInteger(screenInfo[i].height);
+        }
+
+        XFree(screenInfo);
     }
 #endif
 out:;
 %}.
     numberOfMonitors isNil ifTrue:[
-	"no xinerama - the display is the only monitor"
-	^ Array with:self bounds.
+        "no xinerama - the display is the only monitor"
+        ^ Array with:self bounds.
     ].
     rawMonitorBounds = resultArray ifTrue:[
-	^ monitorBounds.
+        ^ monitorBounds.
     ].
 
     bounds := Array new:numberOfMonitors.
     1 to:numberOfMonitors do:[:idx|
-	|rect baseIdx|
-	baseIdx := (idx-1) * 5.
-	rect := Rectangle
-		    left:(resultArray at:baseIdx+2)
-		    top:(resultArray at:baseIdx+3)
-		    width:(resultArray at:baseIdx+4)
-		    height:(resultArray at:baseIdx+5).
-	bounds at:idx put:rect.
+        |rect baseIdx|
+        baseIdx := (idx-1) * 5.
+        rect := Rectangle
+                    left:(resultArray at:baseIdx+2)
+                    top:(resultArray at:baseIdx+3)
+                    width:(resultArray at:baseIdx+4)
+                    height:(resultArray at:baseIdx+5).
+        bounds at:idx put:rect.
     ].
 
     rawMonitorBounds := resultArray.
@@ -1338,8 +1338,8 @@
 
     bounds := self monitorBounds.
     ^ bounds
-	detect:[:eachRectangle| eachRectangle containsPoint:aPoint]
-	ifNone:[super monitorBoundsAt:aPoint].
+        detect:[:eachRectangle| eachRectangle containsPoint:aPoint]
+        ifNone:[super monitorBoundsAt:aPoint].
 
     "
      Screen current monitorBoundsAt:(0@0)
@@ -1354,7 +1354,7 @@
     ^ self monitorBounds size
 
     "
-	Display numberOfMonitors
+        Display numberOfMonitors
     "
 !
 
@@ -1385,7 +1385,7 @@
      Redefined to return a special value on SGI servers."
 
     self serverVendor = 'Silicon Graphics' ifTrue:[
-	^ 86@68
+        ^ 86@68
     ].
     ^ super preferredIconSize
 
@@ -1407,12 +1407,12 @@
 
     minH := self usableHeight.
     self monitorBounds do:[:eachBounds |
-	minH := minH min: eachBounds height.
+        minH := minH min: eachBounds height.
     ].
     ^ minH
 
     "
-	Display smallestMonitorHeight
+        Display smallestMonitorHeight
     "
 !
 
@@ -1427,7 +1427,7 @@
     Display *dpy;
 
     if (! ISCONNECTED) {
-	RETURN (nil);
+        RETURN (nil);
     }
 
     dpy = myDpy;
@@ -1439,30 +1439,30 @@
 %}.
     formatArray := Array new:nFormats.
     1 to:nFormats do:[:index |
-	|info bitsPerPixelInfo depthInfo paddingInfo i|
-
-	i := index.
-%{
-	ScreenFormat *format;
-	Display *dpy = myDpy;
+        |info bitsPerPixelInfo depthInfo paddingInfo i|
+
+        i := index.
+%{
+        ScreenFormat *format;
+        Display *dpy = myDpy;
 
 #ifdef NO_PRIVATE_DISPLAY_ACCESS
-	depthInfo = __MKSMALLINT(1);
-	bitsPerPixelInfo = __MKSMALLINT(1);
-	paddingInfo = __MKSMALLINT(8);
+        depthInfo = __MKSMALLINT(1);
+        bitsPerPixelInfo = __MKSMALLINT(1);
+        paddingInfo = __MKSMALLINT(8);
 #else
-	format = DISPLAYACCESS(dpy)->pixmap_format;
-	format += (__intVal(i)-1);
-	bitsPerPixelInfo = __MKSMALLINT(format->bits_per_pixel);
-	depthInfo = __MKSMALLINT(format->depth);
-	paddingInfo = __MKSMALLINT(format->scanline_pad);
-#endif
-%}.
-	info := IdentityDictionary new.
-	info at:#depth put:depthInfo.
-	info at:#bitsPerPixel put:bitsPerPixelInfo.
-	info at:#padding put:paddingInfo.
-	formatArray at:index put:info.
+        format = DISPLAYACCESS(dpy)->pixmap_format;
+        format += (__intVal(i)-1);
+        bitsPerPixelInfo = __MKSMALLINT(format->bits_per_pixel);
+        depthInfo = __MKSMALLINT(format->depth);
+        paddingInfo = __MKSMALLINT(format->scanline_pad);
+#endif
+%}.
+        info := IdentityDictionary new.
+        info at:#depth put:depthInfo.
+        info at:#bitsPerPixel put:bitsPerPixelInfo.
+        info at:#padding put:paddingInfo.
+        formatArray at:index put:info.
     ].
     ^ formatArray
 
@@ -1547,8 +1547,8 @@
 
     h := (self monitorBoundsAt:aPoint) height.
     OperatingSystem isOSXlike ifTrue:[
-	"/ take away some space for the icon-panel at the bottom.
-	^ h - 50
+        "/ take away some space for the icon-panel at the bottom.
+        ^ h - 50
     ].
     ^ h
 
@@ -1571,7 +1571,7 @@
 
     bitmapId := self primCreateBitmapFromArray:anArray width:w height:h.
     bitmapId isNil ifTrue:[
-	self primitiveFailedOrClosedConnection
+        self primitiveFailedOrClosedConnection
     ].
     ^ bitmapId
 !
@@ -1586,35 +1586,35 @@
 
     if (ISCONNECTED
      && __isStringLike(aString)) {
-	Display *dpy = myDpy;
-	char *filename;
-	int status;
-	Pixmap newBitmap;
-	unsigned b_width, b_height;
-	int b_x_hot, b_y_hot;
-
-	filename = (char *) __stringVal(aString);
-
-
-	ENTER_XLIB();
-	status = XReadBitmapFile(dpy, RootWindow(dpy, screen),
-				 filename, &b_width, &b_height, &newBitmap,
-				 &b_x_hot, &b_y_hot);
-	LEAVE_XLIB();
-
-
-	if ((status == BitmapSuccess)  && newBitmap) {
+        Display *dpy = myDpy;
+        char *filename;
+        int status;
+        Pixmap newBitmap;
+        unsigned b_width, b_height;
+        int b_x_hot, b_y_hot;
+
+        filename = (char *) __stringVal(aString);
+
+
+        ENTER_XLIB();
+        status = XReadBitmapFile(dpy, RootWindow(dpy, screen),
+                                 filename, &b_width, &b_height, &newBitmap,
+                                 &b_x_hot, &b_y_hot);
+        LEAVE_XLIB();
+
+
+        if ((status == BitmapSuccess)  && newBitmap) {
 #ifdef COUNT_RESOURCES
-	    __cnt_bitmap++;
-#endif
-	    w = __MKSMALLINT(b_width);
-	    h = __MKSMALLINT(b_height);
-	    id = __MKEXTERNALADDRESS(newBitmap);
-	}
+            __cnt_bitmap++;
+#endif
+            w = __MKSMALLINT(b_width);
+            h = __MKSMALLINT(b_height);
+            id = __MKEXTERNALADDRESS(newBitmap);
+        }
     }
 %}.
     id notNil ifTrue:[
-	aForm setWidth:w height:h
+        aForm setWidth:w height:h
     ].
     ^ id
 !
@@ -1630,19 +1630,19 @@
     Pixmap newBitmap;
 
     if (__bothSmallInteger(w, h) && ISCONNECTED) {
-	Display *dpy = myDpy;
-
-
-	ENTER_XLIB();
-	newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
-				       __intVal(w), __intVal(h), 1);
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+
+
+        ENTER_XLIB();
+        newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
+                                       __intVal(w), __intVal(h), 1);
+        LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	if (newBitmap)
-	    __cnt_bitmap++;
-#endif
-
-	RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
+        if (newBitmap)
+            __cnt_bitmap++;
+#endif
+
+        RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -1660,19 +1660,19 @@
     Pixmap newBitmap;
 
     if (__bothSmallInteger(w, h) && ISCONNECTED) {
-	Display *dpy = myDpy;
-
-
-	ENTER_XLIB();
-	newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
-				       __intVal(w), __intVal(h), __intVal(d));
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+
+
+        ENTER_XLIB();
+        newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
+                                       __intVal(w), __intVal(h), __intVal(d));
+        LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	if (newBitmap)
-	    __cnt_bitmap++;
-#endif
-
-	RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
+        if (newBitmap)
+            __cnt_bitmap++;
+#endif
+
+        RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -1680,18 +1680,18 @@
 !
 
 createWindowFor:aView type:typeSymbol
-		 origin:origin
-		 extent:extent
-		 minExtent:minExt
-		 maxExtent:maxExt
-		 borderWidth:bWidth
-		 subViewOf:wsuperView
-		 style:wStyle
-		 inputOnly:winputOnly
-		 label:wlabel
-		 owner:wowner
-		 icon:wicon iconMask:wiconMask
-		 iconView:wiconView
+                 origin:origin
+                 extent:extent
+                 minExtent:minExt
+                 maxExtent:maxExt
+                 borderWidth:bWidth
+                 subViewOf:wsuperView
+                 style:wStyle
+                 inputOnly:winputOnly
+                 label:wlabel
+                 owner:wowner
+                 icon:wicon iconMask:wiconMask
+                 iconView:wiconView
 
     <context: #return>
 
@@ -1702,50 +1702,50 @@
      wiconId wiconMaskId wiconViewId windowGroupWindowId|
 
     displayId isNil ifTrue:[
-	self primitiveFailedOrClosedConnection.
-	^ nil
+        self primitiveFailedOrClosedConnection.
+        ^ nil
     ].
 
     origin notNil ifTrue:[
-	xpos := origin x.
-	ypos := origin y.
+        xpos := origin x.
+        ypos := origin y.
     ] ifFalse:[
-	xpos := ypos := 0.
+        xpos := ypos := 0.
     ].
     extent notNil ifTrue:[
-	wwidth := extent x.
-	wheight := extent y.
+        wwidth := extent x.
+        wheight := extent y.
     ] ifFalse:[
-	wwidth := wheight := 100.
+        wwidth := wheight := 100.
     ].
     minExt notNil ifTrue:[
-	minWidth := minExt x.
-	minHeight := minExt y
+        minWidth := minExt x.
+        minHeight := minExt y
     ].
     maxExt notNil ifTrue:[
-	maxWidth := maxExt x.
-	maxHeight := maxExt y
+        maxWidth := maxExt x.
+        maxHeight := maxExt y
     ].
 
     wsuperView notNil ifTrue:[
-	wsuperViewId := wsuperView id
+        wsuperViewId := wsuperView id
     ] ifFalse:[
-	isTopWindow := true.
-	aView class ~~ WindowGroupWindow ifTrue:[
-	    windowGroupWindow isNil ifTrue:[
-		self getWindowGroupWindow.
-	    ].
-	    windowGroupWindowId := windowGroupWindow id.
-	].
-	wicon notNil ifTrue:[
-	    wiconId := wicon id.
-	    wiconMask notNil ifTrue:[
-		wiconMaskId := wiconMask id
-	    ]
-	].
-	wiconView notNil ifTrue:[
-	    wiconViewId := wiconView id
-	].
+        isTopWindow := true.
+        aView class ~~ WindowGroupWindow ifTrue:[
+            windowGroupWindow isNil ifTrue:[
+                self getWindowGroupWindow.
+            ].
+            windowGroupWindowId := windowGroupWindow id.
+        ].
+        wicon notNil ifTrue:[
+            wiconId := wicon id.
+            wiconMask notNil ifTrue:[
+                wiconMaskId := wiconMask id
+            ]
+        ].
+        wiconView notNil ifTrue:[
+            wiconViewId := wiconView id
+        ].
     ].
 
     weventMask := aView eventMask.
@@ -1779,122 +1779,122 @@
     sizehints.y = 0;
 
     if (__bothSmallInteger(wwidth, wheight)) {
-	sizehints.flags |= PSize;
-	sizehints.width = __intVal(wwidth);
-	sizehints.height = __intVal(wheight);
+        sizehints.flags |= PSize;
+        sizehints.width = __intVal(wwidth);
+        sizehints.height = __intVal(wheight);
     }
     if (__bothSmallInteger(xpos, ypos)) {
-	sizehints.flags |= PPosition;
-	sizehints.x = __intVal(xpos);
-	sizehints.y = __intVal(ypos);
+        sizehints.flags |= PPosition;
+        sizehints.x = __intVal(xpos);
+        sizehints.y = __intVal(ypos);
     }
     if (__bothSmallInteger(minWidth, minHeight)) {
-	sizehints.flags |= PMinSize;
-	sizehints.min_width = __intVal(minWidth);
-	sizehints.min_height = __intVal(minHeight);
+        sizehints.flags |= PMinSize;
+        sizehints.min_width = __intVal(minWidth);
+        sizehints.min_height = __intVal(minHeight);
     }
     if (__bothSmallInteger(maxWidth, maxHeight)) {
-	sizehints.flags |= PMaxSize;
-	sizehints.max_width = __intVal(maxWidth);
-	sizehints.max_height = __intVal(maxHeight);
+        sizehints.flags |= PMaxSize;
+        sizehints.max_width = __intVal(maxWidth);
+        sizehints.max_height = __intVal(maxHeight);
     }
 
     bg = WhitePixel(dpy, screen);
 
     if (__isSmallInteger(bWidth)) {
-	bw = __intVal(bWidth);
+        bw = __intVal(bWidth);
     } else {
-	bw = 0;
+        bw = 0;
     }
 
     bd = BlackPixel(dpy, screen);
 
     if (__isExternalAddress(wsuperViewId)) {
-	parentWindow = __WindowVal(wsuperViewId);
+        parentWindow = __WindowVal(wsuperViewId);
     } else {
-	parentWindow = RootWindow(dpy, screen);
+        parentWindow = RootWindow(dpy, screen);
     }
 
     if (wStyle == @symbol(popUp))
-	xswa.override_redirect = 1;
+        xswa.override_redirect = 1;
     else
-	xswa.override_redirect = 0;
+        xswa.override_redirect = 0;
 
     if (winputOnly == true)
-	ioClass = InputOnly;
+        ioClass = InputOnly;
     else
-	ioClass = InputOutput;
+        ioClass = InputOutput;
 
     if (__isSmallInteger(weventMask)) {
-	xswa.event_mask = __intVal(weventMask);
+        xswa.event_mask = __intVal(weventMask);
     } else {
-	xswa.event_mask = 0;
+        xswa.event_mask = 0;
     }
 
     if (ioClass == InputOnly) {
-	bw = 0;
-	depth = 0;
-	flags |= CWEventMask;
+        bw = 0;
+        depth = 0;
+        flags |= CWEventMask;
     } else {
-	depth = DefaultDepth(dpy,screen);
-	flags |= CWEventMask | CWBorderPixel | CWOverrideRedirect;
-
-	if (backPixmap != (Pixmap)0) {
-	    xswa.background_pixmap = backPixmap;
-	    flags |= CWBackPixmap;
-	} else {
-	    xswa.background_pixel = bg;
-	    flags |= CWBackPixel;
-	}
-	xswa.border_pixel = bd;
+        depth = DefaultDepth(dpy,screen);
+        flags |= CWEventMask | CWBorderPixel | CWOverrideRedirect;
+
+        if (backPixmap != (Pixmap)0) {
+            xswa.background_pixmap = backPixmap;
+            flags |= CWBackPixmap;
+        } else {
+            xswa.background_pixel = bg;
+            flags |= CWBackPixel;
+        }
+        xswa.border_pixel = bd;
     }
 
     visual.visualid = CopyFromParent;
     if (__isSmallInteger(preferredDepth)) {
-	depth = __intVal(preferredDepth);
+        depth = __intVal(preferredDepth);
     }
 
 
     if (preferredVisual != nil) {
-	XVisualInfo vi;
-	int cls;
-
-	if (preferredVisual == @symbol(StaticGray))
-	    cls = StaticGray;
-	else if (preferredVisual == @symbol(GrayScale))
-	    cls = GrayScale;
-	else if (preferredVisual == @symbol(StaticColor))
-	    cls = StaticColor;
-	else if (preferredVisual == @symbol(PseudoColor))
-	    cls = PseudoColor;
-	else if (preferredVisual == @symbol(TrueColor))
-	    cls = TrueColor;
-	else if (preferredVisual == @symbol(DirectColor))
-	    cls = DirectColor;
-	else
-	    cls = PseudoColor;
-
-	ENTER_XLIB();
-	if (XMatchVisualInfo(dpy, screen, depth, cls, &vi)) {
-	    visual.visualid = vi.visualid;
+        XVisualInfo vi;
+        int cls;
+
+        if (preferredVisual == @symbol(StaticGray))
+            cls = StaticGray;
+        else if (preferredVisual == @symbol(GrayScale))
+            cls = GrayScale;
+        else if (preferredVisual == @symbol(StaticColor))
+            cls = StaticColor;
+        else if (preferredVisual == @symbol(PseudoColor))
+            cls = PseudoColor;
+        else if (preferredVisual == @symbol(TrueColor))
+            cls = TrueColor;
+        else if (preferredVisual == @symbol(DirectColor))
+            cls = DirectColor;
+        else
+            cls = PseudoColor;
+
+        ENTER_XLIB();
+        if (XMatchVisualInfo(dpy, screen, depth, cls, &vi)) {
+            visual.visualid = vi.visualid;
 /*
-	    console_fprintf(stderr, "visualId=%x\n", vi.visualid);
+            console_fprintf(stderr, "visualId=%x\n", vi.visualid);
 */
-	}
-	LEAVE_XLIB();
+        }
+        LEAVE_XLIB();
     }
 
     ENTER_XLIB2();
     newWindow = XCreateWindow(dpy, parentWindow,
-			   sizehints.x, sizehints.y,
-			   sizehints.width, sizehints.height,
-			   bw, depth, ioClass, &visual,
-			   flags, &xswa);
+                           sizehints.x, sizehints.y,
+                           sizehints.width, sizehints.height,
+                           bw, depth, ioClass, &visual,
+                           flags, &xswa);
     LEAVE_XLIB();
 
 
     if (! newWindow) {
-	RETURN ( nil );
+        RETURN ( nil );
     }
 
 #ifdef COUNT_RESOURCES
@@ -1906,168 +1906,168 @@
      * (only makes sense for topWindows)
      */
     if (isTopWindow == true) {
-	XWMHints wmhints;
-
-	wmhints.flags = 0;
-
-	if (__isExternalAddress(wiconId)) {
-	    wmhints.icon_pixmap = __PixmapVal(wiconId);
-	    wmhints.flags = IconPixmapHint;
-	    if (__isExternalAddress(wiconMaskId)) {
-		wmhints.icon_mask = __PixmapVal(wiconMaskId);
-		wmhints.flags |= IconMaskHint;
-	    }
-	}
-
-	if (__isExternalAddress(windowGroupWindowId)) {
-	    wmhints.window_group = __WindowVal(windowGroupWindowId);
-	    wmhints.flags |= WindowGroupHint;
-	}
-
-	if (__isExternalAddress(wiconViewId)) {
-	    wmhints.flags |= IconWindowHint;
-	    wmhints.icon_window = __WindowVal(wiconViewId);
-	};
+        XWMHints wmhints;
+
+        wmhints.flags = 0;
+
+        if (__isExternalAddress(wiconId)) {
+            wmhints.icon_pixmap = __PixmapVal(wiconId);
+            wmhints.flags = IconPixmapHint;
+            if (__isExternalAddress(wiconMaskId)) {
+                wmhints.icon_mask = __PixmapVal(wiconMaskId);
+                wmhints.flags |= IconMaskHint;
+            }
+        }
+
+        if (__isExternalAddress(windowGroupWindowId)) {
+            wmhints.window_group = __WindowVal(windowGroupWindowId);
+            wmhints.flags |= WindowGroupHint;
+        }
+
+        if (__isExternalAddress(wiconViewId)) {
+            wmhints.flags |= IconWindowHint;
+            wmhints.icon_window = __WindowVal(wiconViewId);
+        };
 
 /*
-	wmhints.flags |= InputHint;
-	wmhints.input = True;
+        wmhints.flags |= InputHint;
+        wmhints.input = True;
 */
-	ENTER_XLIB();
-	XSetWMHints(dpy, newWindow, &wmhints);
-	XSetWMNormalHints(dpy, newWindow, &sizehints);
-	LEAVE_XLIB();
-
-	/*
-	 * get atoms first (if not already known)
-	 */
-	if (__INST(protocolsAtom) == nil) {
-	    ENTER_XLIB();
-	    WmProtocolsAtom = XInternAtom(dpy, "WM_PROTOCOLS", False);
-	    __INST(protocolsAtom) = __MKATOMOBJ(WmProtocolsAtom);
+        ENTER_XLIB();
+        XSetWMHints(dpy, newWindow, &wmhints);
+        XSetWMNormalHints(dpy, newWindow, &sizehints);
+        LEAVE_XLIB();
+
+        /*
+         * get atoms first (if not already known)
+         */
+        if (__INST(protocolsAtom) == nil) {
+            ENTER_XLIB();
+            WmProtocolsAtom = XInternAtom(dpy, "WM_PROTOCOLS", False);
+            __INST(protocolsAtom) = __MKATOMOBJ(WmProtocolsAtom);
 #ifdef USE_SAVEYOURSELF_ATOM
-	    WmSaveYourselfAtom = XInternAtom(dpy, "WM_SAVE_YOURSELF", False);
-	    __INST(saveYourselfAtom) = __MKATOMOBJ(WmSaveYourselfAtom);
+            WmSaveYourselfAtom = XInternAtom(dpy, "WM_SAVE_YOURSELF", False);
+            __INST(saveYourselfAtom) = __MKATOMOBJ(WmSaveYourselfAtom);
 #endif
 #ifdef USE_QUIT_APP_ATOM
-	    WmQuitAppAtom = XInternAtom(dpy, "_WM_QUIT_APP", False);
-	    __INST(quitAppAtom) = __MKATOMOBJ(WmQuitAppAtom);
-#endif
-	    WmDeleteWindowAtom = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
-	    __INST(deleteWindowAtom) = __MKATOMOBJ(WmDeleteWindowAtom);
-
-	    UUIDAtom = XInternAtom(dpy, "UUID", False);
-	    __INST(uuidAtom) = __MKATOMOBJ(UUIDAtom);
-	    STXDeviceAtom = XInternAtom(dpy, "STX_DEVICE_ID", False);
-	    __INST(stxDeviceAtom) = __MKATOMOBJ(STXDeviceAtom);
-
-	    LEAVE_XLIB();
-	} else {
+            WmQuitAppAtom = XInternAtom(dpy, "_WM_QUIT_APP", False);
+            __INST(quitAppAtom) = __MKATOMOBJ(WmQuitAppAtom);
+#endif
+            WmDeleteWindowAtom = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
+            __INST(deleteWindowAtom) = __MKATOMOBJ(WmDeleteWindowAtom);
+
+            UUIDAtom = XInternAtom(dpy, "UUID", False);
+            __INST(uuidAtom) = __MKATOMOBJ(UUIDAtom);
+            STXDeviceAtom = XInternAtom(dpy, "STX_DEVICE_ID", False);
+            __INST(stxDeviceAtom) = __MKATOMOBJ(STXDeviceAtom);
+
+            LEAVE_XLIB();
+        } else {
 #ifdef USE_QUIT_APP_ATOM
-	    WmQuitAppAtom = __AtomVal(__INST(quitAppAtom));
+            WmQuitAppAtom = __AtomVal(__INST(quitAppAtom));
 #else
-	    WmQuitAppAtom = 0;
-#endif
-	    WmProtocolsAtom = __AtomVal(__INST(protocolsAtom));
-	    WmDeleteWindowAtom = __AtomVal(__INST(deleteWindowAtom));
+            WmQuitAppAtom = 0;
+#endif
+            WmProtocolsAtom = __AtomVal(__INST(protocolsAtom));
+            WmDeleteWindowAtom = __AtomVal(__INST(deleteWindowAtom));
 #ifdef USE_SAVEYOURSELF_ATOM
-	    WmSaveYourselfAtom = __AtomVal(__INST(saveYourselfAtom));
+            WmSaveYourselfAtom = __AtomVal(__INST(saveYourselfAtom));
 #else
-	    WmSaveYourselfAtom = 0;
-#endif
-	    UUIDAtom = __AtomVal(__INST(uuidAtom));;
-	    STXDeviceAtom = __AtomVal(__INST(stxDeviceAtom));;
-	}
-
-	/*
-	 * tell window manager to not kill us but send an event instead
-	 */
-	atoms[0] = WmDeleteWindowAtom; atomCount++;
+            WmSaveYourselfAtom = 0;
+#endif
+            UUIDAtom = __AtomVal(__INST(uuidAtom));;
+            STXDeviceAtom = __AtomVal(__INST(stxDeviceAtom));;
+        }
+
+        /*
+         * tell window manager to not kill us but send an event instead
+         */
+        atoms[0] = WmDeleteWindowAtom; atomCount++;
 #ifdef USE_SAVEYOURSELF_ATOM
-	atoms[atomCount] = WmSaveYourselfAtom; atomCount++;
+        atoms[atomCount] = WmSaveYourselfAtom; atomCount++;
 #endif
 #ifdef USE_QUIT_APP_ATOM
-	atoms[atomCount] = WmQuitAppAtom; atomCount++;
-#endif
-	ENTER_XLIB();
-	XChangeProperty(dpy, newWindow, WmProtocolsAtom, XA_ATOM,
-			32, PropModeReplace, (unsigned char *)atoms, atomCount);
-	LEAVE_XLIB();
-
-	/*
-	 * an optional unique id (to mark stx-windows)
-	 */
-	if (__isBytes(__INST(uniqueDeviceID))) {
-	    int numUUIDBytes = __byteArraySize(__INST(uniqueDeviceID));
-	    unsigned char uuidBytes[32];
-
-	    if (numUUIDBytes <= sizeof(uuidBytes)) {
-		Atom uuidAtom;
-
-		bcopy(__byteArrayVal(__INST(uniqueDeviceID)), uuidBytes, numUUIDBytes);
-
-		ENTER_XLIB();
-		XChangeProperty (dpy, newWindow, STXDeviceAtom, UUIDAtom, 8, PropModeReplace,
-				 uuidBytes, numUUIDBytes );
-		LEAVE_XLIB();
-	    }
-	}
+        atoms[atomCount] = WmQuitAppAtom; atomCount++;
+#endif
+        ENTER_XLIB();
+        XChangeProperty(dpy, newWindow, WmProtocolsAtom, XA_ATOM,
+                        32, PropModeReplace, (unsigned char *)atoms, atomCount);
+        LEAVE_XLIB();
+
+        /*
+         * an optional unique id (to mark stx-windows)
+         */
+        if (__isBytes(__INST(uniqueDeviceID))) {
+            int numUUIDBytes = __byteArraySize(__INST(uniqueDeviceID));
+            unsigned char uuidBytes[32];
+
+            if (numUUIDBytes <= sizeof(uuidBytes)) {
+                Atom uuidAtom;
+
+                bcopy(__byteArrayVal(__INST(uniqueDeviceID)), uuidBytes, numUUIDBytes);
+
+                ENTER_XLIB();
+                XChangeProperty (dpy, newWindow, STXDeviceAtom, UUIDAtom, 8, PropModeReplace,
+                                 uuidBytes, numUUIDBytes );
+                LEAVE_XLIB();
+            }
+        }
 
 #ifdef SUPPORT_MOTIF_WM_HINTS
-	/*
-	 * less decoration
-	 */
-	if ((wStyle == @symbol(undecorated))
-	 || (wStyle == @symbol(dialog2))
-	 || (wStyle == @symbol(notitle))
-	) {
-	    if (__INST(motifWMHintsAtom) == nil) {
-		ENTER_XLIB();
-		MotifWMHintsAtom = XInternAtom(dpy, "_MOTIF_WM_HINTS", False);
-		__INST(motifWMHintsAtom) = __MKATOMOBJ(MotifWMHintsAtom);
-		LEAVE_XLIB();
-	    } else {
-		MotifWMHintsAtom = __AtomVal(__INST(motifWMHintsAtom));
-	    }
-
-	    {
-		struct hints {
-		    unsigned long flags;
-		    unsigned long functions;
-		    unsigned long decorations;
-		    long input_mode;
-		    unsigned long status;
-		} mvm_hints;
-
-		if (wStyle == @symbol(undecorated)) {
-		    mvm_hints.decorations = MWM_DECOR_NONE;
-		}
-		if (wStyle == @symbol(dialog2)) {
-		    mvm_hints.decorations = MWM_DECOR_BORDER
-					    | MWM_DECOR_RESIZEH
-					    | MWM_DECOR_TITLE
-					    /* | MWM_DECOR_MENU */
-					    /* | MWM_DECOR_MINIMIZE */
-					    /* | MWM_DECOR_MAXIMIZE */
-					    ;
-		}
-		if (wStyle == @symbol(notitle)) {
-		    mvm_hints.decorations = MWM_DECOR_BORDER
-					    /* | MWM_DECOR_RESIZEH  */
-					    /* | MWM_DECOR_TITLE    */
-					    /* | MWM_DECOR_MENU     */
-					    /* | MWM_DECOR_MINIMIZE */
-					    /* | MWM_DECOR_MAXIMIZE */
-					    ;
-		}
-		mvm_hints.flags =  MWM_HINTS_DECORATIONS;
-		ENTER_XLIB();
-		XChangeProperty (dpy, newWindow, MotifWMHintsAtom,
-				     MotifWMHintsAtom, 32, PropModeReplace,
-				     (unsigned char*)&mvm_hints, 5 );
-		LEAVE_XLIB();
-	    }
-	}
+        /*
+         * less decoration
+         */
+        if ((wStyle == @symbol(undecorated))
+         || (wStyle == @symbol(dialog2))
+         || (wStyle == @symbol(notitle))
+        ) {
+            if (__INST(motifWMHintsAtom) == nil) {
+                ENTER_XLIB();
+                MotifWMHintsAtom = XInternAtom(dpy, "_MOTIF_WM_HINTS", False);
+                __INST(motifWMHintsAtom) = __MKATOMOBJ(MotifWMHintsAtom);
+                LEAVE_XLIB();
+            } else {
+                MotifWMHintsAtom = __AtomVal(__INST(motifWMHintsAtom));
+            }
+
+            {
+                struct hints {
+                    unsigned long flags;
+                    unsigned long functions;
+                    unsigned long decorations;
+                    long input_mode;
+                    unsigned long status;
+                } mvm_hints;
+
+                if (wStyle == @symbol(undecorated)) {
+                    mvm_hints.decorations = MWM_DECOR_NONE;
+                }
+                if (wStyle == @symbol(dialog2)) {
+                    mvm_hints.decorations = MWM_DECOR_BORDER
+                                            | MWM_DECOR_RESIZEH
+                                            | MWM_DECOR_TITLE
+                                            /* | MWM_DECOR_MENU */
+                                            /* | MWM_DECOR_MINIMIZE */
+                                            /* | MWM_DECOR_MAXIMIZE */
+                                            ;
+                }
+                if (wStyle == @symbol(notitle)) {
+                    mvm_hints.decorations = MWM_DECOR_BORDER
+                                            /* | MWM_DECOR_RESIZEH  */
+                                            /* | MWM_DECOR_TITLE    */
+                                            /* | MWM_DECOR_MENU     */
+                                            /* | MWM_DECOR_MINIMIZE */
+                                            /* | MWM_DECOR_MAXIMIZE */
+                                            ;
+                }
+                mvm_hints.flags =  MWM_HINTS_DECORATIONS;
+                ENTER_XLIB();
+                XChangeProperty (dpy, newWindow, MotifWMHintsAtom,
+                                     MotifWMHintsAtom, 32, PropModeReplace,
+                                     (unsigned char*)&mvm_hints, 5 );
+                LEAVE_XLIB();
+            }
+        }
 #endif /* SUPPORT_MOTIF_WM_HINTS */
     }
 
@@ -2080,9 +2080,9 @@
 
     (wsuperView isNil "this is a topwindow"
      and:[wlabel notEmptyOrNil]) ifTrue:[
-	self
-	    setIconName:wlabel in:windowId;
-	    setWindowName:wlabel in:windowId.
+        self
+            setIconName:wlabel in:windowId;
+            setWindowName:wlabel in:windowId.
     ].
 
     self addKnownView:aView withId:windowId.
@@ -2099,25 +2099,25 @@
      * ignore closed connection
      */
     if (! ISCONNECTED) {
-	RETURN ( self );
+        RETURN ( self );
     }
 
     if (__isExternalAddress(aGCId)) {
-	GC gc = __GCVal(aGCId);
-
-	if (gc) {
-	    __ExternalAddressInstPtr(aGCId)->e_address = NULL;
-
-	    ENTER_XLIB();
-	    XFreeGC(myDpy, gc);
-	    LEAVE_XLIB();
+        GC gc = __GCVal(aGCId);
+
+        if (gc) {
+            __ExternalAddressInstPtr(aGCId)->e_address = NULL;
+
+            ENTER_XLIB();
+            XFreeGC(myDpy, gc);
+            LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	    __cnt_gc--;
-#endif
-	} else {
-	    console_fprintf(stderr, "XWorkstation [warning]: trying to destroy GC twice\n");
-	}
-	RETURN ( self );
+            __cnt_gc--;
+#endif
+        } else {
+            console_fprintf(stderr, "XWorkstation [warning]: trying to destroy GC twice\n");
+        }
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -2131,23 +2131,23 @@
      * ignore closed connection
      */
     if (! ISCONNECTED) {
-	RETURN ( self );
+        RETURN ( self );
     }
 
     if (__isExternalAddress(aDrawableId)) {
-	Pixmap pix = __PixmapVal(aDrawableId);
-
-	if (pix) {
-
-	    ENTER_XLIB();
-	    XFreePixmap(myDpy, pix);
-	    LEAVE_XLIB();
+        Pixmap pix = __PixmapVal(aDrawableId);
+
+        if (pix) {
+
+            ENTER_XLIB();
+            XFreePixmap(myDpy, pix);
+            LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	    __cnt_bitmap--;
-#endif
-
-	}
-	RETURN ( self );
+            __cnt_bitmap--;
+#endif
+
+        }
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -2172,16 +2172,16 @@
      && __isExternalAddress(aGCId)
      && ISCONNECTED) {
 
-	ENTER_XLIB();
-	dps = XDPSCreateContext(myDpy, __DrawableVal(aDrawableId),
-				       __GCVal(aGCId),
-				       0, height, 0, colormap, NULL, 0,
-				       XDPSDefaultTextBackstop,
-				       XDPSDefaultErrorProc,
-				       NULL);
-	LEAVE_XLIB();
-
-	RETURN ( dps ? __MKEXTERNALADDRESS(dps) : nil );
+        ENTER_XLIB();
+        dps = XDPSCreateContext(myDpy, __DrawableVal(aDrawableId),
+                                       __GCVal(aGCId),
+                                       0, height, 0, colormap, NULL, 0,
+                                       XDPSDefaultTextBackstop,
+                                       XDPSDefaultErrorProc,
+                                       NULL);
+        LEAVE_XLIB();
+
+        RETURN ( dps ? __MKEXTERNALADDRESS(dps) : nil );
     }
 #endif
 %}.
@@ -2198,16 +2198,16 @@
 
     if (__isExternalAddress(aDrawableId) && ISCONNECTED) {
 
-	ENTER_XLIB();
-	gc = XCreateGC(myDpy, __DrawableVal(aDrawableId), 0L, (XGCValues *)0);
-	LEAVE_XLIB();
+        ENTER_XLIB();
+        gc = XCreateGC(myDpy, __DrawableVal(aDrawableId), 0L, (XGCValues *)0);
+        LEAVE_XLIB();
 
 #ifdef COUNT_RESOURCES
-	if (gc)
-	    __cnt_gc++;
-#endif
-
-	RETURN ( gc ? __MKEXTERNALADDRESS(gc) : nil );
+        if (gc)
+            __cnt_gc++;
+#endif
+
+        RETURN ( gc ? __MKEXTERNALADDRESS(gc) : nil );
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -2244,86 +2244,86 @@
     int bytesPerRow;
 
     if (! ISCONNECTED) {
-	RETURN (nil);
+        RETURN (nil);
     }
 
     dpy = myDpy;
     if (firstCall) {
-	for (index=0; index < 256; index++) {
-	    int t = 0;
-
-	    if (index & 128) t |=   1;
-	    if (index &  64) t |=   2;
-	    if (index &  32) t |=   4;
-	    if (index &  16) t |=   8;
-	    if (index &   8) t |=  16;
-	    if (index &   4) t |=  32;
-	    if (index &   2) t |=  64;
-	    if (index &   1) t |= 128;
-
-	    reverseBitTable[index] = t;
-	}
-	firstCall = 0;
+        for (index=0; index < 256; index++) {
+            int t = 0;
+
+            if (index & 128) t |=   1;
+            if (index &  64) t |=   2;
+            if (index &  32) t |=   4;
+            if (index &  16) t |=   8;
+            if (index &   8) t |=  16;
+            if (index &   4) t |=  32;
+            if (index &   2) t |=  64;
+            if (index &   1) t |= 128;
+
+            reverseBitTable[index] = t;
+        }
+        firstCall = 0;
     }
 
     if (__bothSmallInteger(w, h) && _isNonNilObject(anArray)) {
-	newBitmap = (Pixmap)0;
-	b_width = __intVal(w);
-	b_height = __intVal(h);
-	bytesPerRow = (b_width + 7) / 8;
-	nBytes = b_height * bytesPerRow;
-	if (nBytes < sizeof(fastBits)) {
-	    cp = b_bits = fastBits;
-	    allocatedBits = 0;
-	} else {
-	    cp = b_bits = allocatedBits = (unsigned char *) malloc(nBytes);
-	    if (! cp) goto fail;
-	}
-
-	if (__isArrayLike(anArray)) {
-	    index = 1;
-	    op = &(__ArrayInstPtr(anArray)->a_element[index - 1]);
-	    for (row = b_height; row; row--) {
-		for (col = bytesPerRow; col; col--) {
-		    num = *op++;
-		    if (__isSmallInteger(num)) {
-			bits = __intVal(num);
-		    } else {
-			bits = __longIntVal(num);
-			if (bits == 0) {
-			    goto fail;
-			}
-		    }
-		    *cp++ = reverseBitTable[bits & 0xFF];
-		}
-	    }
-	} else {
-	    if (__isByteArrayLike(anArray)) {
-		pBits = __ByteArrayInstPtr(anArray)->ba_element;
-		for (col = b_height*bytesPerRow; col; col--) {
-		    *cp++ = reverseBitTable[*pBits++];
-		}
-	    } else {
-		goto fail;
-	    }
-	}
-
-
-	ENTER_XLIB();
-	newBitmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen),
-					       (char *)b_bits,
-					       b_width, b_height);
-	LEAVE_XLIB();
+        newBitmap = (Pixmap)0;
+        b_width = __intVal(w);
+        b_height = __intVal(h);
+        bytesPerRow = (b_width + 7) / 8;
+        nBytes = b_height * bytesPerRow;
+        if (nBytes < sizeof(fastBits)) {
+            cp = b_bits = fastBits;
+            allocatedBits = 0;
+        } else {
+            cp = b_bits = allocatedBits = (unsigned char *) malloc(nBytes);
+            if (! cp) goto fail;
+        }
+
+        if (__isArrayLike(anArray)) {
+            index = 1;
+            op = &(__ArrayInstPtr(anArray)->a_element[index - 1]);
+            for (row = b_height; row; row--) {
+                for (col = bytesPerRow; col; col--) {
+                    num = *op++;
+                    if (__isSmallInteger(num)) {
+                        bits = __intVal(num);
+                    } else {
+                        bits = __longIntVal(num);
+                        if (bits == 0) {
+                            goto fail;
+                        }
+                    }
+                    *cp++ = reverseBitTable[bits & 0xFF];
+                }
+            }
+        } else {
+            if (__isByteArrayLike(anArray)) {
+                pBits = __ByteArrayInstPtr(anArray)->ba_element;
+                for (col = b_height*bytesPerRow; col; col--) {
+                    *cp++ = reverseBitTable[*pBits++];
+                }
+            } else {
+                goto fail;
+            }
+        }
+
+
+        ENTER_XLIB();
+        newBitmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen),
+                                               (char *)b_bits,
+                                               b_width, b_height);
+        LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	if (newBitmap)
-	    __cnt_bitmap++;
+        if (newBitmap)
+            __cnt_bitmap++;
 #endif
 
 
 fail: ;
-	if (allocatedBits)
-	    free(allocatedBits);
-	RETURN ( newBitmap ? __MKEXTERNALADDRESS(newBitmap) : nil );
+        if (allocatedBits)
+            free(allocatedBits);
+        RETURN ( newBitmap ? __MKEXTERNALADDRESS(newBitmap) : nil );
     }
 %}.
     ^ nil
@@ -2340,22 +2340,22 @@
     <context: #return>
 %{
     if (! ISCONNECTED) {
-	RETURN ( self );
+        RETURN ( self );
     }
 
     if (__isExternalAddress(aWindowId)) {
-	Window win = __WindowVal(aWindowId);
-
-	if (win) {
-
-	    ENTER_XLIB();
-	    XDestroyWindow(myDpy, win);
-	    LEAVE_XLIB();
+        Window win = __WindowVal(aWindowId);
+
+        if (win) {
+
+            ENTER_XLIB();
+            XDestroyWindow(myDpy, win);
+            LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	    __cnt_view--;
-#endif
-
-	}
+            __cnt_view--;
+#endif
+
+        }
     }
 %}
 ! !
@@ -2394,14 +2394,14 @@
 
     s := aString ? ''.
     s isString ifFalse:[
-	s := s asStringWithCRsFrom:1 to:(s size) compressTabs:false withCR:false
+        s := s asStringWithCRsFrom:1 to:(s size) compressTabs:false withCR:false
     ].
 
     viewID := aView id.
     viewID notNil ifTrue:[ "/ if the view is not already closed
-	"/ for now - should add support to pass emphasis information too
-	s := s string.
-	self setPrimaryText:s owner:viewID.
+        "/ for now - should add support to pass emphasis information too
+        s := s string.
+        self setPrimaryText:s owner:viewID.
     ]
 
     "Created: / 27-03-2012 / 14:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2422,20 +2422,20 @@
     Status ok;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-
-	ENTER_XLIB();
-	ok = XAllocColorCells(dpy, DefaultColormap(dpy, screen), (Bool)0,
-				   &dummy, 0, &color.pixel, 1);
-	LEAVE_XLIB();
-
-	if (ok) {
+        Display *dpy = myDpy;
+
+
+        ENTER_XLIB();
+        ok = XAllocColorCells(dpy, DefaultColormap(dpy, screen), (Bool)0,
+                                   &dummy, 0, &color.pixel, 1);
+        LEAVE_XLIB();
+
+        if (ok) {
 #ifdef COUNT_RESOURCES
-	    __cnt_color++;
-#endif
-	    RETURN ( __MKSMALLINT(color.pixel) );
-	}
+            __cnt_color++;
+#endif
+            RETURN ( __MKSMALLINT(color.pixel) );
+        }
     }
 %}.
     ^ nil
@@ -2456,35 +2456,35 @@
 
     if (ISCONNECTED
      && __isStringLike(aString)) {
-	Display *dpy = myDpy;
-
-	colorname = (char *) __stringVal(aString);
-
-
-	ENTER_XLIB();
-	ok = XParseColor(dpy, DefaultColormap(dpy, screen), colorname, &ecolor);
-	LEAVE_XLIB();
-	if (ok) {
+        Display *dpy = myDpy;
+
+        colorname = (char *) __stringVal(aString);
+
+
+        ENTER_XLIB();
+        ok = XParseColor(dpy, DefaultColormap(dpy, screen), colorname, &ecolor);
+        LEAVE_XLIB();
+        if (ok) {
 #ifdef QUICK_TRUE_COLORS
-	    if (__INST(visualType) == @symbol(TrueColor)) {
-		id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
-		id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
-		id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
-		RETURN ( __MKSMALLINT(id) );
-	    }
-#endif
-	    ENTER_XLIB();
-	    ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
-	    LEAVE_XLIB();
-	}
-
-	if (! ok) {
-	    RETURN ( nil );
-	}
+            if (__INST(visualType) == @symbol(TrueColor)) {
+                id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
+                id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
+                id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
+                RETURN ( __MKSMALLINT(id) );
+            }
+#endif
+            ENTER_XLIB();
+            ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
+            LEAVE_XLIB();
+        }
+
+        if (! ok) {
+            RETURN ( nil );
+        }
 #ifdef COUNT_RESOURCES
-	__cnt_color++;
-#endif
-	RETURN ( __MKSMALLINT(ecolor.pixel) );
+        __cnt_color++;
+#endif
+        RETURN ( __MKSMALLINT(ecolor.pixel) );
     }
 %}.
     ^ super colorNamed:aString
@@ -2504,30 +2504,30 @@
     if (__bothSmallInteger(r, g)
      && __isSmallInteger(b)
      && ISCONNECTED) {
-	ecolor.red = __intVal(r);
-	ecolor.green= __intVal(g);
-	ecolor.blue = __intVal(b);
+        ecolor.red = __intVal(r);
+        ecolor.green= __intVal(g);
+        ecolor.blue = __intVal(b);
 #ifdef QUICK_TRUE_COLORS
-	if (__INST(visualType) == @symbol(TrueColor)) {
-	    id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
-	    id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
-	    id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
-	    RETURN ( __MKSMALLINT(id) );
-	}
-#endif
-	dpy = myDpy;
-
-	ENTER_XLIB();
-	ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
-	LEAVE_XLIB();
-
-	if (! ok) {
-	    RETURN ( nil );
-	}
+        if (__INST(visualType) == @symbol(TrueColor)) {
+            id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
+            id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
+            id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
+            RETURN ( __MKSMALLINT(id) );
+        }
+#endif
+        dpy = myDpy;
+
+        ENTER_XLIB();
+        ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
+        LEAVE_XLIB();
+
+        if (! ok) {
+            RETURN ( nil );
+        }
 #ifdef COUNT_RESOURCES
-	__cnt_color++;
-#endif
-	RETURN ( __MKSMALLINT(ecolor.pixel) );
+        __cnt_color++;
+#endif
+        RETURN ( __MKSMALLINT(ecolor.pixel) );
     }
 %}.
     ^ super colorScaledRed:r scaledGreen:g scaledBlue:b
@@ -2558,8 +2558,8 @@
 
 #ifdef QUICK_TRUE_COLORS
     if (__INST(visualType) == @symbol(TrueColor)) {
-	/* no need to do anything on TrueColor displays ... */
-	RETURN (self);
+        /* no need to do anything on TrueColor displays ... */
+        RETURN (self);
     }
 #endif
 
@@ -2567,21 +2567,21 @@
      * ignore closed connection
      */
     if (! ISCONNECTED) {
-	RETURN (self);
+        RETURN (self);
     }
 
     if (__isSmallInteger(colorIndex)) {
-	dpy = myDpy;
-	color = (long) __intVal(colorIndex);
-
-	ENTER_XLIB();
-	XFreeColors(dpy, DefaultColormap(dpy, screen), &color, 1, 0L);
-	LEAVE_XLIB();
+        dpy = myDpy;
+        color = (long) __intVal(colorIndex);
+
+        ENTER_XLIB();
+        XFreeColors(dpy, DefaultColormap(dpy, screen), &color, 1, 0L);
+        LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	__cnt_color--;
-#endif
-
-	RETURN ( self );
+        __cnt_color--;
+#endif
+
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -2600,29 +2600,29 @@
 
     if (ISCONNECTED
      && __isSmallInteger(index)) {
-	Display *dpy = myDpy;
-
-	color.pixel = __intVal(index);
-
-	ENTER_XLIB();
-	XQueryColor(dpy, DefaultColormap(dpy, screen), &color);
-	LEAVE_XLIB();
-
-
-	/*
-	 * have to compensate for an error in X ?, which does not scale
-	 * colors correctly if lesser than 16bits are valid in a color,
-	 * (for example, color white on a 4bitsPerRGB server will Return
-	 * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
-	 */
-	bits = __intVal(__INST(bitsPerRGB));
-	scale = (1<<bits) - 1;
-	shift = 16 - bits;
-
-	sr = ((double)(color.red>>shift) / scale) * 0xFFFF;
-	sg = ((double)(color.green>>shift) / scale) * 0xFFFF;
-	sb = ((double)(color.blue>>shift) / scale) * 0xFFFF;
-	RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
+        Display *dpy = myDpy;
+
+        color.pixel = __intVal(index);
+
+        ENTER_XLIB();
+        XQueryColor(dpy, DefaultColormap(dpy, screen), &color);
+        LEAVE_XLIB();
+
+
+        /*
+         * have to compensate for an error in X ?, which does not scale
+         * colors correctly if lesser than 16bits are valid in a color,
+         * (for example, color white on a 4bitsPerRGB server will Return
+         * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
+         */
+        bits = __intVal(__INST(bitsPerRGB));
+        scale = (1<<bits) - 1;
+        shift = 16 - bits;
+
+        sr = ((double)(color.red>>shift) / scale) * 0xFFFF;
+        sg = ((double)(color.green>>shift) / scale) * 0xFFFF;
+        sb = ((double)(color.blue>>shift) / scale) * 0xFFFF;
+        RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
     }
 %}.
     ^ super getScaledRGBFrom:index
@@ -2641,39 +2641,39 @@
 
     if (ISCONNECTED
      && __isStringLike(colorName)) {
-	Display *dpy = myDpy;
-
-
-	if (XParseColor(dpy, DefaultColormap(dpy, screen),
-			     (char *) __stringVal(colorName), &color)) {
-	    /*
-	     * have to compensate for an error in X ?, which does not scale
-	     * colors correctly if lesser than 16bits are valid in a color,
-	     * (for example, color white on a 4bitsPerRGB server will Return
-	     * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
-	     */
-	    bits = __intVal(__INST(bitsPerRGB));
-	    scale = (1<<bits) - 1;
-	    shift = 16 - bits;
-
-	    /* do assignment to doubles (no cast) - avoid alignment problems in HPPA */
-	    dr = color.red>>shift;
-	    dg = color.green>>shift;
-	    db = color.blue>>shift;
-
-	    sr = (dr / scale) * 0xFFFF;
-	    sg = (dg / scale) * 0xFFFF;
-	    sb = (db / scale) * 0xFFFF;
-	    RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
-	}
+        Display *dpy = myDpy;
+
+
+        if (XParseColor(dpy, DefaultColormap(dpy, screen),
+                             (char *) __stringVal(colorName), &color)) {
+            /*
+             * have to compensate for an error in X ?, which does not scale
+             * colors correctly if lesser than 16bits are valid in a color,
+             * (for example, color white on a 4bitsPerRGB server will Return
+             * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
+             */
+            bits = __intVal(__INST(bitsPerRGB));
+            scale = (1<<bits) - 1;
+            shift = 16 - bits;
+
+            /* do assignment to doubles (no cast) - avoid alignment problems in HPPA */
+            dr = color.red>>shift;
+            dg = color.green>>shift;
+            db = color.blue>>shift;
+
+            sr = (dr / scale) * 0xFFFF;
+            sg = (dg / scale) * 0xFFFF;
+            sb = (db / scale) * 0xFFFF;
+            RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
+        }
 
     }
 %}.
     ^ super getScaledRGBFromName:colorName
 
     "
-	Screen current getScaledRGBFromName:'red'
-	Screen current getScaledRGBFromName:'orange'
+        Screen current getScaledRGBFromName:'red'
+        Screen current getScaledRGBFromName:'orange'
     "
 !
 
@@ -2688,22 +2688,22 @@
     aStream isNil ifTrue:[^ nil].
     list := OrderedCollection new.
     [aStream atEnd] whileFalse:[
-	line := aStream nextLine.
-	line notNil ifTrue:[
-	    "skip the r/g/b numbers"
-	    index := 1.
-	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
-	    [(line at:index) isDigit] whileTrue:[index := index + 1].
-	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
-	    [(line at:index) isDigit] whileTrue:[index := index + 1].
-	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
-	    [(line at:index) isDigit] whileTrue:[index := index + 1].
-	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
-	    colorName := line copyFrom:index.
-	    ((colorName occurrencesOf:(Character space)) == 0) ifTrue:[
-		list add:colorName
-	    ]
-	]
+        line := aStream nextLine.
+        line notNil ifTrue:[
+            "skip the r/g/b numbers"
+            index := 1.
+            [(line at:index) isSeparator] whileTrue:[index := index + 1].
+            [(line at:index) isDigit] whileTrue:[index := index + 1].
+            [(line at:index) isSeparator] whileTrue:[index := index + 1].
+            [(line at:index) isDigit] whileTrue:[index := index + 1].
+            [(line at:index) isSeparator] whileTrue:[index := index + 1].
+            [(line at:index) isDigit] whileTrue:[index := index + 1].
+            [(line at:index) isSeparator] whileTrue:[index := index + 1].
+            colorName := line copyFrom:index.
+            ((colorName occurrencesOf:(Character space)) == 0) ifTrue:[
+                list add:colorName
+            ]
+        ]
     ].
     aStream close.
     ^ list sort
@@ -2723,10 +2723,10 @@
 %{  /* NOCONTEXT */
 
     if (__isSmallInteger(aPercentage)) {
-	RETURN ( __MKSMALLINT(0xFFFF * __intVal(aPercentage) / 100) );
+        RETURN ( __MKSMALLINT(0xFFFF * __intVal(aPercentage) / 100) );
     }
     if (__isFloat(aPercentage)) {
-	RETURN ( __MKSMALLINT(0xFFFF * (int)(__floatVal(aPercentage)) / 100) );
+        RETURN ( __MKSMALLINT(0xFFFF * (int)(__floatVal(aPercentage)) / 100) );
     }
 %}.
     ^ (16rFFFF * aPercentage / 100) rounded
@@ -2746,33 +2746,33 @@
     int ok = 1;
 
     if (__isSmallInteger(sred))
-	r = __intVal(sred);
+        r = __intVal(sred);
     else ok = 0;
 
     if (__isSmallInteger(sgreen))
-	g = __intVal(sgreen);
+        g = __intVal(sgreen);
     else ok = 0;
 
     if (__isSmallInteger(sblue))
-	b = __intVal(sblue);
+        b = __intVal(sblue);
     else ok = 0;
 
     if (ISCONNECTED
      && __isSmallInteger(index) && ok) {
-	Display *dpy = myDpy;
-
-	color.pixel = __intVal(index);
-	color.red = r;
-	color.green = g;
-	color.blue = b;
-	color.flags = DoRed | DoGreen | DoBlue;
-
-
-	ENTER_XLIB();
-	XStoreColor(dpy, DefaultColormap(dpy, screen), &color);
-	LEAVE_XLIB();
-
-	RETURN ( self );
+        Display *dpy = myDpy;
+
+        color.pixel = __intVal(index);
+        color.red = r;
+        color.green = g;
+        color.blue = b;
+        color.flags = DoRed | DoGreen | DoBlue;
+
+
+        ENTER_XLIB();
+        XStoreColor(dpy, DefaultColormap(dpy, screen), &color);
+        LEAVE_XLIB();
+
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -2789,30 +2789,30 @@
     "/ if you add something here, also add to #shapeNumberFromCursor ...
 
     ^ #(
-	#upLeftArrow            "/ XC_top_left_arrow
-	#upRightHand            "/ XC_hand1
-	#upDownArrow            "/ XC_sb_v_double_arrow
-	#leftRightArrow         "/ XC_sb_h_double_arrow
-	#upLimitArrow           "/ XC_top_side
-	#downLimitArrow         "/ XC_bottom_side
-	#leftLimitArrow         "/ XC_left_side
-	#rightLimitArrow        "/ XC_right_side
-	#text                   "/ XC_xterm
-	#upRightArrow           "/ XC_draft_large
-	#leftHand               "/ XC_hand2
-	#questionMark           "/ XC_question_arrow
-	#cross                  "/ XC_X_cursor
-	#wait                   "/ XC_watch
-	#crossHair              "/ XC_tcross
-	#origin                 "/ XC_ul_angle
-	#topLeft                "/ XC_ul_angle
-	#corner                 "/ XC_lr_angle
-	#bottomRight            "/ XC_lr_angle
-	#topRight               "/ XC_ur_angle
-	#bottomLeft             "/ XC_ll_angle
-	#square                 "/ XC_dotbox
-	#fourWay                "/ XC_fleur
-	#crossCursor            "/ XC_X_cursor
+        #upLeftArrow            "/ XC_top_left_arrow
+        #upRightHand            "/ XC_hand1
+        #upDownArrow            "/ XC_sb_v_double_arrow
+        #leftRightArrow         "/ XC_sb_h_double_arrow
+        #upLimitArrow           "/ XC_top_side
+        #downLimitArrow         "/ XC_bottom_side
+        #leftLimitArrow         "/ XC_left_side
+        #rightLimitArrow        "/ XC_right_side
+        #text                   "/ XC_xterm
+        #upRightArrow           "/ XC_draft_large
+        #leftHand               "/ XC_hand2
+        #questionMark           "/ XC_question_arrow
+        #cross                  "/ XC_X_cursor
+        #wait                   "/ XC_watch
+        #crossHair              "/ XC_tcross
+        #origin                 "/ XC_ul_angle
+        #topLeft                "/ XC_ul_angle
+        #corner                 "/ XC_lr_angle
+        #bottomRight            "/ XC_lr_angle
+        #topRight               "/ XC_ur_angle
+        #bottomLeft             "/ XC_ll_angle
+        #square                 "/ XC_dotbox
+        #fourWay                "/ XC_fleur
+        #crossCursor            "/ XC_X_cursor
       )
 
     "Created: 8.4.1997 / 10:12:30 / cg"
@@ -2841,18 +2841,18 @@
      && __bothSmallInteger(bgR, bgG)
      && __bothSmallInteger(bgB, fgR)) {
 
-	fgcolor.red = __intVal(fgR);
-	fgcolor.green= __intVal(fgG);
-	fgcolor.blue = __intVal(fgB);
-	bgcolor.red = __intVal(bgR);
-	bgcolor.green= __intVal(bgG);
-	bgcolor.blue = __intVal(bgB);
-
-	ENTER_XLIB();
-	XRecolorCursor(myDpy, __CursorVal(aCursorId), &fgcolor, &bgcolor);
-	LEAVE_XLIB();
-
-	RETURN ( self );
+        fgcolor.red = __intVal(fgR);
+        fgcolor.green= __intVal(fgG);
+        fgcolor.blue = __intVal(fgB);
+        bgcolor.red = __intVal(bgR);
+        bgcolor.green= __intVal(bgG);
+        bgcolor.blue = __intVal(bgB);
+
+        ENTER_XLIB();
+        XRecolorCursor(myDpy, __CursorVal(aCursorId), &fgcolor, &bgcolor);
+        LEAVE_XLIB();
+
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -2874,10 +2874,10 @@
     "create a cursor given 2 bitmaps (source, mask) and a hotspot"
 
     ^ self
-	primCreateCursorSourceFormId:sourceForm id
-	maskFormId:maskForm id
-	hotX:hx hotY:hy
-	width:w height:h
+        primCreateCursorSourceFormId:sourceForm id
+        maskFormId:maskForm id
+        hotX:hx hotY:hy
+        width:w height:h
 !
 
 destroyCursor:aCursorId
@@ -2889,22 +2889,22 @@
      * ignore closed connection
      */
     if (! ISCONNECTED) {
-	RETURN ( self );
+        RETURN ( self );
     }
 
     if (__isExternalAddress(aCursorId)) {
-	Cursor curs = __CursorVal(aCursorId);
-
-	if (curs) {
-
-	    ENTER_XLIB();
-	    XFreeCursor(myDpy, curs);
-	    LEAVE_XLIB();
+        Cursor curs = __CursorVal(aCursorId);
+
+        if (curs) {
+
+            ENTER_XLIB();
+            XFreeCursor(myDpy, curs);
+            LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	    __cnt_cursor--;
-#endif
-	}
-	RETURN ( self );
+            __cnt_cursor--;
+#endif
+        }
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -2924,17 +2924,17 @@
     if (ISCONNECTED
      && __isSmallInteger(aShapeNumber)) {
 
-	ENTER_XLIB();
-	newCursor = XCreateFontCursor(myDpy, __intVal(aShapeNumber));
-	LEAVE_XLIB();
+        ENTER_XLIB();
+        newCursor = XCreateFontCursor(myDpy, __intVal(aShapeNumber));
+        LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	if (newCursor)
-	    __cnt_cursor++;
-#endif
-
-	if (newCursor != (Cursor)0) {
-	    RETURN (__MKEXTERNALADDRESS(newCursor));
-	}
+        if (newCursor)
+            __cnt_cursor++;
+#endif
+
+        if (newCursor != (Cursor)0) {
+            RETURN (__MKEXTERNALADDRESS(newCursor));
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -2953,28 +2953,28 @@
      && __isExternalAddress(sourceId)
      && __isExternalAddress(maskId)
      && __bothSmallInteger(hx, hy)) {
-	fgColor.red = 0;        /* fg is black */
-	fgColor.green = 0;
-	fgColor.blue = 0;
-	bgColor.red = 0xFFFF;   /* bg is white */
-	bgColor.green = 0xFFFF;
-	bgColor.blue = 0xFFFF;
-
-
-	ENTER_XLIB();
-	newCursor = XCreatePixmapCursor(myDpy,
-				__PixmapVal(sourceId),
-				__PixmapVal(maskId),
-				&fgColor, &bgColor, __intVal(hx), __intVal(hy));
-	LEAVE_XLIB();
+        fgColor.red = 0;        /* fg is black */
+        fgColor.green = 0;
+        fgColor.blue = 0;
+        bgColor.red = 0xFFFF;   /* bg is white */
+        bgColor.green = 0xFFFF;
+        bgColor.blue = 0xFFFF;
+
+
+        ENTER_XLIB();
+        newCursor = XCreatePixmapCursor(myDpy,
+                                __PixmapVal(sourceId),
+                                __PixmapVal(maskId),
+                                &fgColor, &bgColor, __intVal(hx), __intVal(hy));
+        LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	if (newCursor)
-	    __cnt_cursor++;
-#endif
-
-	if (newCursor != (Cursor)0) {
-	    RETURN (__MKEXTERNALADDRESS(newCursor));
-	}
+        if (newCursor)
+            __cnt_cursor++;
+#endif
+
+        if (newCursor != (Cursor)0) {
+            RETURN (__MKEXTERNALADDRESS(newCursor));
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -3029,128 +3029,128 @@
 
     (msgType := self atomIDOf:#DndProtocol) notNil ifTrue:[
 
-	"/ DND can drop files, file, dir, links, dirLink and text
-	"/ check for this.
-
-	dropObjects isCollection ifFalse:[
-	    dropColl := Array with:dropObjects
-	] ifTrue:[
-	    dropColl := dropObjects
-	].
-	anyFile := anyDir := anyText := anyOther := false.
-	dropColl do:[:aDropObject |
-	    aDropObject isFileObject ifTrue:[
-		aDropObject theObject isDirectory ifTrue:[
-		    anyDir := true
-		] ifFalse:[
-		    anyFile := true
-		]
-	    ] ifFalse:[
-		aDropObject isTextObject ifTrue:[
-		    anyText := true
-		] ifFalse:[
-		    anyOther := true
-		]
-	    ]
-	].
-
-	anyOther ifTrue:[
-	    "/ DND does not support this ...
-	    'XWorkstation [info]: DND can only drop files or text' infoPrintCR.
-	    ^ false
-	].
-	anyText ifTrue:[
-	    (anyFile or:[anyDir]) ifTrue:[
-		"/ DND does not support mixed types
-		'XWorkstation [info]: DND cannot drop both files and text' infoPrintCR.
-		^ false
-	    ]
-	].
-
-	dropCollSize := dropColl size.
-	anyFile ifTrue:[
-	    dropType := #DndFiles.
-	    dropCollSize == 1 ifTrue:[
-		dropType := #DndFile
-	    ]
-	] ifFalse:[
-	    anyDir ifTrue:[
-		dropType := #DndFiles.
-		dropCollSize == 1 ifTrue:[
-		    dropType := #DndDir
-		]
-	    ] ifFalse:[
-		anyText ifTrue:[
-		    dropCollSize == 1 ifTrue:[
-			dropType := #DndText
-		    ] ifFalse:[
-			"/ can only drop a single text object
-			'XWorkstation [info]: DND can only drop a single text' infoPrintCR.
-			^ false
-		    ]
-		] ifFalse:[
-		    "/ mhmh ...
-		    'XWorkstation [info]: DND cannot drop this' infoPrintCR.
-		    ^ false
-		]
-	    ]
-	].
-
-	dropTypeCode := self dndDropTypes indexOf:dropType.
-	dropTypeCode == 0 ifTrue:[
-	    'XWorkstation [info]: DND cannot drop this' infoPrintCR.
-	    ^ false
-	].
-	dropTypeCode := dropTypeCode - 1.
-
-
-	"/ place the selection inTo the DndSelection property
-	"/ of the rootView ...
-	"/ ... need a single string, with 0-terminated parts.
-
-	strings := OrderedCollection new.
-	sz := 0.
-	dropColl do:[:anObject |
-	    |s o|
-
-	    o := anObject theObject.
-	    anObject isFileObject ifTrue:[
-		o := o pathName
-	    ].
-	    s := o asString.
-	    strings add:s.
-	    sz := sz + (s size) + 1.
-	].
-	val := String new:sz.
-	idx := 1.
-	strings do:[:aString |
-	    |sz|
-
-	    sz := aString size.
-	    val replaceFrom:idx to:(idx + sz - 1) with:aString startingAt:1.
-	    idx := idx + sz.
-	    val at:idx put:(Character value:0).
-	    idx := idx + 1
-	].
-
-	self
-	    setProperty:(self atomIDOf:#DndSelection)
-	    type:(self atomIDOf:#STRING)
-	    value:val
-	    for:rootId.
-
-	^ self
-	    sendClientEvent:msgType
-	    format:32
-	    to:destinationId
-	    propagate:true
-	    eventMask:nil
-	    window:destinationId
-	    data1:dropTypeCode
-	    data2:0
-	    data3:destinationId
-	    data4:nil
-	    data5:nil.
+        "/ DND can drop files, file, dir, links, dirLink and text
+        "/ check for this.
+
+        dropObjects isCollection ifFalse:[
+            dropColl := Array with:dropObjects
+        ] ifTrue:[
+            dropColl := dropObjects
+        ].
+        anyFile := anyDir := anyText := anyOther := false.
+        dropColl do:[:aDropObject |
+            aDropObject isFileObject ifTrue:[
+                aDropObject theObject isDirectory ifTrue:[
+                    anyDir := true
+                ] ifFalse:[
+                    anyFile := true
+                ]
+            ] ifFalse:[
+                aDropObject isTextObject ifTrue:[
+                    anyText := true
+                ] ifFalse:[
+                    anyOther := true
+                ]
+            ]
+        ].
+
+        anyOther ifTrue:[
+            "/ DND does not support this ...
+            'XWorkstation [info]: DND can only drop files or text' infoPrintCR.
+            ^ false
+        ].
+        anyText ifTrue:[
+            (anyFile or:[anyDir]) ifTrue:[
+                "/ DND does not support mixed types
+                'XWorkstation [info]: DND cannot drop both files and text' infoPrintCR.
+                ^ false
+            ]
+        ].
+
+        dropCollSize := dropColl size.
+        anyFile ifTrue:[
+            dropType := #DndFiles.
+            dropCollSize == 1 ifTrue:[
+                dropType := #DndFile
+            ]
+        ] ifFalse:[
+            anyDir ifTrue:[
+                dropType := #DndFiles.
+                dropCollSize == 1 ifTrue:[
+                    dropType := #DndDir
+                ]
+            ] ifFalse:[
+                anyText ifTrue:[
+                    dropCollSize == 1 ifTrue:[
+                        dropType := #DndText
+                    ] ifFalse:[
+                        "/ can only drop a single text object
+                        'XWorkstation [info]: DND can only drop a single text' infoPrintCR.
+                        ^ false
+                    ]
+                ] ifFalse:[
+                    "/ mhmh ...
+                    'XWorkstation [info]: DND cannot drop this' infoPrintCR.
+                    ^ false
+                ]
+            ]
+        ].
+
+        dropTypeCode := self dndDropTypes indexOf:dropType.
+        dropTypeCode == 0 ifTrue:[
+            'XWorkstation [info]: DND cannot drop this' infoPrintCR.
+            ^ false
+        ].
+        dropTypeCode := dropTypeCode - 1.
+
+
+        "/ place the selection inTo the DndSelection property
+        "/ of the rootView ...
+        "/ ... need a single string, with 0-terminated parts.
+
+        strings := OrderedCollection new.
+        sz := 0.
+        dropColl do:[:anObject |
+            |s o|
+
+            o := anObject theObject.
+            anObject isFileObject ifTrue:[
+                o := o pathName
+            ].
+            s := o asString.
+            strings add:s.
+            sz := sz + (s size) + 1.
+        ].
+        val := String new:sz.
+        idx := 1.
+        strings do:[:aString |
+            |sz|
+
+            sz := aString size.
+            val replaceFrom:idx to:(idx + sz - 1) with:aString startingAt:1.
+            idx := idx + sz.
+            val at:idx put:(Character value:0).
+            idx := idx + 1
+        ].
+
+        self
+            setProperty:(self atomIDOf:#DndSelection)
+            type:(self atomIDOf:#STRING)
+            value:val
+            for:rootId.
+
+        ^ self
+            sendClientEvent:msgType
+            format:32
+            to:destinationId
+            propagate:true
+            eventMask:nil
+            window:destinationId
+            data1:dropTypeCode
+            data2:0
+            data3:destinationId
+            data4:nil
+            data5:nil.
     ].
 
     ^ false
@@ -3163,14 +3163,14 @@
     "return the dropTypes as supported by DND"
 
     ^ #(
-	    DndUnknown      "/ 0
-	    DndRawData      "/ 1
-	    DndFile         "/ 2
-	    DndFiles        "/ 3
-	    DndText         "/ 4
-	    DndDir          "/ 5
-	    DndLink         "/ 6
-	    DndExe          "/ 7
+            DndUnknown      "/ 0
+            DndRawData      "/ 1
+            DndFile         "/ 2
+            DndFiles        "/ 3
+            DndText         "/ 4
+            DndDir          "/ 5
+            DndLink         "/ 6
+            DndExe          "/ 7
        )
 
     "Created: 6.4.1997 / 12:57:56 / cg"
@@ -3185,11 +3185,11 @@
     "/ see, if the display supports the DND protocol ...
     "/
     (self atomIDOf:#DndProtocol) notNil ifTrue:[
-	^ self
-	    dndDrop:aCollectionOfDropObjects
-	    inWindowID:destinationId
-	    position:destinationPoint
-	    rootPosition:rootPoint
+        ^ self
+            dndDrop:aCollectionOfDropObjects
+            inWindowID:destinationId
+            position:destinationPoint
+            rootPosition:rootPoint
     ].
 
     "/ add more drag&drop protocols here.
@@ -3210,11 +3210,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3228,22 +3228,22 @@
      && __bothSmallInteger(w, h)
      && __bothSmallInteger(srcX, srcY)
      && __bothSmallInteger(dstX, dstY)) {
-	int _sX, _sY, _w, _h, _dX, _dY;
-
-	_sX = __intVal(srcX);
-	_sY = __intVal(srcY);
-	_w = __intVal(w);
-	_h = __intVal(h);
-	_dX = __intVal(dstX);
-	_dY = __intVal(dstY);
-
-	gc = __GCVal(dstGCId);
-	source = __DrawableVal(sourceId);
-	dest =   __DrawableVal(destId);
-	ENTER_XLIB();
-	XCopyArea(myDpy, source, dest, gc, _sX, _sY, _w, _h, _dX, _dY);
-	LEAVE_XLIB();
-	RETURN ( self );
+        int _sX, _sY, _w, _h, _dX, _dY;
+
+        _sX = __intVal(srcX);
+        _sY = __intVal(srcY);
+        _w = __intVal(w);
+        _h = __intVal(h);
+        _dX = __intVal(dstX);
+        _dY = __intVal(dstY);
+
+        gc = __GCVal(dstGCId);
+        source = __DrawableVal(sourceId);
+        dest =   __DrawableVal(destId);
+        ENTER_XLIB();
+        XCopyArea(myDpy, source, dest, gc, _sX, _sY, _w, _h, _dX, _dY);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     "badGC, bad sourceDrawableId or destDrawableID
@@ -3262,11 +3262,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3280,20 +3280,20 @@
      && __bothSmallInteger(w, h)
      && __bothSmallInteger(srcX, srcY)
      && __bothSmallInteger(dstX, dstY)) {
-	Display *dpy = myDpy;
-
-	gc = __GCVal(dstGCId);
-	source = __DrawableVal(sourceId);
-	dest =   __DrawableVal(destId);
-	ENTER_XLIB();
-	XSetGraphicsExposures(dpy, gc, 0);
-	XCopyArea(dpy, source, dest, gc,
-				__intVal(srcX), __intVal(srcY),
-				__intVal(w), __intVal(h),
-				__intVal(dstX), __intVal(dstY));
-	XSetGraphicsExposures(dpy, gc, 1);
-	LEAVE_XLIB();
-	RETURN ( self );
+        Display *dpy = myDpy;
+
+        gc = __GCVal(dstGCId);
+        source = __DrawableVal(sourceId);
+        dest =   __DrawableVal(destId);
+        ENTER_XLIB();
+        XSetGraphicsExposures(dpy, gc, 0);
+        XCopyArea(dpy, source, dest, gc,
+                                __intVal(srcX), __intVal(srcY),
+                                __intVal(w), __intVal(h),
+                                __intVal(dstX), __intVal(dstY));
+        XSetGraphicsExposures(dpy, gc, 1);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     "badGC, bad sourceDrawableId or destDrawableID
@@ -3312,11 +3312,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3330,16 +3330,16 @@
      && __bothSmallInteger(w, h)
      && __bothSmallInteger(srcX, srcY)
      && __bothSmallInteger(dstX, dstY)) {
-	gc = __GCVal(dstGCId);
-	source = __DrawableVal(sourceId);
-	dest =   __DrawableVal(destId);
-	ENTER_XLIB();
-	XCopyPlane(myDpy, source, dest, gc,
-				 __intVal(srcX), __intVal(srcY),
-				 __intVal(w), __intVal(h),
-				 __intVal(dstX), __intVal(dstY), 1);
-	LEAVE_XLIB();
-	RETURN ( self );
+        gc = __GCVal(dstGCId);
+        source = __DrawableVal(sourceId);
+        dest =   __DrawableVal(destId);
+        ENTER_XLIB();
+        XCopyPlane(myDpy, source, dest, gc,
+                                 __intVal(srcX), __intVal(srcY),
+                                 __intVal(w), __intVal(h),
+                                 __intVal(dstX), __intVal(dstY), 1);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     "badGC, bad sourceDrawableId or destDrawableID
@@ -3359,11 +3359,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3377,20 +3377,20 @@
      && __bothSmallInteger(w, h)
      && __bothSmallInteger(srcX, srcY)
      && __bothSmallInteger(dstX, dstY)) {
-	Display *dpy = myDpy;
-
-	gc = __GCVal(dstGCId);
-	source = __DrawableVal(sourceId);
-	dest =   __DrawableVal(destId);
-	ENTER_XLIB();
-	XSetGraphicsExposures(dpy, gc, 0);
-	XCopyPlane(dpy, source, dest, gc,
-				 __intVal(srcX), __intVal(srcY),
-				 __intVal(w), __intVal(h),
-				 __intVal(dstX), __intVal(dstY), 1);
-	XSetGraphicsExposures(dpy, gc, 1);
-	LEAVE_XLIB();
-	RETURN ( self );
+        Display *dpy = myDpy;
+
+        gc = __GCVal(dstGCId);
+        source = __DrawableVal(sourceId);
+        dest =   __DrawableVal(destId);
+        ENTER_XLIB();
+        XSetGraphicsExposures(dpy, gc, 0);
+        XCopyPlane(dpy, source, dest, gc,
+                                 __intVal(srcX), __intVal(srcY),
+                                 __intVal(w), __intVal(h),
+                                 __intVal(dstX), __intVal(dstY), 1);
+        XSetGraphicsExposures(dpy, gc, 1);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     "badGC, bad sourceDrawableId or destDrawableID
@@ -3406,11 +3406,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3420,23 +3420,23 @@
     double f;
 
     if (__isSmallInteger(startAngle))
-	angle1 = __intVal(startAngle) * 64;
+        angle1 = __intVal(startAngle) * 64;
     else if (__isFloat(startAngle)) {
-	f = __floatVal(startAngle);
-	angle1 = f * 64;
+        f = __floatVal(startAngle);
+        angle1 = f * 64;
     } else if (__isShortFloat(startAngle)) {
-	f = __shortFloatVal(startAngle);
-	angle1 = f * 64;
+        f = __shortFloatVal(startAngle);
+        angle1 = f * 64;
     } else goto bad;
 
     if (__isSmallInteger(angle))
-	angle2 = __intVal(angle) * 64;
+        angle2 = __intVal(angle) * 64;
     else if (__isFloat(angle)) {
-	f = __floatVal(angle);
-	angle2 = f * 64;
+        f = __floatVal(angle);
+        angle2 = f * 64;
     } else if (__isShortFloat(angle)) {
-	f = __shortFloatVal(angle);
-	angle2 = f * 64;
+        f = __shortFloatVal(angle);
+        angle2 = f * 64;
     } else goto bad;
 
     if (ISCONNECTED
@@ -3444,20 +3444,20 @@
      && __isExternalAddress(aDrawableId)
      && __bothSmallInteger(x, y)
      && __bothSmallInteger(width, height)) {
-	win = __WindowVal(aDrawableId);
-	gc = __GCVal(aGCId);
-	w = __intVal(width);
-	h = __intVal(height);
-	/*
-	 * need this check here: some servers simply dump core with bad args
-	 */
-	if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
-	    ENTER_XLIB();
-	    XDrawArc(myDpy, win, gc, __intVal(x), __intVal(y),
-				   w, h, angle1, angle2);
-	    LEAVE_XLIB();
-	}
-	RETURN ( self );
+        win = __WindowVal(aDrawableId);
+        gc = __GCVal(aGCId);
+        w = __intVal(width);
+        h = __intVal(height);
+        /*
+         * need this check here: some servers simply dump core with bad args
+         */
+        if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
+            ENTER_XLIB();
+            XDrawArc(myDpy, win, gc, __intVal(x), __intVal(y),
+                                   w, h, angle1, angle2);
+            LEAVE_XLIB();
+        }
+        RETURN ( self );
     }
     bad: ;
 %}.
@@ -3473,11 +3473,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3489,35 +3489,35 @@
      && __isExternalAddress(aDrawableId)
      && __bothSmallInteger(x0, y0)
      && __bothSmallInteger(x1, y1)) {
-	Display *dpy = myDpy;
-	int ix0, iy0, ix1, iy1;
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-
-	ix0 = __intVal(x0);
-	iy0 = __intVal(y0);
-	ix1 = __intVal(x1);
-	iy1 = __intVal(y1);
-
-	/* attention: coordinates in X are shorts and wrap; clamp here. */
-	if (ix0 > 0x7FFF) ix0 = 0x7FFF;
-	else if (ix0 < -0x8000) ix0 = -0x8000;
-	if (iy0 > 0x7FFF) iy0 = 0x7FFF;
-	else if (iy0 < -0x8000) iy0 = -0x8000;
-	if (ix1 > 0x7FFF) ix1 = 0x7FFF;
-	else if (ix1 < -0x8000) ix1 = -0x8000;
-	if (iy1 > 0x7FFF) iy1 = 0x7FFF;
-	else if (iy1 < -0x8000) iy1 = -0x8000;
-
-	ENTER_XLIB();
-	if ((ix0 == ix1) && (iy0 == iy1)) {
-	    /* little bit shorter X-lib message (better with slow connections...) */
-	    XDrawPoint(dpy, win, gc, ix0, iy0);
-	} else {
-	    XDrawLine(dpy, win, gc, ix0, iy0, ix1, iy1);
-	}
-	LEAVE_XLIB();
-	RETURN ( self );
+        Display *dpy = myDpy;
+        int ix0, iy0, ix1, iy1;
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+
+        ix0 = __intVal(x0);
+        iy0 = __intVal(y0);
+        ix1 = __intVal(x1);
+        iy1 = __intVal(y1);
+
+        /* attention: coordinates in X are shorts and wrap; clamp here. */
+        if (ix0 > 0x7FFF) ix0 = 0x7FFF;
+        else if (ix0 < -0x8000) ix0 = -0x8000;
+        if (iy0 > 0x7FFF) iy0 = 0x7FFF;
+        else if (iy0 < -0x8000) iy0 = -0x8000;
+        if (ix1 > 0x7FFF) ix1 = 0x7FFF;
+        else if (ix1 < -0x8000) ix1 = -0x8000;
+        if (iy1 > 0x7FFF) iy1 = 0x7FFF;
+        else if (iy1 < -0x8000) iy1 = -0x8000;
+
+        ENTER_XLIB();
+        if ((ix0 == ix1) && (iy0 == iy1)) {
+            /* little bit shorter X-lib message (better with slow connections...) */
+            XDrawPoint(dpy, win, gc, ix0, iy0);
+        } else {
+            XDrawLine(dpy, win, gc, ix0, iy0, ix1, iy1);
+        }
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     "badGC, badDrawable or coordinates not integer"
@@ -3534,15 +3534,15 @@
     |noY|
 
     (noY := yValues size) < 2 ifTrue:[
-	^ self
+        ^ self
     ].
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
     OBJ      yA, t;
@@ -3558,110 +3558,109 @@
     if (ISCONNECTED
      && __isExternalAddress(aGCId)
      && __isExternalAddress(aDrawableId) ) {
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-
-	if( __isSmallInteger(scaleY) )
-	    sY = (float) __intVal( scaleY );
-	else if (__isFloat(scaleY))
-	    sY = __floatVal( scaleY );
-	else if (__isShortFloat(scaleY))
-	    sY = __shortFloatVal( scaleY );
-	else {
-	    t = __SSEND0(scaleY, @symbol(asFloat), 0);
-	    if (! __isFloat(t)) goto fail;
-	    sY = __floatVal( t );
-	}
-
-	if( __isSmallInteger(transY) )
-	    tY = (float) __intVal( transY );
-	else if (__isFloat(transY))
-	    tY = __floatVal( transY );
-	else if (__isShortFloat(transY))
-	    tY = __shortFloatVal( transY );
-	else {
-	    t = __SSEND0(transY, @symbol(asFloat), 0);
-	    if (! __isFloat(t)) goto fail;
-	    tY = __floatVal( t );
-	}
-
-	if( __isSmallInteger(startX) )
-	    x = (float) __intVal( startX );
-	else if (__isFloat(startX))
-	    x = __floatVal( startX );
-	else if (__isShortFloat(startX))
-	    x = __shortFloatVal( startX );
-	else {
-	    t = __SSEND0(startX, @symbol(asFloat), 0);
-	    if (! __isFloat(t)) goto fail;
-	    x = __floatVal( t );
-	}
-
-	if( __isSmallInteger(stepX) )
-	    step = (float) __intVal( stepX );
-	else if (__isFloat(stepX))
-	    step = __floatVal( stepX );
-	else if (__isShortFloat(stepX))
-	    step = __shortFloatVal( stepX );
-	else {
-	    t = __SSEND0(stepX, @symbol(asFloat), 0);
-	    if (! __isFloat(t)) goto fail;
-	    step = __floatVal( t );
-	}
-
-	num = __intVal( noY );
-
-	if( num > 200 ) {
-	    if( ! (points = (XPoint *) malloc ( sizeof(XPoint) * num )) )
-		goto fail;
-	    mustFree = 1;
-	} else {
-	    points = qPoints;
-	}
-	for( i = 0; i < num; ++i ) {
-	    int px, py;
-
-	    yA  = __AT_(yValues, __MKSMALLINT(i+1) );
-
-	    if( __isFloat(yA) )
-		y = __floatVal( yA );
-	    else if( __isSmallInteger(yA) )
-		y = (float) __intVal( yA );
-	    else if( __isShortFloat( yA) )
-		y = __shortFloatVal( yA );
-	    else {
-		t = __SSEND0(yA, @symbol(asFloat), 0);
-		if (! __isFloat(t)) goto fail;
-		y = __floatVal( t );
-	    }
-
-	    px = (int) (x + 0.5);
-	    py = (int) ((y * sY) + tY + 0.5);
-
-	    /* attention: coordinates in X are shorts and wrap; clamp here. */
-	    if (px > 0x7FFF) px = 0x7FFF;
-	    else if (px < -0x8000) px = -0x8000;
-	    if (py > 0x7FFF) py = 0x7FFF;
-	    else if (py < -0x8000) py = -0x8000;
-
-	    points[i].x = px;
-	    points[i].y = py;
-	    x = x + step;
-	}
-
-	ENTER_XLIB();
-	XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
-	LEAVE_XLIB();
-
-	if( mustFree ) {
-	    free( points );
-	}
-	RETURN ( self );
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+
+        if( __isSmallInteger(scaleY) )
+            sY = (float) __intVal( scaleY );
+        else if (__isFloat(scaleY))
+            sY = __floatVal( scaleY );
+        else if (__isShortFloat(scaleY))
+            sY = __shortFloatVal( scaleY );
+        else {
+            t = __SSEND0(scaleY, @symbol(asFloat), 0);
+            if (! __isFloat(t)) goto fail;
+            sY = __floatVal( t );
+        }
+
+        if( __isSmallInteger(transY) )
+            tY = (float) __intVal( transY );
+        else if (__isFloat(transY))
+            tY = __floatVal( transY );
+        else if (__isShortFloat(transY))
+            tY = __shortFloatVal( transY );
+        else {
+            t = __SSEND0(transY, @symbol(asFloat), 0);
+            if (! __isFloat(t)) goto fail;
+            tY = __floatVal( t );
+        }
+
+        if( __isSmallInteger(startX) )
+            x = (float) __intVal( startX );
+        else if (__isFloat(startX))
+            x = __floatVal( startX );
+        else if (__isShortFloat(startX))
+            x = __shortFloatVal( startX );
+        else {
+            t = __SSEND0(startX, @symbol(asFloat), 0);
+            if (! __isFloat(t)) goto fail;
+            x = __floatVal( t );
+        }
+
+        if( __isSmallInteger(stepX) )
+            step = (float) __intVal( stepX );
+        else if (__isFloat(stepX))
+            step = __floatVal( stepX );
+        else if (__isShortFloat(stepX))
+            step = __shortFloatVal( stepX );
+        else {
+            t = __SSEND0(stepX, @symbol(asFloat), 0);
+            if (! __isFloat(t)) goto fail;
+            step = __floatVal( t );
+        }
+
+        num = __intVal( noY );
+        if( num > 200 ) {
+            if( ! (points = (XPoint *) malloc ( sizeof(XPoint) * num )) )
+                goto fail;
+            mustFree = 1;
+        } else {
+            points = qPoints;
+        }
+        for( i = 0; i < num; ++i ) {
+            int px, py;
+
+            yA  = __AT_(yValues, __MKSMALLINT(i+1) );
+
+            if( __isFloat(yA) )
+                y = __floatVal( yA );
+            else if( __isSmallInteger(yA) )
+                y = (float) __intVal( yA );
+            else if( __isShortFloat( yA) )
+                y = __shortFloatVal( yA );
+            else {
+                t = __SSEND0(yA, @symbol(asFloat), 0);
+                if (! __isFloat(t)) goto fail;
+                y = __floatVal( t );
+            }
+
+            px = (int) (x + 0.5);
+            py = (int) ((y * sY) + tY + 0.5);
+
+            /* attention: coordinates in X are shorts and wrap; clamp here. */
+            if (px > 0x7FFF) px = 0x7FFF;
+            else if (px < -0x8000) px = -0x8000;
+            if (py > 0x7FFF) py = 0x7FFF;
+            else if (py < -0x8000) py = -0x8000;
+
+            points[i].x = px;
+            points[i].y = py;
+            x = x + step;
+        }
+
+        ENTER_XLIB();
+        XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
+        LEAVE_XLIB();
+
+        if( mustFree ) {
+            free( points );
+        }
+        RETURN ( self );
     }
 
 fail:
     if( mustFree )
-	free( points );
+        free( points );
 %}.
     ^ super displayLinesFromX:startX step:stepX yValues:yValues scaleY:scaleY transY:transY in:aDrawableId with:aGCId
 
@@ -3674,11 +3673,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3689,23 +3688,20 @@
      && __isExternalAddress(aGCId)
      && __isExternalAddress(aDrawableId)
      && __bothSmallInteger(x, y)) {
-	int px, py;
-
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-
-	px = __intVal(x);
-	py = __intVal(y);
-	if (px > 0x7FFF) px = 0x7FFF;
-	else if (px < -0x8000) px = -0x8000;
-	if (py > 0x7FFF) py = 0x7FFF;
-	else if (py < -0x8000) py = -0x8000;
-
-	ENTER_XLIB();
-	XDrawPoint(myDpy, win, gc, px, py);
-	LEAVE_XLIB();
-
-	RETURN ( self );
+        int px, py;
+
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+        px = __intVal(x);
+        py = __intVal(y);
+        if (px > 0x7FFF) px = 0x7FFF;
+        else if (px < -0x8000) px = -0x8000;
+        if (py > 0x7FFF) py = 0x7FFF;
+        else if (py < -0x8000) py = -0x8000;
+        ENTER_XLIB();
+        XDrawPoint(myDpy, win, gc, px, py);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     "badGC, badDrawable or x/y not integer"
@@ -3722,11 +3718,11 @@
     |numberOfPoints newPoints|
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
     numberOfPoints := aPolygon size.
 %{
@@ -3742,53 +3738,53 @@
      && __isExternalAddress(aGCId)
      && __isExternalAddress(aDrawableId)
      && __isSmallInteger(numberOfPoints)) {
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-	num = __intVal(numberOfPoints);
-	/*
-	 * avoid a (slow) malloc, if the number of points is small
-	 */
-	if (num > 100) {
-	    points = (XPoint *)malloc(sizeof(XPoint) * num);
-	    if (! points) goto fail;
-	    mustFree = 1;
-	} else
-	    points = qPoints;
-
-	for (i=0; i<num; i++) {
-	    int px, py;
-
-	    point = __AT_(aPolygon, __MKSMALLINT(i+1));
-	    if (! __isPoint(point)) goto fail;
-	    x = _point_X(point);
-	    y = _point_Y(point);
-	    if (! __bothSmallInteger(x, y))
-		goto fail;
-
-	    px = __intVal(x);
-	    py = __intVal(y);
-
-	    /* attention: coordinates in X are shorts and wrap; clamp here. */
-	    if (px > 0x7FFF) px = 0x7FFF;
-	    else if (px < -0x8000) px = -0x8000;
-	    if (py > 0x7FFF) py = 0x7FFF;
-	    else if (py < -0x8000) py = -0x8000;
-
-	    points[i].x = px;
-	    points[i].y = py;
-	}
-
-	ENTER_XLIB();
-	XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
-	LEAVE_XLIB();
-
-	if (mustFree)
-	    free(points);
-	RETURN ( self );
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+        num = __intVal(numberOfPoints);
+        /*
+         * avoid a (slow) malloc, if the number of points is small
+         */
+        if (num > 100) {
+            points = (XPoint *)malloc(sizeof(XPoint) * num);
+            if (! points) goto fail;
+            mustFree = 1;
+        } else
+            points = qPoints;
+
+        for (i=0; i<num; i++) {
+            int px, py;
+
+            point = __AT_(aPolygon, __MKSMALLINT(i+1));
+            if (! __isPoint(point)) goto fail;
+            x = _point_X(point);
+            y = _point_Y(point);
+            if (! __bothSmallInteger(x, y))
+                goto fail;
+
+            px = __intVal(x);
+            py = __intVal(y);
+
+            /* attention: coordinates in X are shorts and wrap; clamp here. */
+            if (px > 0x7FFF) px = 0x7FFF;
+            else if (px < -0x8000) px = -0x8000;
+            if (py > 0x7FFF) py = 0x7FFF;
+            else if (py < -0x8000) py = -0x8000;
+
+            points[i].x = px;
+            points[i].y = py;
+        }
+
+        ENTER_XLIB();
+        XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
+        LEAVE_XLIB();
+
+        if (mustFree)
+            free(points);
+        RETURN ( self );
     }
 fail: ;
     if (mustFree)
-	free(points);
+        free(points);
 %}.
     "badGC, badDrawable or coordinates not integer"
     self primitiveFailedOrClosedConnection
@@ -3800,11 +3796,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3817,31 +3813,31 @@
      && __isExternalAddress(aDrawableId)
      && __bothSmallInteger(x, y)
      && __bothSmallInteger(width, height)) {
-	int px, py;
-
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-	w = __intVal(width);
-	h = __intVal(height);
-
-	/*
-	 * need this check here: some servers simply dump core with bad args
-	 */
-	if ((w >= 0) && (h >= 0)) {
-	    px = __intVal(x);
-	    py = __intVal(y);
-
-	    /* attention: coordinates in X are shorts and wrap; clamp here. */
-	    if (px > 0x7FFF) px = 0x7FFF;
-	    else if (px < -0x8000) px = -0x8000;
-	    if (py > 0x7FFF) py = 0x7FFF;
-	    else if (py < -0x8000) py = -0x8000;
-
-	    ENTER_XLIB();
-	    XDrawRectangle(myDpy, win, gc, px, py, w, h);
-	    LEAVE_XLIB();
-	}
-	RETURN ( self );
+        int px, py;
+
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+        w = __intVal(width);
+        h = __intVal(height);
+
+        /*
+         * need this check here: some servers simply dump core with bad args
+         */
+        if ((w >= 0) && (h >= 0)) {
+            px = __intVal(x);
+            py = __intVal(y);
+
+            /* attention: coordinates in X are shorts and wrap; clamp here. */
+            if (px > 0x7FFF) px = 0x7FFF;
+            else if (px < -0x8000) px = -0x8000;
+            if (py > 0x7FFF) py = 0x7FFF;
+            else if (py < -0x8000) py = -0x8000;
+
+            ENTER_XLIB();
+            XDrawRectangle(myDpy, win, gc, px, py, w, h);
+            LEAVE_XLIB();
+        }
+        RETURN ( self );
     }
 %}.
     "badGC, badDrawable or coordinates not integer"
@@ -3856,11 +3852,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -3878,174 +3874,173 @@
      && __isNonNilObject(aString)
      && __bothSmallInteger(index1, index2)
      && __bothSmallInteger(x, y)) {
-	int lMax = __intVal(@global(MaxStringLength));
-	Display *dpy = myDpy;
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-
-	i1 = __intVal(index1) - 1;
-	if (i1 >= 0) {
-	    OBJ cls;
-
-	    i2 = __intVal(index2) - 1;
-	    if (i2 < i1) {
-		RETURN (self);
-	    }
-
-	    cp = (char *) __stringVal(aString);
-	    l = i2 - i1 + 1;
-
-	    if (__isStringLike(aString)) {
-		n = __stringSize(aString);
-		if (i2 < n) {
-		    cp += i1;
-		    if (l > lMax) l = lMax;
-		    ENTER_XLIB();
-		    if (opaque == true)
-			XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
-		    else
-			XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
-		    LEAVE_XLIB();
-		    RETURN ( self );
-		}
-	    }
-
-	    cls = __qClass(aString);
-	    nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-	    cp += nInstBytes;
-
-	    if (__isBytes(aString)) {
-		n = __byteArraySize(aString) - nInstBytes - 1;
-
-		if (i2 < n) {
-		    cp += i1;
-		    if (l > lMax) l = lMax;
-		    ENTER_XLIB();
-		    if (opaque == true)
-			XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
-		    else
-			XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
-		    LEAVE_XLIB();
-		    RETURN ( self );
-		}
-	    }
-
-	    /* TWOBYTESTRINGS */
-	    if (__isWords(aString)) {
-		n = (__byteArraySize(aString) - nInstBytes) / 2;
-		if (i2 < n) {
-		    union {
-			char b[2];
-			unsigned short s;
-		    } u;
-		    int i;
-		    XChar2b *cp2 = (XChar2b *)0;
-		    int mustFree = 0;
-
-		    cp += (i1 * 2);
-		    if (l > lMax) l = lMax;
+        int lMax = __intVal(@global(MaxStringLength));
+        Display *dpy = myDpy;
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+
+        i1 = __intVal(index1) - 1;
+        if (i1 >= 0) {
+            OBJ cls;
+
+            i2 = __intVal(index2) - 1;
+            if (i2 < i1) {
+                RETURN (self);
+            }
+            cp = (char *) __stringVal(aString);
+            l = i2 - i1 + 1;
+
+            if (__isStringLike(aString)) {
+                n = __stringSize(aString);
+                if (i2 < n) {
+                    cp += i1;
+                    if (l > lMax) l = lMax;
+                    ENTER_XLIB();
+                    if (opaque == true)
+                        XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
+                    else
+                        XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
+                    LEAVE_XLIB();
+                    RETURN ( self );
+                }
+            }
+
+            cls = __qClass(aString);
+            nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+            cp += nInstBytes;
+
+            if (__isBytes(aString)) {
+                n = __byteArraySize(aString) - nInstBytes - 1;
+
+                if (i2 < n) {
+                    cp += i1;
+                    if (l > lMax) l = lMax;
+                    ENTER_XLIB();
+                    if (opaque == true)
+                        XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
+                    else
+                        XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
+                    LEAVE_XLIB();
+                    RETURN ( self );
+                }
+            }
+
+            /* TWOBYTESTRINGS */
+            if (__isWords(aString)) {
+                n = (__byteArraySize(aString) - nInstBytes) / 2;
+                if (i2 < n) {
+                    union {
+                        char b[2];
+                        unsigned short s;
+                    } u;
+                    int i;
+                    XChar2b *cp2 = (XChar2b *)0;
+                    int mustFree = 0;
+
+                    cp += (i1 * 2);
+                    if (l > lMax) l = lMax;
 
 #if defined(MSBFIRST) || defined(__MSBFIRST)
-		    /*
-		     * chars already in correct order
-		     */
+                    /*
+                     * chars already in correct order
+                     */
 #else
 # if ! (defined(LSBFIRST) || defined(__LSBFIRST))
-		    /*
-		     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
-		     * X expects them MSB first
-		     * convert as required
-		     */
-		    u.s = 0x1234;
-		    if (u.b[0] != 0x12)
+                    /*
+                     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
+                     * X expects them MSB first
+                     * convert as required
+                     */
+                    u.s = 0x1234;
+                    if (u.b[0] != 0x12)
 # endif
-		    {
-			if (l <= NLOCALBUFFER) {
-			    cp2 = xlatebuffer;
-			} else {
-			    cp2 = (XChar2b *)(malloc(l * 2));
-			    mustFree = 1;
-			}
-			for (i=0; i<l; i++) {
-			    cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
-			    cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
-			}
-			cp = (char *) cp2;
-		    }
-#endif
-		    ENTER_XLIB();
-		    if (opaque == true)
-			XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
-		    else
-			XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
-		    LEAVE_XLIB();
-
-		    if (mustFree) {
-			free(cp2);
-		    }
-
-		    RETURN ( self );
-		}
-	    }
-
-	    /* FOURBYTESTRINGS */
-	    if (__isLongs(aString)) {
-		n = (__byteArraySize(aString) - nInstBytes) / 4;
-		if (i2 < n) {
-		    union {
-			char b[2];
-			unsigned short s;
-		    } u;
-		    int i;
-		    XChar2b *cp2 = (XChar2b *)0;
-		    int32 *ip;
-		    int mustFree = 0;
-
-		    cp += (i1 * 4);
-		    if (l > lMax) l = lMax;
-
-		    /*
-		     * all codePoints <= 16rFFFF are draw; above 16bit range are drawn as 16rFFFF.
-		     */
-		    if (l <= NLOCALBUFFER) {
-			cp2 = xlatebuffer;
-		    } else {
-			cp2 = (XChar2b *)(malloc(l * 2));
-			mustFree = 1;
-		    }
-		    for (i=0; i<l; i++) {
-			int32 codePoint = ((int32 *)cp)[i];
-
-			if (codePoint > 0xFFFF) {
-			    codePoint = 0xFFFF;
-			}
-			cp2[i].byte1 = (codePoint >> 8) & 0xFF;
-			cp2[i].byte2 = codePoint & 0xFF;
-		    }
-		    cp = (char *) cp2;
-
-		    ENTER_XLIB();
-		    if (opaque == true)
-			XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
-		    else
-			XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
-		    LEAVE_XLIB();
-
-		    if (mustFree) {
-			free(cp2);
-		    }
-
-		    RETURN ( self );
-		}
-	    }
-	}
+                    {
+                        if (l <= NLOCALBUFFER) {
+                            cp2 = xlatebuffer;
+                        } else {
+                            cp2 = (XChar2b *)(malloc(l * 2));
+                            mustFree = 1;
+                        }
+                        for (i=0; i<l; i++) {
+                            cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+                            cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+                        }
+                        cp = (char *) cp2;
+                    }
+#endif
+                    ENTER_XLIB();
+                    if (opaque == true)
+                        XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+                    else
+                        XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+                    LEAVE_XLIB();
+
+                    if (mustFree) {
+                        free(cp2);
+                    }
+
+                    RETURN ( self );
+                }
+            }
+
+            /* FOURBYTESTRINGS */
+            if (__isLongs(aString)) {
+                n = (__byteArraySize(aString) - nInstBytes) / 4;
+                if (i2 < n) {
+                    union {
+                        char b[2];
+                        unsigned short s;
+                    } u;
+                    int i;
+                    XChar2b *cp2 = (XChar2b *)0;
+                    int32 *ip;
+                    int mustFree = 0;
+
+                    cp += (i1 * 4);
+                    if (l > lMax) l = lMax;
+
+                    /*
+                     * all codePoints <= 16rFFFF are draw; above 16bit range are drawn as 16rFFFF.
+                     */
+                    if (l <= NLOCALBUFFER) {
+                        cp2 = xlatebuffer;
+                    } else {
+                        cp2 = (XChar2b *)(malloc(l * 2));
+                        mustFree = 1;
+                    }
+                    for (i=0; i<l; i++) {
+                        int32 codePoint = ((int32 *)cp)[i];
+
+                        if (codePoint > 0xFFFF) {
+                            codePoint = 0xFFFF;
+                        }
+                        cp2[i].byte1 = (codePoint >> 8) & 0xFF;
+                        cp2[i].byte2 = codePoint & 0xFF;
+                    }
+                    cp = (char *) cp2;
+
+                    ENTER_XLIB();
+                    if (opaque == true)
+                        XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+                    else
+                        XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+                    LEAVE_XLIB();
+
+                    if (mustFree) {
+                        free(cp2);
+                    }
+
+                    RETURN ( self );
+                }
+            }
+        }
     }
 #undef NLOCALBUFFER
 %}.
     (aString isString and:[aString bitsPerCharacter > 16]) ifTrue:[
-	self displayString:(TwoByteString new:aString size withAll:16rFFFF asCharacter)
-	     from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId opaque:opaque.
-	^ self.
+        self displayString:(TwoByteString new:aString size withAll:16rFFFF asCharacter)
+             from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId opaque:opaque.
+        ^ self.
     ].
 
     "x/y not integer, badGC or drawable, or not a string"
@@ -4060,11 +4055,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -4082,98 +4077,97 @@
      && __isExternalAddress(aDrawableId)
      && __isNonNilObject(aString)
      && __bothSmallInteger(x, y)) {
-	int lMax = __intVal(@global(MaxStringLength));
-	Display *dpy = myDpy;
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-
-	cp = (char *) __stringVal(aString);
-
-	if (__isStringLike(aString)) {
-	    n = __stringSize(aString);
-	    if (n > lMax) n = lMax;
-	    ENTER_XLIB();
-	    if (opaque == true)
-		XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
-	    else
-		XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
-
-	cls = __qClass(aString);
-	nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-	cp += nInstBytes;
-
-	if (__isBytes(aString)) {
-	    n = __byteArraySize(aString) - nInstBytes - 1;
-
-	    if (n > lMax) n = lMax;
-	    ENTER_XLIB();
-	    if (opaque == true)
-		XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
-	    else
-		XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
-
-	/* TWOBYTESTRINGS */
-	if (__isWords(aString)) {
-	    union {
-		char b[2];
-		unsigned short s;
-	    } u;
-	    int i;
-	    XChar2b *cp2;
-	    int mustFree = 0;
-
-	    n = (__byteArraySize(aString) - nInstBytes) / 2;
-	    if (n > lMax) n = lMax;
+        int lMax = __intVal(@global(MaxStringLength));
+        Display *dpy = myDpy;
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+
+        cp = (char *) __stringVal(aString);
+
+        if (__isStringLike(aString)) {
+            n = __stringSize(aString);
+            if (n > lMax) n = lMax;
+            ENTER_XLIB();
+            if (opaque == true)
+                XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
+            else
+                XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
+
+        cls = __qClass(aString);
+        nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+        cp += nInstBytes;
+
+        if (__isBytes(aString)) {
+            n = __byteArraySize(aString) - nInstBytes - 1;
+
+            if (n > lMax) n = lMax;
+            ENTER_XLIB();
+            if (opaque == true)
+                XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
+            else
+                XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
+
+        /* TWOBYTESTRINGS */
+        if (__isWords(aString)) {
+            union {
+                char b[2];
+                unsigned short s;
+            } u;
+            int i;
+            XChar2b *cp2;
+            int mustFree = 0;
+
+            n = (__byteArraySize(aString) - nInstBytes) / 2;
+            if (n > lMax) n = lMax;
 
 #if defined(MSBFIRST) || defined(__MSBFIRST)
-	    /*
-	     * chars already in correct order
-	     */
+            /*
+             * chars already in correct order
+             */
 #else
 # if ! (defined(LSBFIRST) || defined(__LSBFIRST))
-	    /*
-	     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
-	     * X expects them MSB first
-	     * convert as required
-	     */
-	    u.s = 0x1234;
-	    if (u.b[0] != 0x12)
+            /*
+             * ST/X TwoByteStrings store the asciiValue in native byteOrder;
+             * X expects them MSB first
+             * convert as required
+             */
+            u.s = 0x1234;
+            if (u.b[0] != 0x12)
 # endif
-	    {
-		if (n <= NLOCALBUFFER) {
-		    cp2 = xlatebuffer;
-		} else {
-		    cp2 = (XChar2b *)(malloc(n * 2));
-		    mustFree = 1;
-		}
-
-		for (i=0; i<n; i++) {
-		    cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
-		    cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
-		}
-		cp = (char *) cp2;
-	    }
-#endif
-	    ENTER_XLIB();
-	    if (opaque == true)
-		XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
-	    else
-		XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
-	    LEAVE_XLIB();
-
-
-	    if (mustFree) {
-		free(cp2);
-	    }
-
-	    RETURN ( self );
-	}
+            {
+                if (n <= NLOCALBUFFER) {
+                    cp2 = xlatebuffer;
+                } else {
+                    cp2 = (XChar2b *)(malloc(n * 2));
+                    mustFree = 1;
+                }
+
+                for (i=0; i<n; i++) {
+                    cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+                    cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+                }
+                cp = (char *) cp2;
+            }
+#endif
+            ENTER_XLIB();
+            if (opaque == true)
+                XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
+            else
+                XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
+            LEAVE_XLIB();
+
+            if (mustFree) {
+                free(cp2);
+            }
+
+            RETURN ( self );
+        }
     }
 #undef NLOCALBUFFER
 %}.
@@ -4181,12 +4175,12 @@
 !
 
 drawBits:givenBits bitsPerPixel:bitsPerPixel depth:imageDepth padding:givenPadding
-	width:imageWidth height:imageHeight
-	x:srcx y:srcy
-	into:aDrawableId
-	x:dstx y:dsty
-	width:w height:h
-	with:aGCId
+        width:imageWidth height:imageHeight
+        x:srcx y:srcy
+        into:aDrawableId
+        x:dstx y:dsty
+        width:w height:h
+        with:aGCId
 
     "draw a bitImage which has depth id, width iw and height ih into
      the drawable. draw a region of w/h pixels from srcx/srcy to dstx/dsty.
@@ -4208,70 +4202,70 @@
     "/ care for that.
 
     ((imageDepth == 4) and:[depth == 4]) ifTrue:[
-	fmt := self supportedImageFormatForDepth:4.
-	fmt isNil ifTrue:[
-	    self primitiveFailed. "/ cannot represent this image
-	    ^ nil
-	].
-	wantedPadding := fmt at:#padding.
-	wantedPadding > givenPadding ifTrue:[
-	    bits := self
-			    repadBits:givenBits
-			    width:imageWidth
-			    height:imageHeight
-			    depth:imageDepth
-			    from:givenPadding
-			    to:wantedPadding.
-	    padding := wantedPadding.
-	]
+        fmt := self supportedImageFormatForDepth:4.
+        fmt isNil ifTrue:[
+            self primitiveFailed. "/ cannot represent this image
+            ^ nil
+        ].
+        wantedPadding := fmt at:#padding.
+        wantedPadding > givenPadding ifTrue:[
+            bits := self
+                            repadBits:givenBits
+                            width:imageWidth
+                            height:imageHeight
+                            depth:imageDepth
+                            from:givenPadding
+                            to:wantedPadding.
+            padding := wantedPadding.
+        ]
     ].
 
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
     "
      sorry; I had to separate it into 2 methods, since XPutImage needs
      an unlimited stack, and thus cannot send primitiveFailed
     "
     (self
-	primDrawBits:bits
-	bitsPerPixel:bitsPerPixel
-	depth:imageDepth
-	msb:true
-	padding:padding
-	width:imageWidth height:imageHeight
-	x:srcx y:srcy
-	into:aDrawableId
-	x:dstx y:dsty
-	width:w height:h
-	with:aGCId)
+        primDrawBits:bits
+        bitsPerPixel:bitsPerPixel
+        depth:imageDepth
+        msb:true
+        padding:padding
+        width:imageWidth height:imageHeight
+        x:srcx y:srcy
+        into:aDrawableId
+        x:dstx y:dsty
+        width:w height:h
+        with:aGCId)
     ifFalse:[
-	"
-	 also happens, if a segmentation violation occurs in the
-	 XPutImage ...
-	"
-	self primitiveFailedOrClosedConnection
+        "
+         also happens, if a segmentation violation occurs in the
+         XPutImage ...
+        "
+        self primitiveFailedOrClosedConnection
     ].
 !
 
 fillArcX:x y:y width:width height:height from:startAngle angle:angle
-	       in:aDrawableId with:aGCId
+               in:aDrawableId with:aGCId
     "fill an arc. If any coordinate is not integer, an error is triggered.
      The angles may be floats or integer - they are given in degrees."
 
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -4281,23 +4275,23 @@
     double f;
 
     if (__isSmallInteger(startAngle))
-	angle1 = __intVal(startAngle) * 64;
+        angle1 = __intVal(startAngle) * 64;
     else if (__isFloat(startAngle)) {
-	f = __floatVal(startAngle);
-	angle1 = f * 64;
+        f = __floatVal(startAngle);
+        angle1 = f * 64;
     } else if (__isShortFloat(startAngle)) {
-	f = __shortFloatVal(startAngle);
-	angle1 = f * 64;
+        f = __shortFloatVal(startAngle);
+        angle1 = f * 64;
     } else goto bad;
 
     if (__isSmallInteger(angle))
-	angle2 = __intVal(angle) * 64;
+        angle2 = __intVal(angle) * 64;
     else if (__isFloat(angle)) {
-	f = __floatVal(angle);
-	angle2 = f * 64;
+        f = __floatVal(angle);
+        angle2 = f * 64;
     } else if (__isShortFloat(angle)) {
-	f = __shortFloatVal(angle);
-	angle2 = f * 64;
+        f = __shortFloatVal(angle);
+        angle2 = f * 64;
     } else goto bad;
 
     if (ISCONNECTED
@@ -4305,20 +4299,20 @@
      && __isExternalAddress(aDrawableId)
      && __bothSmallInteger(x, y)
      && __bothSmallInteger(width, height)) {
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-	w = __intVal(width);
-	h = __intVal(height);
-	/*
-	 * need this check here: some servers simply dump core with bad args
-	 */
-	if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
-	    ENTER_XLIB();
-	    XFillArc(myDpy, win, gc, __intVal(x), __intVal(y),
-				   w, h, angle1, angle2);
-	    LEAVE_XLIB();
-	}
-	RETURN ( self );
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+        w = __intVal(width);
+        h = __intVal(height);
+        /*
+         * need this check here: some servers simply dump core with bad args
+         */
+        if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
+            ENTER_XLIB();
+            XFillArc(myDpy, win, gc, __intVal(x), __intVal(y),
+                                   w, h, angle1, angle2);
+            LEAVE_XLIB();
+        }
+        RETURN ( self );
     }
     bad: ;
 %}.
@@ -4337,11 +4331,11 @@
     |numberOfPoints|
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
     numberOfPoints := aPolygon size.
 %{
@@ -4357,41 +4351,41 @@
      && __isExternalAddress(aGCId)
      && __isExternalAddress(aDrawableId)
      && __isSmallInteger(numberOfPoints)) {
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-	num = __intVal(numberOfPoints);
-	if (num < 3) {
-	    RETURN ( self );
-	}
-	/*
-	 * avoid (slow) malloc, if not many points
-	 */
-	if (num > 100) {
-	    points = (XPoint *) malloc(sizeof(XPoint) * num);
-	    if (! points) goto fail;
-	    mustFree = 1;
-	} else
-	    points = qPoints;
-	for (i=0; i<num; i++) {
-	    point = __AT_(aPolygon, __MKSMALLINT(i+1));
-	    if (! __isPoint(point)) goto fail;
-	    x = _point_X(point);
-	    y = _point_Y(point);
-	    if (! __bothSmallInteger(x, y))
-		goto fail;
-	    points[i].x = __intVal(x);
-	    points[i].y = __intVal(y);
-	}
-	ENTER_XLIB();
-	XFillPolygon(myDpy, win, gc, points, num, Complex, CoordModeOrigin);
-	LEAVE_XLIB();
-	if (mustFree)
-	    free(points);
-	RETURN ( self );
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+        num = __intVal(numberOfPoints);
+        if (num < 3) {
+            RETURN ( self );
+        }
+        /*
+         * avoid (slow) malloc, if not many points
+         */
+        if (num > 100) {
+            points = (XPoint *) malloc(sizeof(XPoint) * num);
+            if (! points) goto fail;
+            mustFree = 1;
+        } else
+            points = qPoints;
+        for (i=0; i<num; i++) {
+            point = __AT_(aPolygon, __MKSMALLINT(i+1));
+            if (! __isPoint(point)) goto fail;
+            x = _point_X(point);
+            y = _point_Y(point);
+            if (! __bothSmallInteger(x, y))
+                goto fail;
+            points[i].x = __intVal(x);
+            points[i].y = __intVal(y);
+        }
+        ENTER_XLIB();
+        XFillPolygon(myDpy, win, gc, points, num, Complex, CoordModeOrigin);
+        LEAVE_XLIB();
+        if (mustFree)
+            free(points);
+        RETURN ( self );
 
 fail: ;
-	if (mustFree)
-	    free(points);
+        if (mustFree)
+            free(points);
     }
 %}.
     "badGC, badDrawable or coordinates not integer"
@@ -4404,11 +4398,11 @@
     <context: #return>
 
     operationsUntilFlush notNil ifTrue:[
-	operationsUntilFlush <= 0 ifTrue:[
-	    self flush.
-	] ifFalse:[
-	    operationsUntilFlush := operationsUntilFlush - 1.
-	].
+        operationsUntilFlush <= 0 ifTrue:[
+            self flush.
+        ] ifFalse:[
+            operationsUntilFlush := operationsUntilFlush - 1.
+        ].
     ].
 %{
 
@@ -4419,19 +4413,19 @@
      && __isExternalAddress(aDrawableId)
      && __bothSmallInteger(x, y)
      && __bothSmallInteger(width, height)) {
-	w = __intVal(width);
-	h = __intVal(height);
-	/*
-	 * need this check here: some servers simply dump core with bad args
-	 */
-	if ((w >= 0) && (h >= 0)) {
-	    ENTER_XLIB();
-	    XFillRectangle(myDpy,
-			   __DrawableVal(aDrawableId), __GCVal(aGCId),
-			   __intVal(x), __intVal(y), w, h);
-	    LEAVE_XLIB();
-	}
-	RETURN ( self );
+        w = __intVal(width);
+        h = __intVal(height);
+        /*
+         * need this check here: some servers simply dump core with bad args
+         */
+        if ((w >= 0) && (h >= 0)) {
+            ENTER_XLIB();
+            XFillRectangle(myDpy,
+                           __DrawableVal(aDrawableId), __GCVal(aGCId),
+                           __intVal(x), __intVal(y), w, h);
+            LEAVE_XLIB();
+        }
+        RETURN ( self );
     }
 %}.
     "badGC, badDrawable or coordinates not integer"
@@ -4439,10 +4433,10 @@
 !
 
 primDrawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth msb:msb masks:maskArray padding:bitPadding
-			     extent:imageExtent sourceOrigin:srcOrg
-			       into:aDrawableId
-		  destinationOrigin:dstOrg extent:dstExtent
-			       with:aGCId
+                             extent:imageExtent sourceOrigin:srcOrg
+                               into:aDrawableId
+                  destinationOrigin:dstOrg extent:dstExtent
+                               with:aGCId
 
     <context: #return>
 
@@ -4486,57 +4480,57 @@
      && __bothSmallInteger(rm, gm)
      && __isSmallInteger(bm)
      && __isByteArrayLike(imageBits)) {
-	Display *dpy = myDpy;
-	int pad = __intVal(bitPadding);
-
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-	if (! gc || !win)
-	    goto fail;
+        Display *dpy = myDpy;
+        int pad = __intVal(bitPadding);
+
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+        if (! gc || !win)
+            goto fail;
 #ifdef ARGDEBUG
-	console_printf("args ok\n");
-#endif
-	image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
-	image.width = imgWdth = __intVal(imageWidth);
-	image.height = __intVal(imageHeight);
-	image.xoffset = 0;
-	image.format = ZPixmap;
-	image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
-	image.bitmap_unit = 8;
-	image.bitmap_bit_order = MSBFirst;
-	image.bitmap_pad = pad;
-	image.depth = __intVal(imageDepth);
-	image.bits_per_pixel = __intVal(bitsPerPixel);
-	image.red_mask = __intVal(rm);
-	image.green_mask = __intVal(gm);
-	image.blue_mask = __intVal(bm);
-
-	image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
-
-	switch (image.bits_per_pixel) {
-	    case 1:
-	    case 2:
-	    case 4:
-	    case 8:
-	    case 16:
-	    case 24:
-	    case 32:
-		break;
-
-	    default:
+        console_printf("args ok\n");
+#endif
+        image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
+        image.width = imgWdth = __intVal(imageWidth);
+        image.height = __intVal(imageHeight);
+        image.xoffset = 0;
+        image.format = ZPixmap;
+        image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
+        image.bitmap_unit = 8;
+        image.bitmap_bit_order = MSBFirst;
+        image.bitmap_pad = pad;
+        image.depth = __intVal(imageDepth);
+        image.bits_per_pixel = __intVal(bitsPerPixel);
+        image.red_mask = __intVal(rm);
+        image.green_mask = __intVal(gm);
+        image.blue_mask = __intVal(bm);
+
+        image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
+
+        switch (image.bits_per_pixel) {
+            case 1:
+            case 2:
+            case 4:
+            case 8:
+            case 16:
+            case 24:
+            case 32:
+                break;
+
+            default:
 #ifdef ARGDEBUG
-		console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
-#endif
-		goto fail;
-	}
-
-	/* ENTER_XLIB(); */
-	XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
-					__intVal(dstx), __intVal(dsty),
-					__intVal(w), __intVal(h));
-	/* LEAVE_XLIB(); */
-
-	RETURN ( true );
+                console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
+#endif
+                goto fail;
+        }
+
+        /* ENTER_XLIB(); */
+        XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
+                                        __intVal(dstx), __intVal(dsty),
+                                        __intVal(w), __intVal(h));
+        /* LEAVE_XLIB(); */
+
+        RETURN ( true );
     }
 #ifdef ARGDEBUG
     if (!! __isExternalAddress(aGCId)) console_printf("GC\n");
@@ -4561,12 +4555,12 @@
 !
 
 primDrawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth msb:msb padding:bitPadding
-			      width:imageWidth height:imageHeight
-				  x:srcx y:srcy
-			       into:aDrawableId
-				  x:dstx y:dsty
-			      width:w height:h
-			       with:aGCId
+                              width:imageWidth height:imageHeight
+                                  x:srcx y:srcy
+                               into:aDrawableId
+                                  x:dstx y:dsty
+                              width:w height:h
+                               with:aGCId
 
     <context: #return>
 
@@ -4594,61 +4588,61 @@
      && __bothSmallInteger(imageDepth, bitsPerPixel)
      && __isSmallInteger(bitPadding)
      && __isByteArrayLike(imageBits)) {
-	Display *dpy = myDpy;
-	int pad = __intVal(bitPadding);
-
-	gc = __GCVal(aGCId);
-	win = __WindowVal(aDrawableId);
-	if (! gc || !win)
-	    goto fail;
+        Display *dpy = myDpy;
+        int pad = __intVal(bitPadding);
+
+        gc = __GCVal(aGCId);
+        win = __WindowVal(aDrawableId);
+        if (! gc || !win)
+            goto fail;
 #ifdef ARGDEBUG
-	console_printf("args ok\n");
-#endif
-	image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
-	image.width = imgWdth = __intVal(imageWidth);
-	image.height = __intVal(imageHeight);
-	image.xoffset = 0;
-	image.format = ZPixmap;
-	image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
-	image.bitmap_unit = 8;
-	image.bitmap_bit_order = MSBFirst;
-	image.bitmap_pad = pad;
-	image.depth = __intVal(imageDepth);
-	image.bits_per_pixel = __intVal(bitsPerPixel);
-
-	/*
-	image.bytes_per_line = ((((imgWdth * image.depth) + (pad-1)) / pad) * pad) / 8;
-	*/
-	image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
-
-	switch (image.bits_per_pixel) {
-	    case 1:
-	    case 2:
-	    case 4:
-	    case 8:
-	    case 16:
-	    case 24:
-	    case 32:
-		break;
-
-	    default:
+        console_printf("args ok\n");
+#endif
+        image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
+        image.width = imgWdth = __intVal(imageWidth);
+        image.height = __intVal(imageHeight);
+        image.xoffset = 0;
+        image.format = ZPixmap;
+        image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
+        image.bitmap_unit = 8;
+        image.bitmap_bit_order = MSBFirst;
+        image.bitmap_pad = pad;
+        image.depth = __intVal(imageDepth);
+        image.bits_per_pixel = __intVal(bitsPerPixel);
+
+        /*
+        image.bytes_per_line = ((((imgWdth * image.depth) + (pad-1)) / pad) * pad) / 8;
+        */
+        image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
+
+        switch (image.bits_per_pixel) {
+            case 1:
+            case 2:
+            case 4:
+            case 8:
+            case 16:
+            case 24:
+            case 32:
+                break;
+
+            default:
 #ifdef ARGDEBUG
-		console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
-#endif
-		goto fail;
-	}
-
-	image.red_mask = 0xFFFF;
-	image.green_mask = 0xFFFF;
-	image.blue_mask = 0xFFFF;
-
-	/* ENTER_XLIB(); */
-	XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
-					__intVal(dstx), __intVal(dsty),
-					__intVal(w), __intVal(h));
-	/* LEAVE_XLIB(); */
-
-	RETURN ( true );
+                console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
+#endif
+                goto fail;
+        }
+
+        image.red_mask = 0xFFFF;
+        image.green_mask = 0xFFFF;
+        image.blue_mask = 0xFFFF;
+
+        /* ENTER_XLIB(); */
+        XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
+                                        __intVal(dstx), __intVal(dsty),
+                                        __intVal(w), __intVal(h));
+        /* LEAVE_XLIB(); */
+
+        RETURN ( true );
     }
 #ifdef ARGDEBUG
     if (!! __isExternalAddress(aGCId)) console_printf("GC\n");
@@ -4705,29 +4699,29 @@
     ].
 
     logicalButton isInteger ifTrue:[
-	buttonsPressed := buttonsPressed bitOr:(1 bitShift:logicalButton-1).
+        buttonsPressed := buttonsPressed bitOr:(1 bitShift:logicalButton-1).
     ].
 
     (multiClickTimeDelta notNil and:[lastButtonPressTime notNil]) ifTrue:[
-	time < (lastButtonPressTime + multiClickTimeDelta) ifTrue:[
-	    lastButtonPressTime := time.
-	    self buttonMultiPress:logicalButton x:x y:y view:view.
-	    ^ self.
-	].
+        time < (lastButtonPressTime + multiClickTimeDelta) ifTrue:[
+            lastButtonPressTime := time.
+            self buttonMultiPress:logicalButton x:x y:y view:view.
+            ^ self.
+        ].
     ].
     lastButtonPressTime := time.
 
     view isNil ifTrue:[
-	"/ event arrived, after I destroyed it myself
-	^ self
+        "/ event arrived, after I destroyed it myself
+        ^ self
     ].
     logicalButton == 1 ifTrue:[
-	activateOnClick == true ifTrue:[
-	    "/ dont raise above an active popup view.
-	    (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
-		view topView raise.
-	    ]
-	].
+        activateOnClick == true ifTrue:[
+            "/ dont raise above an active popup view.
+            (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
+                view topView raise.
+            ]
+        ].
     ].
     super buttonPress:logicalButton x:x y:y view:view
 !
@@ -4755,7 +4749,7 @@
     ].
 
     logicalButton isInteger ifTrue:[
-	buttonsPressed := buttonsPressed bitClear:(1 bitShift:logicalButton-1).
+        buttonsPressed := buttonsPressed bitClear:(1 bitShift:logicalButton-1).
     ].
     self buttonRelease:logicalButton x:x y:y view:view
 !
@@ -4764,20 +4758,20 @@
     |sensor|
 
     targetView isNil ifTrue:[
-	"targetView is gone? Anyway, cannot do anything with this event..."
-	^ self.
+        "targetView is gone? Anyway, cannot do anything with this event..."
+        ^ self.
     ].
 
     "DND drag&drop protocol"
     (format == 32 and:[typeAtom == (self atomIDOf:#DndProtocol)]) ifTrue:[
-	self dndMessage:nil data:data view:targetView.
-	^ self.
+        self dndMessage:nil data:data view:targetView.
+        ^ self.
     ].
 
     sensor := targetView sensor.
     "not posted, if there is no sensor ..."
     sensor notNil ifTrue:[
-	sensor clientMessage:typeAtom format:format eventData:data view:targetView
+        sensor clientMessage:typeAtom format:format eventData:data view:targetView
     ].
 
     "Created: 4.4.1997 / 17:49:26 / cg"
@@ -4788,20 +4782,20 @@
 
     self configureX:x y:y width:w height:h view:view.
     above notNil ifTrue:[
-	|aboveView|
-	aboveView := self viewFromId:above.
-	aboveView notNil ifTrue:[
-	    "view is now on the top of the window stack"
-	    self coveredBy:view view:aboveView.
-	].
+        |aboveView|
+        aboveView := self viewFromId:above.
+        aboveView notNil ifTrue:[
+            "view is now on the top of the window stack"
+            self coveredBy:view view:aboveView.
+        ].
      ].
 !
 
 createWindow:view x:x y:y width:w height:h
 
     view isNil ifTrue:[
-	"/ event arrived, after I destroyed it myself
-	^ self
+        "/ event arrived, after I destroyed it myself
+        ^ self
     ].
     view sensor createWindow:view x:x y:y width:w height:h
 
@@ -4820,9 +4814,9 @@
     dropType := (self dndDropTypes) at:dropType+1 ifAbsent:#DndNotDnd.
 
     property := self
-	getProperty:(self atomIDOf:#DndSelection)
-	from:rootId
-	delete:false.
+        getProperty:(self atomIDOf:#DndSelection)
+        from:rootId
+        delete:false.
 
     propertyType := property key.
     dropValue := property value.
@@ -4836,70 +4830,70 @@
     "/ in the default dropMessage handling of SimpleView.
 
     dropType == #DndFiles ifTrue:[
-	"/ actually, a list of fileNames
-	propertyType ~~ stringAtom ifTrue:[
-	    'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
-	    ^ self
-	].
-
-	names := OrderedCollection new.
-	i1 := 1.
-	[i1 ~~ 0] whileTrue:[
-	    i2 := dropValue indexOf:(Character value:0) startingAt:i1.
-	    i2 ~~ 0 ifTrue:[
-		names add:(dropValue copyFrom:i1 to:(i2-1)).
-		i1 := i2 + 1.
-	    ] ifFalse:[
-		i1 := i2
-	    ].
-	].
-	dropValue := names.
-	dropValue := dropValue collect:[:nm | nm asFilename].
-	dropType := #files.
+        "/ actually, a list of fileNames
+        propertyType ~~ stringAtom ifTrue:[
+            'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+            ^ self
+        ].
+
+        names := OrderedCollection new.
+        i1 := 1.
+        [i1 ~~ 0] whileTrue:[
+            i2 := dropValue indexOf:(Character value:0) startingAt:i1.
+            i2 ~~ 0 ifTrue:[
+                names add:(dropValue copyFrom:i1 to:(i2-1)).
+                i1 := i2 + 1.
+            ] ifFalse:[
+                i1 := i2
+            ].
+        ].
+        dropValue := names.
+        dropValue := dropValue collect:[:nm | nm asFilename].
+        dropType := #files.
     ] ifFalse:[ (dropType == #DndFile) ifTrue:[
-	propertyType ~~ stringAtom ifTrue:[
-	    'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
-	    ^ self
-	].
-	dropValue := dropValue asFilename.
-	dropType := #file.
+        propertyType ~~ stringAtom ifTrue:[
+            'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+            ^ self
+        ].
+        dropValue := dropValue asFilename.
+        dropType := #file.
     ] ifFalse:[ (dropType == #DndDir) ifTrue:[
-	propertyType ~~ stringAtom ifTrue:[
-	    'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
-	    ^ self
-	].
-	dropValue := dropValue asFilename.
-	dropType := #directory.
+        propertyType ~~ stringAtom ifTrue:[
+            'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+            ^ self
+        ].
+        dropValue := dropValue asFilename.
+        dropType := #directory.
     ] ifFalse:[ (dropType == #DndText) ifTrue:[
-	propertyType ~~ stringAtom ifTrue:[
-	    'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
-	    ^ self
-	].
-	dropType := #text.
+        propertyType ~~ stringAtom ifTrue:[
+            'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+            ^ self
+        ].
+        dropType := #text.
     ] ifFalse:[ (dropType == #DndExe) ifTrue:[
-	propertyType ~~ stringAtom ifTrue:[
-	    'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
-	    ^ self
-	].
-	dropType := #executable.
+        propertyType ~~ stringAtom ifTrue:[
+            'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+            ^ self
+        ].
+        dropType := #executable.
     ] ifFalse:[ (dropType == #DndLink) ifTrue:[
-	propertyType ~~ stringAtom ifTrue:[
-	    'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
-	    ^ self
-	].
-	dropType := #link.
+        propertyType ~~ stringAtom ifTrue:[
+            'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+            ^ self
+        ].
+        dropType := #link.
     ] ifFalse:[ (dropType == #DndRawData) ifTrue:[
-	dropType := #rawData.
+        dropType := #rawData.
     ] ifFalse:[
-	'XWorkstation [info]: unsupported dropType: ' infoPrint. dropType infoPrintCR.
-	'XWorkstation [info]: data: ' infoPrint. dropValue infoPrintCR.
-	dropType := #unknown.
+        'XWorkstation [info]: unsupported dropType: ' infoPrint. dropType infoPrintCR.
+        'XWorkstation [info]: data: ' infoPrint. dropValue infoPrintCR.
+        dropType := #unknown.
     ]]]]]]].
 
     sensor := targetView sensor.
     "not posted, if there is no sensor ..."
     sensor notNil ifTrue:[
-	sensor dropMessage:dropType data:dropValue view:targetView position:nil handle:nil
+        sensor dropMessage:dropType data:dropValue view:targetView position:nil handle:nil
     ].
 
     "Created: 4.4.1997 / 17:59:37 / cg"
@@ -4919,8 +4913,8 @@
     "a view got the keyboard focus"
 
     mode ~~ 1 "NotifyGrab" ifTrue:[
-	"mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
-	self focusInView:view
+        "mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
+        self focusInView:view
     ].
 !
 
@@ -4928,8 +4922,8 @@
     "a view lost the keyboard focus"
 
     mode ~~ 1 "NotifyGrab" ifTrue:[
-	"mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
-	self focusOutView:view
+        "mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
+        self focusOutView:view
     ].
 !
 
@@ -4954,9 +4948,9 @@
     shiftDown := state bitTest:(self shiftModifierMask).
     ctrlDown := state bitTest:(self ctrlModifierMask).
     key isNil ifTrue:[
-	"/ happens sometimes on some systems
-	"/ (alt-graph on sun has no keysym)
-	^ self
+        "/ happens sometimes on some systems
+        "/ (alt-graph on sun has no keysym)
+        ^ self
     ].
     eventRootX := rX.
     eventRootY := rY.
@@ -4979,9 +4973,9 @@
     ctrlDown := state bitTest:(self ctrlModifierMask).
 
     key isNil ifTrue:[
-	"/ happens sometimes on some systems
-	"/ (alt-graph on sun has no keysym)
-	^ self
+        "/ happens sometimes on some systems
+        "/ (alt-graph on sun has no keysym)
+        ^ self
     ].
     eventRootX := rX.
     eventRootY := rY.
@@ -4997,9 +4991,9 @@
      Tell xlib about the fact."
 
     (what == #mappingKeyboard or:[what == #mappingModifier]) ifTrue:[
-	self refreshKeyboardMapping:eB.
-	"Maybe some of our modifiers have been changed"
-	self initializeModifierMappings.
+        self refreshKeyboardMapping:eB.
+        "Maybe some of our modifiers have been changed"
+        self initializeModifierMappings.
     ].
 
 !
@@ -5040,8 +5034,8 @@
 
     lastEventTime := time.
     aView isNil ifTrue:[
-	"event arrived, after aView has been destroyed"
-	^ self
+        "event arrived, after aView has been destroyed"
+        ^ self
     ].
 
 "/    'propertyChange ' infoPrint. (self atomName:propertyId) print. ': ' print. aSymbol printCR.
@@ -5053,12 +5047,12 @@
     aView sensor propertyChange:aView property:propertyId state:aSymbol time:time.
 
     aSymbol ~~ #newValue ifTrue:[
-	"I am not interested in delete notifications"
-	^ self.
+        "I am not interested in delete notifications"
+        ^ self.
     ].
     selectionFetcher := self findSelectionFetcher:aView id.
     selectionFetcher notNil ifTrue:[
-	selectionFetcher message:thisContext message.
+        selectionFetcher message:thisContext message.
     ].
 
     "Modified: / 01-06-2011 / 13:40:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -5106,12 +5100,12 @@
     lastEventTime := time.
 
     aView isNil ifTrue:[
-	"event arrived, after aView has been destroyed"
-	^ self
+        "event arrived, after aView has been destroyed"
+        ^ self
     ].
     selectionFetcher := self findSelectionFetcher:aView id.
     selectionFetcher notNil ifTrue:[
-	selectionFetcher message:thisContext message.
+        selectionFetcher message:thisContext message.
     ].
 !
 
@@ -5119,18 +5113,35 @@
     "sent by some other X-client to ask for the selection.
      This is a very X-specific mechanism."
 
-    |selection property|
-
-'Selection: ' print. (self atomName:selectionID) printCR. ' TargetId: ' print. (self atomName:targetID) printCR.
-' Property: ' print. (self atomName:propertyID) printCR. ' Requestor: ' print. requestorID printCR.
+    |selection property bufferGetSelector responseTargetID selectionTime|
+
+"/'Selection: ' print. (self atomName:selectionID) printCR. ' TargetId: ' print. (self atomName:targetID) printCR.
+"/' Property: ' print. (self atomName:propertyID) printCR. ' Requestor: ' print. requestorID printCR.
 
     lastEventTime := time.
+
     "JV@2012-03-27: Support both PRIMARY and CLIPBOARD selections"
     selectionID == primaryAtom ifTrue:[
-        selection := self primaryBufferAs:targetID.
+        bufferGetSelector := #getPrimaryBuffer.
+        selectionTime := primarySelectionTime.
     ] ifFalse:[
-        selection := self copyBufferAs:targetID.
-    ].
+        bufferGetSelector := #getCopyBuffer.
+        selectionTime := clipboardSelectionTime.
+    ].
+
+    (targetID == (self atomIDOf:#TIMESTAMP)) ifTrue:[
+        "the other view wants to know when we acquired ownership of the selection"
+        responseTargetID := self atomIDOf:#INTEGER.
+        selection := selectionTime.
+    ] ifFalse:[(targetID == (self atomIDOf:#TARGETS)) ifTrue:[
+        "the other view wants to know which targets we support"
+        responseTargetID := self atomIDOf:#ATOM.
+        selection := self supportedTargetAtoms.
+    ] ifFalse:[
+        selection := self selectionBuffer:bufferGetSelector as:targetID.
+        responseTargetID := selection key.
+        selection := selection value.
+    ]].
 
 "/'Send selection: ' print. selection printCR.
 
@@ -5145,17 +5156,17 @@
         property == 0 ifTrue:[
             "Support old (obsolete) clients requesting a None property.
              Set the propertyID to the targetID"
-            property := targetID.
+            property := responseTargetID.
         ].
         self setProperty:property
-             type:targetID
+             type:responseTargetID
              value:selection
              for:requestorID.
     ].
 
     self sendNotifySelection:selectionID
          property:property
-         target:targetID
+         target:responseTargetID
          time:time
          to:requestorID.
 
@@ -5165,7 +5176,7 @@
 visibilityNotify:aView state:how
 
     aView notNil ifTrue:[
-	aView visibilityChange:how
+        aView visibilityChange:how
     ]
 ! !
 
@@ -5187,8 +5198,8 @@
      This is a very X-specific mechanism."
 
     aView isNil ifTrue:[
-	"/ event arrived, after I destroyed it myself
-	^ self
+        "/ event arrived, after I destroyed it myself
+        ^ self
     ].
     "/ not yet implemented
     "/ aView colorMapChange
@@ -5236,11 +5247,11 @@
 
 %{  /* NOCONTEXT */
     RETURN (__MKSMALLINT( ExposureMask | StructureNotifyMask |
-			 KeyPressMask | KeyReleaseMask |
-			 PointerMotionMask |
-			 EnterWindowMask | LeaveWindowMask |
-			 ButtonPressMask | ButtonMotionMask | ButtonReleaseMask |
-			 PropertyChangeMask ));
+                         KeyPressMask | KeyReleaseMask |
+                         PointerMotionMask |
+                         EnterWindowMask | LeaveWindowMask |
+                         ButtonPressMask | ButtonMotionMask | ButtonReleaseMask |
+                         PropertyChangeMask ));
 %}
 !
 
@@ -5249,21 +5260,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.
@@ -5279,18 +5290,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:[
-	AbortOperationRequest handle:[:ex |
-	    ex return
-	] do:[
-	    self dispatchEvent:eventArray.
-	]
+        AbortOperationRequest handle:[:ex |
+            ex return
+        ] do:[
+            self dispatchEvent:eventArray.
+        ]
     ].
 
     "Modified: 19.8.1997 / 17:10:42 / cg"
@@ -5301,7 +5312,7 @@
      If the argument aViewIdOrNil is nil, events for any view are processed,
      otherwise only events for the view with given id are processed.
      WARNING: this may block to wait for an event - you better check for a
-	      pending event before calling this."
+              pending event before calling this."
 
     self dispatchEventFor:aViewIdOrNil withMask:(self eventMaskFor:#expose)
 
@@ -5312,10 +5323,10 @@
     preWaitAction := [self flush].
     Processor addPreWaitAction:preWaitAction.
     [
-	super dispatchLoop
+        super dispatchLoop
     ] ensure:[
-	Processor removePreWaitAction:preWaitAction.
-	preWaitAction := nil.
+        Processor removePreWaitAction:preWaitAction.
+        preWaitAction := nil.
     ].
 !
 
@@ -5333,26 +5344,26 @@
     |eventArray|
 
     dispatchingExpose notNil ifTrue:[
-	[self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[
-	    self dispatchExposeEventFor:dispatchingExpose
-	].
-	^ self
+        [self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[
+            self dispatchExposeEventFor:dispatchingExpose
+        ].
+        ^ self
     ].
 
     [self eventPendingWithSync:false] whileTrue:[
-	eventArray isNil ifTrue:[
-	    eventArray := Array new:13.
-	].
-	(self getEventFor:nil withMask:nil into:eventArray) ifTrue:[
-	    AbortOperationRequest handle:[:ex |
-		ex return
-	    ] do:[
-		self dispatchEvent:eventArray.
-		"/ multi-screen config: give others a chance
-		"/ (needed because we run at high (non-timesliced) prio)
-		Processor yield.
-	    ]
-	].
+        eventArray isNil ifTrue:[
+            eventArray := Array new:13.
+        ].
+        (self getEventFor:nil withMask:nil into:eventArray) ifTrue:[
+            AbortOperationRequest handle:[:ex |
+                ex return
+            ] do:[
+                self dispatchEvent:eventArray.
+                "/ multi-screen config: give others a chance
+                "/ (needed because we run at high (non-timesliced) prio)
+                Processor yield.
+            ]
+        ].
     ]
 
     "Modified: 19.8.1997 / 17:11:18 / cg"
@@ -5372,17 +5383,17 @@
 
     if (ISCONNECTED
      && __isSmallInteger(aMask)) {
-	Display *dpy = myDpy;
-
-	ENTER_XLIB();
-	if (__isExternalAddress(aWindowIdOrNil)) {
-	    win = __WindowVal(aWindowIdOrNil);
-	    while (XCheckWindowEvent(dpy, win, __intVal(aMask), &ev)) ;;
-	} else {
-	    while (XCheckMaskEvent(dpy, __intVal(aMask), &ev)) ;;
-	}
-	LEAVE_XLIB();
-	RETURN ( self );
+        Display *dpy = myDpy;
+
+        ENTER_XLIB();
+        if (__isExternalAddress(aWindowIdOrNil)) {
+            win = __WindowVal(aWindowIdOrNil);
+            while (XCheckWindowEvent(dpy, win, __intVal(aMask), &ev)) ;;
+        } else {
+            while (XCheckMaskEvent(dpy, __intVal(aMask), &ev)) ;;
+        }
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -5428,7 +5439,7 @@
     ConservativeSync == true ifTrue:[self sync].
 
     dispatchingExpose notNil ifTrue:[
-	^ self exposeEventPendingFor:dispatchingExpose withSync:false
+        ^ self exposeEventPendingFor:dispatchingExpose withSync:false
     ].
     ^ self eventPendingWithSync:false
 
@@ -5453,23 +5464,23 @@
     OBJ rslt = false;
 
     if (ISCONNECTED && __isSmallInteger(anEventMask)) {
-	Display *dpy = myDpy;
-
-	ENTER_XLIB();
-	if (doSync == true) {
-	    XSync(dpy, 0);      /* make certain everything is flushed */
-	}
-	if (__isExternalAddress(aWindowIdOrNil)) {
-	    win = __WindowVal(aWindowIdOrNil);
-	    thereIsOne = XCheckWindowEvent(dpy, win, __intVal(anEventMask), &ev);
-	} else {
-	    thereIsOne = XCheckMaskEvent(dpy, __intVal(anEventMask), &ev);
-	}
-	if (thereIsOne) {
-	    XPutBackEvent(dpy, &ev);
-	    rslt = true;
-	}
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+
+        ENTER_XLIB();
+        if (doSync == true) {
+            XSync(dpy, 0);      /* make certain everything is flushed */
+        }
+        if (__isExternalAddress(aWindowIdOrNil)) {
+            win = __WindowVal(aWindowIdOrNil);
+            thereIsOne = XCheckWindowEvent(dpy, win, __intVal(anEventMask), &ev);
+        } else {
+            thereIsOne = XCheckMaskEvent(dpy, __intVal(anEventMask), &ev);
+        }
+        if (thereIsOne) {
+            XPutBackEvent(dpy, &ev);
+            rslt = true;
+        }
+        LEAVE_XLIB();
     }
     RETURN ( rslt );
 %}
@@ -5485,20 +5496,20 @@
     OBJ rslt = false;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	if (XEventsQueued(dpy, QueuedAlready)) {
-	    RETURN (true);
-	}
-
-	ENTER_XLIB();
-	if (doSync == true) {
-	    XSync(dpy, 0);      /* make certain everything is flushed */
-	}
-	if (XPending(dpy)) {
-	    rslt = true;
-	}
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+
+        if (XEventsQueued(dpy, QueuedAlready)) {
+            RETURN (true);
+        }
+
+        ENTER_XLIB();
+        if (doSync == true) {
+            XSync(dpy, 0);      /* make certain everything is flushed */
+        }
+        if (XPending(dpy)) {
+            rslt = true;
+        }
+        LEAVE_XLIB();
     }
     RETURN ( rslt );
 %}
@@ -5508,7 +5519,7 @@
     "return true, if any event is queued"
 
     dispatchingExpose notNil ifTrue:[
-	^ self exposeEventPendingFor:dispatchingExpose withSync:false
+        ^ self exposeEventPendingFor:dispatchingExpose withSync:false
     ].
     ^ self eventQueuedAlready
 
@@ -5525,12 +5536,12 @@
     OBJ rslt = false;
 
     if (ISCONNECTED) {
-	/* ENTER ... LEAVE not needed; XEventsQueued will not block */
-	/* ENTER_XLIB(); */
-	if (XEventsQueued(myDpy, QueuedAlready)) {
-	    rslt = true;
-	}
-	/* LEAVE_XLIB(); */
+        /* ENTER ... LEAVE not needed; XEventsQueued will not block */
+        /* ENTER_XLIB(); */
+        if (XEventsQueued(myDpy, QueuedAlready)) {
+            rslt = true;
+        }
+        /* LEAVE_XLIB(); */
     }
     RETURN ( rslt );
 %}
@@ -5551,23 +5562,23 @@
     OBJ rslt = false;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	ENTER_XLIB();
-	if (doSync == true) {
-	    XSync(dpy, 0);      /* make certain everything is flushed */
-	}
-	if (__isExternalAddress(aWindowIdOrNil)) {
-	    win = __WindowVal(aWindowIdOrNil);
-	    thereIsOne = XCheckWindowEvent(dpy, win, ExposureMask, &ev);
-	} else {
-	    thereIsOne = XCheckMaskEvent(dpy, ExposureMask, &ev);
-	}
-	if (thereIsOne) {
-	    XPutBackEvent(dpy, &ev);
-	    rslt = true;
-	}
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+
+        ENTER_XLIB();
+        if (doSync == true) {
+            XSync(dpy, 0);      /* make certain everything is flushed */
+        }
+        if (__isExternalAddress(aWindowIdOrNil)) {
+            win = __WindowVal(aWindowIdOrNil);
+            thereIsOne = XCheckWindowEvent(dpy, win, ExposureMask, &ev);
+        } else {
+            thereIsOne = XCheckMaskEvent(dpy, ExposureMask, &ev);
+        }
+        if (thereIsOne) {
+            XPutBackEvent(dpy, &ev);
+            rslt = true;
+        }
+        LEAVE_XLIB();
     }
     RETURN ( rslt );
 %}
@@ -5583,11 +5594,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 a separate
      handler method to allow UNLIMITEDSTACK here.
@@ -5609,7 +5620,7 @@
     OBJ arg, sym, t, windowID;
 
     if (! ISCONNECTED) {
-	RETURN (false);
+        RETURN (false);
     }
 
     dpy = myDpy;
@@ -5617,39 +5628,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)
@@ -5676,368 +5687,368 @@
 #   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: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) {
-		t = __MKEXTERNALADDRESS(ce->above); __ArrayInstPtr(anEventArray)->a_element[7] = 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: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) {
+                t = __MKEXTERNALADDRESS(ce->above); __ArrayInstPtr(anEventArray)->a_element[7] = 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
@@ -6101,20 +6112,20 @@
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)
      && __isSmallInteger(aMask)) {
-	mask = __intVal(aMask);
+        mask = __intVal(aMask);
 
 #ifdef OLD
-	/* these may not be disabled */
-	mask |= ExposureMask | StructureNotifyMask |
-		KeyPressMask | KeyReleaseMask |
-		EnterWindowMask | LeaveWindowMask |
-		ButtonPressMask | ButtonMotionMask | ButtonReleaseMask;
-#endif
-
-	ENTER_XLIB();
-	XSelectInput(myDpy, __WindowVal(aWindowId), mask);
-	LEAVE_XLIB();
-	RETURN ( self );
+        /* these may not be disabled */
+        mask |= ExposureMask | StructureNotifyMask |
+                KeyPressMask | KeyReleaseMask |
+                EnterWindowMask | LeaveWindowMask |
+                ButtonPressMask | ButtonMotionMask | ButtonReleaseMask;
+#endif
+
+        ENTER_XLIB();
+        XSelectInput(myDpy, __WindowVal(aWindowId), mask);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -6143,19 +6154,19 @@
     "forward a button-press event for some view"
 
     aView isNil ifTrue:[
-	"/ event arrived, after I destroyed it myself
-	^ self
+        "/ event arrived, after I destroyed it myself
+        ^ self
     ].
     button == 1 ifTrue:[
-	activateOnClick == true ifTrue:[
-	    "/ dont raise above an active popup view.
-	    (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
-		aView topView raise.
+        activateOnClick == true ifTrue:[
+            "/ dont raise above an active popup view.
+            (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
+                aView topView raise.
 "/            ] ifFalse:[
 "/                activeKeyboardGrab printCR.
 "/                activePointerGrab printCR.
-	    ]
-	].
+            ]
+        ].
     ].
     super buttonPress:button x:x y:y view:aView
 
@@ -6198,89 +6209,89 @@
      && (eventMask == nil || __isInteger(eventMask))
      && (__isExternalAddress(windowID) || __isInteger(windowID))
      && (__isExternalAddress(targetWindowID) || __isInteger(targetWindowID))) {
-	Display *dpy = myDpy;
-	XEvent ev;
-	Status result;
-	Window targetWindow;
-
-	if (__isInteger(d1)) {
-	    ev.xclient.data.l[0] = __longIntVal(d1);
-	} else {
-	    if (__isExternalAddress(d1)) {
-		ev.xclient.data.l[0] = (INT)__externalAddressVal(d1);
-	    } else {
-		ev.xclient.data.l[0] = 0;
-	    }
-	}
-	if (__isInteger(d2)) {
-	    ev.xclient.data.l[1] = __longIntVal(d2);
-	} else {
-	    if (__isExternalAddress(d2)) {
-		ev.xclient.data.l[1] = (INT)__externalAddressVal(d2);
-	    } else {
-		ev.xclient.data.l[1] = 0;
-	    }
-	}
-	if (__isInteger(d3)) {
-	    ev.xclient.data.l[2] = __longIntVal(d3);
-	} else {
-	    if (__isExternalAddress(d3)) {
-		ev.xclient.data.l[2] = (INT)__externalAddressVal(d3);
-	    } else {
-		ev.xclient.data.l[2] = 0;
-	    }
-	}
-	if (__isInteger(d4)) {
-	    ev.xclient.data.l[3] = __longIntVal(d4);
-	} else {
-	    if (__isExternalAddress(d4)) {
-		ev.xclient.data.l[3] = (INT)__externalAddressVal(d4);
-	    } else {
-		ev.xclient.data.l[3] = 0;
-	    }
-	}
-	if (__isInteger(d5)) {
-	    ev.xclient.data.l[4] = __longIntVal(d5);
-	} else {
-	    if (__isExternalAddress(d5)) {
-		ev.xclient.data.l[4] = (INT)__externalAddressVal(d5);
-	    } else {
-		ev.xclient.data.l[4] = 0;
-	    }
-	}
-
-	if (__isExternalAddress(windowID)) {
-	    ev.xclient.window = __WindowVal(windowID);
-	} else {
-	    ev.xclient.window = (Window)__longIntVal(windowID);
-	}
-
-	if (__isExternalAddress(targetWindowID)) {
-	    targetWindow = __WindowVal(targetWindowID);
-	} else {
-	    targetWindow = (Window)__longIntVal(targetWindowID);
-	}
-
-	ev.xclient.type              = ClientMessage;
-	ev.xclient.display           = dpy;
-	ev.xclient.message_type      = __longIntVal(msgType);
-	ev.xclient.format            = __longIntVal(msgFormat);
-
-	if (eventMask == nil) {
-	    __eventMask = NoEventMask;
-	} else {
-	    __eventMask = __longIntVal(eventMask);
-	}
-
-	ENTER_XLIB();
-	result = XSendEvent(dpy, targetWindow, (propagate == true ? True : False), __eventMask , &ev);
-	LEAVE_XLIB();
-
-	if ((result == BadValue) || (result == BadWindow)) {
-	    DPRINTF(("bad status in sendClientEvent\n"));
-	    RETURN ( false )
-	}
-	RETURN (true)
+        Display *dpy = myDpy;
+        XEvent ev;
+        Status result;
+        Window targetWindow;
+
+        if (__isInteger(d1)) {
+            ev.xclient.data.l[0] = __longIntVal(d1);
+        } else {
+            if (__isExternalAddress(d1)) {
+                ev.xclient.data.l[0] = (INT)__externalAddressVal(d1);
+            } else {
+                ev.xclient.data.l[0] = 0;
+            }
+        }
+        if (__isInteger(d2)) {
+            ev.xclient.data.l[1] = __longIntVal(d2);
+        } else {
+            if (__isExternalAddress(d2)) {
+                ev.xclient.data.l[1] = (INT)__externalAddressVal(d2);
+            } else {
+                ev.xclient.data.l[1] = 0;
+            }
+        }
+        if (__isInteger(d3)) {
+            ev.xclient.data.l[2] = __longIntVal(d3);
+        } else {
+            if (__isExternalAddress(d3)) {
+                ev.xclient.data.l[2] = (INT)__externalAddressVal(d3);
+            } else {
+                ev.xclient.data.l[2] = 0;
+            }
+        }
+        if (__isInteger(d4)) {
+            ev.xclient.data.l[3] = __longIntVal(d4);
+        } else {
+            if (__isExternalAddress(d4)) {
+                ev.xclient.data.l[3] = (INT)__externalAddressVal(d4);
+            } else {
+                ev.xclient.data.l[3] = 0;
+            }
+        }
+        if (__isInteger(d5)) {
+            ev.xclient.data.l[4] = __longIntVal(d5);
+        } else {
+            if (__isExternalAddress(d5)) {
+                ev.xclient.data.l[4] = (INT)__externalAddressVal(d5);
+            } else {
+                ev.xclient.data.l[4] = 0;
+            }
+        }
+
+        if (__isExternalAddress(windowID)) {
+            ev.xclient.window = __WindowVal(windowID);
+        } else {
+            ev.xclient.window = (Window)__longIntVal(windowID);
+        }
+
+        if (__isExternalAddress(targetWindowID)) {
+            targetWindow = __WindowVal(targetWindowID);
+        } else {
+            targetWindow = (Window)__longIntVal(targetWindowID);
+        }
+
+        ev.xclient.type              = ClientMessage;
+        ev.xclient.display           = dpy;
+        ev.xclient.message_type      = __longIntVal(msgType);
+        ev.xclient.format            = __longIntVal(msgFormat);
+
+        if (eventMask == nil) {
+            __eventMask = NoEventMask;
+        } else {
+            __eventMask = __longIntVal(eventMask);
+        }
+
+        ENTER_XLIB();
+        result = XSendEvent(dpy, targetWindow, (propagate == true ? True : False), __eventMask , &ev);
+        LEAVE_XLIB();
+
+        if ((result == BadValue) || (result == BadWindow)) {
+            DPRINTF(("bad status in sendClientEvent\n"));
+            RETURN ( false )
+        }
+        RETURN (true)
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -6303,106 +6314,106 @@
     int state;
 
     if (__isSmallInteger(stateMask)) {
-	state = __intVal(stateMask);
+        state = __intVal(stateMask);
     } else {
-	state = 0;
+        state = 0;
     }
 
     if (ISCONNECTED
      && __isSmallInteger(xPos) && __isSmallInteger(yPos)
      && (__isSmallInteger(keySymCodeOrButtonNr) || __isStringLike(keySymCodeOrButtonNr))
      && (__isExternalAddress(targetId) || __isInteger(targetId))) {
-	Display *dpy = myDpy;
-
-	XEvent ev;
-	Window target;
-	Status result;
-	KeySym keySym, *syms;
-	int screen = __intVal(__INST(screen));
-	char s[2];
-	int nSyms;
-
-	if ((typeSymbol == @symbol(keyPress))
-	 || (typeSymbol == @symbol(keyRelease))) {
-	    if (__isStringLike(keySymCodeOrButtonNr)) {
-		keySym = XStringToKeysym(__stringVal(keySymCodeOrButtonNr));
-	    } else {
-		if (__isCharacter(keySymCodeOrButtonNr)) {
-		    s[0] = __intVal(__characterVal(keySymCodeOrButtonNr));
-		    s[1] = '\0';
-		    keySym = XStringToKeysym(s);
-		} else {
-		    keySym = (KeySym) __intVal(keySymCodeOrButtonNr);
-		}
-	    }
-	    ev.xkey.keycode = XKeysymToKeycode(dpy, keySym);
-
-	    if (stateMask == nil) {
-		/*
-		 * get the modifier from the keySym
-		 */
-		nSyms = 0;
-		syms = XGetKeyboardMapping(dpy, ev.xkey.keycode, 1, &nSyms);
-		if (syms) {
-		    int i;
-
-		    for (i=0; i<nSyms; i++) {
-			if (syms[i] == keySym) {
+        Display *dpy = myDpy;
+
+        XEvent ev;
+        Window target;
+        Status result;
+        KeySym keySym, *syms;
+        int screen = __intVal(__INST(screen));
+        char s[2];
+        int nSyms;
+
+        if ((typeSymbol == @symbol(keyPress))
+         || (typeSymbol == @symbol(keyRelease))) {
+            if (__isStringLike(keySymCodeOrButtonNr)) {
+                keySym = XStringToKeysym(__stringVal(keySymCodeOrButtonNr));
+            } else {
+                if (__isCharacter(keySymCodeOrButtonNr)) {
+                    s[0] = __intVal(__characterVal(keySymCodeOrButtonNr));
+                    s[1] = '\0';
+                    keySym = XStringToKeysym(s);
+                } else {
+                    keySym = (KeySym) __intVal(keySymCodeOrButtonNr);
+                }
+            }
+            ev.xkey.keycode = XKeysymToKeycode(dpy, keySym);
+
+            if (stateMask == nil) {
+                /*
+                 * get the modifier from the keySym
+                 */
+                nSyms = 0;
+                syms = XGetKeyboardMapping(dpy, ev.xkey.keycode, 1, &nSyms);
+                if (syms) {
+                    int i;
+
+                    for (i=0; i<nSyms; i++) {
+                        if (syms[i] == keySym) {
 #ifdef MODIFIERDEBUG
-			    console_printf("modifier-index is %d\n", i);
-#endif
-			    if (i) state = (1 << (i-1));
-			    break;
-			}
-		    }
-		    XFree(syms);
-		}
-	    }
-	} else {
-	    if ((typeSymbol == @symbol(buttonPress))
-	     || (typeSymbol == @symbol(buttonRelease))) {
-		if (__isSmallInteger(keySymCodeOrButtonNr)) {
-		    ev.xbutton.button = __intVal(keySymCodeOrButtonNr);
-		} else {
-		    ev.xbutton.button = 1;
-		}
-	    } else {
-		DPRINTF(("invalid sendEvent typeSymbol\n"));
-		RETURN (false);
-	    }
-	}
-
-	if (typeSymbol == @symbol(keyPress))
-	    ev.xany.type = KeyPress;
-	else if (typeSymbol == @symbol(keyRelease))
-	    ev.xany.type = KeyRelease;
-	else if (typeSymbol == @symbol(buttonPress))
-	    ev.xany.type = ButtonPress;
-	else if (typeSymbol == @symbol(buttonRelease))
-	    ev.xany.type = ButtonRelease;
-
-	if (__isExternalAddress(targetId)) {
-	    target = __WindowVal(targetId);
-	} else {
-	    target = (Window) __longIntVal(targetId);
-	}
-	ev.xkey.window = target;
-	ev.xkey.same_screen = 1;
-	ev.xkey.subwindow = 0;
-	ev.xkey.root = RootWindow(dpy, screen);
-	ev.xkey.x = __intVal(xPos);
-	ev.xkey.y = __intVal(yPos);
-	ev.xkey.state = state;
-	ev.xkey.time = CurrentTime;
-
-	ENTER_XLIB();
-	result = XSendEvent(dpy, target, False, 0 , &ev);
-	LEAVE_XLIB();
-	if ((result == BadValue) || (result == BadWindow)) {
-	    DPRINTF(("bad status\n"));
-	    RETURN ( false )
-	}
-	RETURN (true)
+                            console_printf("modifier-index is %d\n", i);
+#endif
+                            if (i) state = (1 << (i-1));
+                            break;
+                        }
+                    }
+                    XFree(syms);
+                }
+            }
+        } else {
+            if ((typeSymbol == @symbol(buttonPress))
+             || (typeSymbol == @symbol(buttonRelease))) {
+                if (__isSmallInteger(keySymCodeOrButtonNr)) {
+                    ev.xbutton.button = __intVal(keySymCodeOrButtonNr);
+                } else {
+                    ev.xbutton.button = 1;
+                }
+            } else {
+                DPRINTF(("invalid sendEvent typeSymbol\n"));
+                RETURN (false);
+            }
+        }
+
+        if (typeSymbol == @symbol(keyPress))
+            ev.xany.type = KeyPress;
+        else if (typeSymbol == @symbol(keyRelease))
+            ev.xany.type = KeyRelease;
+        else if (typeSymbol == @symbol(buttonPress))
+            ev.xany.type = ButtonPress;
+        else if (typeSymbol == @symbol(buttonRelease))
+            ev.xany.type = ButtonRelease;
+
+        if (__isExternalAddress(targetId)) {
+            target = __WindowVal(targetId);
+        } else {
+            target = (Window) __longIntVal(targetId);
+        }
+        ev.xkey.window = target;
+        ev.xkey.same_screen = 1;
+        ev.xkey.subwindow = 0;
+        ev.xkey.root = RootWindow(dpy, screen);
+        ev.xkey.x = __intVal(xPos);
+        ev.xkey.y = __intVal(yPos);
+        ev.xkey.state = state;
+        ev.xkey.time = CurrentTime;
+
+        ENTER_XLIB();
+        result = XSendEvent(dpy, target, False, 0 , &ev);
+        LEAVE_XLIB();
+        if ((result == BadValue) || (result == BadWindow)) {
+            DPRINTF(("bad status\n"));
+            RETURN ( false )
+        }
+        RETURN (true)
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -6426,15 +6437,15 @@
     if (ISCONNECTED
      && __isStringLike(aFontName)) {
 
-	ENTER_XLIB();
-	newFont = XLoadQueryFont(myDpy, (char *)__stringVal(aFontName));
-	LEAVE_XLIB();
+        ENTER_XLIB();
+        newFont = XLoadQueryFont(myDpy, (char *)__stringVal(aFontName));
+        LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	if (newFont)
-	    __cnt_font++;
-#endif
-
-	RETURN ( newFont ? __MKEXTERNALADDRESS(newFont) : nil );
+        if (newFont)
+            __cnt_font++;
+#endif
+
+        RETURN ( newFont ? __MKEXTERNALADDRESS(newFont) : nil );
     }
 %}.
     "/ --- disabled due to UNLIMITEDSTACK -- self primitiveFailedOrClosedConnection.
@@ -6454,38 +6465,38 @@
     aString isNil ifTrue:[^ false].
     fields := aString asCollectionOfSubstringsSeparatedBy:$-.
     fields size == 3 ifTrue:[
-	"take care of old font names: family-style-size"
-	family := fields at:1.
-	style := fields at:2.
-	size := Number readFromString:(fields at:3) onError:[^ false].
+        "take care of old font names: family-style-size"
+        family := fields at:1.
+        style := fields at:2.
+        size := Number readFromString:(fields at:3) onError:[^ false].
     ] ifFalse:[fields size == 2 ifTrue:[
-	"take care of old font names: family-size"
-	family := fields at:1.
-	size := Number readFromString:(fields at:2) onError:[^ false].
+        "take care of old font names: family-size"
+        family := fields at:1.
+        size := Number readFromString:(fields at:2) onError:[^ false].
     ] ifFalse:[fields size >= 15 ifTrue:[
-	family := fields at:3.
-	face := fields at:4.
-	style := fields at:5.
-	style = 'o' ifTrue:[
-	    style := 'oblique'
-	] ifFalse:[style = 'i' ifTrue:[
-	     style := 'italic'
-	] ifFalse:[style = 'r' ifTrue:[
-	     style := 'roman'
-	]]].
-	moreStyle := fields at:6.
-	(moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
-	    style := style, '-', moreStyle.
-	].
-	fheight := fields at:8.
-	size := (Number readFromString:(fields at:9) onError:[^ false]) / 10.
-	resX := fields at:10.
-	resY := fields at:11.
-	registry := fields at:14.
-	encoding := fields at:15.
-	coding := registry , '-' , encoding.
+        family := fields at:3.
+        face := fields at:4.
+        style := fields at:5.
+        style = 'o' ifTrue:[
+            style := 'oblique'
+        ] ifFalse:[style = 'i' ifTrue:[
+             style := 'italic'
+        ] ifFalse:[style = 'r' ifTrue:[
+             style := 'roman'
+        ]]].
+        moreStyle := fields at:6.
+        (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
+            style := style, '-', moreStyle.
+        ].
+        fheight := fields at:8.
+        size := (Number readFromString:(fields at:9) onError:[^ false]) / 10.
+        resX := fields at:10.
+        resY := fields at:11.
+        registry := fields at:14.
+        encoding := fields at:15.
+        coding := registry , '-' , encoding.
     ] ifFalse:[
-	^ false
+        ^ false
     ]]].
     aBlock value:family value:face value:style value:size value:coding.
     ^ true
@@ -6530,166 +6541,166 @@
     OBJ *resultArray;
 
     if (ISCONNECTED
-	 && __bothSmallInteger(index1, index2)
-	 && __isExternalAddress(aFontId)
-	 && __isNonNilObject(aString)) {
-	int lMax = __intVal(@global(MaxStringLength));
-	f = __FontVal(aFontId);
-	if (! f) goto fail;
-
-	if (__isArray(anArray) && __arraySize(anArray) > 0) {
-	    resultArray = __arrayVal(anArray);
-	} else {
-	    resultArray = 0;
-	}
-
-	i1 = __intVal(index1) - 1;
-
-	if (i1 >= 0) {
-	    OBJ cls;
-
-	    i2 = __intVal(index2) - 1;
-	    if (i2 < i1) {
-		RETURN ( __MKSMALLINT(0) );
-	    }
-
-	    cp = (char *) __stringVal(aString);
-	    l = i2 - i1 + 1;
-
-	    if (__isStringLike(aString)) {
-		n = __stringSize(aString);
-		if (i2 >= n) goto fail;
-		cp += i1;
-		len = XTextExtents(f, cp, l,
-					&directionReturn, &fontAscentReturn, &fontDescentReturn,
-					&overAllReturn);
-	    } else {
-		cls = __qClass(aString);
-		nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-		cp += nInstBytes;
-		n = __byteArraySize(aString) - nInstBytes;
-
-		if (__isBytes(aString)) {
-		    if (i2 >= n) goto fail;
-
-		    cp += i1;
-		    len = XTextExtents(f, cp, l,
-					    &directionReturn, &fontAscentReturn, &fontDescentReturn,
-					    &overAllReturn);
-		} else  if (__isWords(aString)) { /* TWOBYTESTRINGS */
-		    union {
-			char b[2];
-			unsigned short s;
-		    } u;
-		    int i;
-		    XChar2b *cp2 = (XChar2b *)0;
-		    int mustFree = 0;
-
-		    n = n / 2;
-		    if (i2 >= n) goto fail;
-
-		    cp += (i1 * 2);
-		    if (l > lMax) l = lMax;
-
-		    /*
-		     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
-		     * X expects them MSB first
-		     * convert as required
-		     */
-
-		    u.s = 0x1234;
-		    if (u.b[0] != 0x12) {
-			if (l <= NLOCALBUFFER) {
-			    cp2 = xlatebuffer;
-			} else {
-			    cp2 = (XChar2b *)(malloc(l * 2));
-			    mustFree = 1;
-			}
-			for (i=0; i<l; i++) {
-			    cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
-			    cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
-			}
-			cp = (char *) cp2;
-		    }
-
-		    len = XTextExtents16(f, (XChar2b *)cp, l,
-					    &directionReturn, &fontAscentReturn, &fontDescentReturn,
-					    &overAllReturn);
-
-		    if (mustFree) {
-			free(cp2);
-		    }
-		} else if (__isLongs(aString)) { /* FOURBYTESTRINGS */
-		    union {
-			char b[2];
-			unsigned short s;
-		    } u;
-		    int i;
-		    XChar2b *cp2 = (XChar2b *)0;
-		    int mustFree = 0;
-
-		    n = n / 4;
-		    if (i2 >= n) goto fail;
-
-		    cp += (i1 * 4);
-		    if (l > lMax) l = lMax;
-
-		    /*
-		     * For now: X does not support 32bit characters without the new 32Unicode extensions.
-		     * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
-		     */
-		    if (l <= NLOCALBUFFER) {
-			cp2 = xlatebuffer;
-		    } else {
-			cp2 = (XChar2b *)(malloc(l * 2));
-			mustFree = 1;
-		    }
-		    for (i=0; i<l; i++) {
-			int codePoint;
-
-			codePoint = ((unsigned int32 *)cp)[i];
-			if (codePoint > 0xFFFF) {
-			    codePoint = 0xFFFF;
-			}
-			cp2[i].byte1 = codePoint & 0xFF;
-			cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
-		    }
-		    cp = (char *) cp2;
-
-		    len = XTextExtents16(f, (XChar2b *)cp, l,
-					    &directionReturn, &fontAscentReturn, &fontDescentReturn,
-					    &overAllReturn);
-		    if (mustFree) {
-			free(cp2);
-		    }
-		} else
-		    goto fail;      /*unknown string class */
-	    }
-	    if (resultArray) {
-		switch (__arraySize(anArray)) {
-		default:
-		case 8:
-		    resultArray[7] = __MKSMALLINT(directionReturn);
-		case 7:
-		    resultArray[6] = __MKSMALLINT(fontDescentReturn);
-		case 6:
-		    resultArray[5] = __MKSMALLINT(fontAscentReturn);
-		case 5:
-		    resultArray[4] = __MKSMALLINT(overAllReturn.descent);
-		case 4:
-		    resultArray[3] = __MKSMALLINT(overAllReturn.ascent);
-		case 3:
-		    resultArray[2] = __MKSMALLINT(overAllReturn.width);
-		case 2:
-		    resultArray[1] = __MKSMALLINT(overAllReturn.rbearing);
-		case 1:
-		    resultArray[0] = __MKSMALLINT(overAllReturn.lbearing);
-		case 0:
-		    break;
-		}
-	    }
-	    RETURN ( __MKSMALLINT(overAllReturn.width) );
-	}
+         && __bothSmallInteger(index1, index2)
+         && __isExternalAddress(aFontId)
+         && __isNonNilObject(aString)) {
+        int lMax = __intVal(@global(MaxStringLength));
+        f = __FontVal(aFontId);
+        if (! f) goto fail;
+
+        if (__isArray(anArray) && __arraySize(anArray) > 0) {
+            resultArray = __arrayVal(anArray);
+        } else {
+            resultArray = 0;
+        }
+
+        i1 = __intVal(index1) - 1;
+
+        if (i1 >= 0) {
+            OBJ cls;
+
+            i2 = __intVal(index2) - 1;
+            if (i2 < i1) {
+                RETURN ( __MKSMALLINT(0) );
+            }
+
+            cp = (char *) __stringVal(aString);
+            l = i2 - i1 + 1;
+
+            if (__isStringLike(aString)) {
+                n = __stringSize(aString);
+                if (i2 >= n) goto fail;
+                cp += i1;
+                len = XTextExtents(f, cp, l,
+                                        &directionReturn, &fontAscentReturn, &fontDescentReturn,
+                                        &overAllReturn);
+            } else {
+                cls = __qClass(aString);
+                nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+                cp += nInstBytes;
+                n = __byteArraySize(aString) - nInstBytes;
+
+                if (__isBytes(aString)) {
+                    if (i2 >= n) goto fail;
+
+                    cp += i1;
+                    len = XTextExtents(f, cp, l,
+                                            &directionReturn, &fontAscentReturn, &fontDescentReturn,
+                                            &overAllReturn);
+                } else  if (__isWords(aString)) { /* TWOBYTESTRINGS */
+                    union {
+                        char b[2];
+                        unsigned short s;
+                    } u;
+                    int i;
+                    XChar2b *cp2 = (XChar2b *)0;
+                    int mustFree = 0;
+
+                    n = n / 2;
+                    if (i2 >= n) goto fail;
+
+                    cp += (i1 * 2);
+                    if (l > lMax) l = lMax;
+
+                    /*
+                     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
+                     * X expects them MSB first
+                     * convert as required
+                     */
+
+                    u.s = 0x1234;
+                    if (u.b[0] != 0x12) {
+                        if (l <= NLOCALBUFFER) {
+                            cp2 = xlatebuffer;
+                        } else {
+                            cp2 = (XChar2b *)(malloc(l * 2));
+                            mustFree = 1;
+                        }
+                        for (i=0; i<l; i++) {
+                            cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+                            cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+                        }
+                        cp = (char *) cp2;
+                    }
+
+                    len = XTextExtents16(f, (XChar2b *)cp, l,
+                                            &directionReturn, &fontAscentReturn, &fontDescentReturn,
+                                            &overAllReturn);
+
+                    if (mustFree) {
+                        free(cp2);
+                    }
+                } else if (__isLongs(aString)) { /* FOURBYTESTRINGS */
+                    union {
+                        char b[2];
+                        unsigned short s;
+                    } u;
+                    int i;
+                    XChar2b *cp2 = (XChar2b *)0;
+                    int mustFree = 0;
+
+                    n = n / 4;
+                    if (i2 >= n) goto fail;
+
+                    cp += (i1 * 4);
+                    if (l > lMax) l = lMax;
+
+                    /*
+                     * For now: X does not support 32bit characters without the new 32Unicode extensions.
+                     * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
+                     */
+                    if (l <= NLOCALBUFFER) {
+                        cp2 = xlatebuffer;
+                    } else {
+                        cp2 = (XChar2b *)(malloc(l * 2));
+                        mustFree = 1;
+                    }
+                    for (i=0; i<l; i++) {
+                        int codePoint;
+
+                        codePoint = ((unsigned int32 *)cp)[i];
+                        if (codePoint > 0xFFFF) {
+                            codePoint = 0xFFFF;
+                        }
+                        cp2[i].byte1 = codePoint & 0xFF;
+                        cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
+                    }
+                    cp = (char *) cp2;
+
+                    len = XTextExtents16(f, (XChar2b *)cp, l,
+                                            &directionReturn, &fontAscentReturn, &fontDescentReturn,
+                                            &overAllReturn);
+                    if (mustFree) {
+                        free(cp2);
+                    }
+                } else
+                    goto fail;      /*unknown string class */
+            }
+            if (resultArray) {
+                switch (__arraySize(anArray)) {
+                default:
+                case 8:
+                    resultArray[7] = __MKSMALLINT(directionReturn);
+                case 7:
+                    resultArray[6] = __MKSMALLINT(fontDescentReturn);
+                case 6:
+                    resultArray[5] = __MKSMALLINT(fontAscentReturn);
+                case 5:
+                    resultArray[4] = __MKSMALLINT(overAllReturn.descent);
+                case 4:
+                    resultArray[3] = __MKSMALLINT(overAllReturn.ascent);
+                case 3:
+                    resultArray[2] = __MKSMALLINT(overAllReturn.width);
+                case 2:
+                    resultArray[1] = __MKSMALLINT(overAllReturn.rbearing);
+                case 1:
+                    resultArray[0] = __MKSMALLINT(overAllReturn.lbearing);
+                case 0:
+                    break;
+                }
+            }
+            RETURN ( __MKSMALLINT(overAllReturn.width) );
+        }
     }
 #undef NLOCALBUFFER
 fail: ;
@@ -6701,17 +6712,17 @@
       |result|
       result := Array new:8.
       Screen current
-	extentsOf:'hello World' from:1 to:11
-	inFont:(Screen current  getFontWithFoundry:'*'
-		    family:'courier new'
-		    weight:'medium'
-		    slant:'r'
-		    spacing:nil
-		    pixelSize:nil
-		    size:10
-		    encoding:#'iso10646-1'
-	    )
-	into:result.
+        extentsOf:'hello World' from:1 to:11
+        inFont:(Screen current  getFontWithFoundry:'*'
+                    family:'courier new'
+                    weight:'medium'
+                    slant:'r'
+                    spacing:nil
+                    pixelSize:nil
+                    size:10
+                    encoding:#'iso10646-1'
+            )
+        into:result.
 
       result
     "
@@ -6726,35 +6737,35 @@
     |enc charSets|
 
     (registry size ~~ 0) ifTrue:[
-	enc := registry asLowercase.
-	encoding size ~~ 0 ifTrue:[
-	   enc := enc, '-', encoding asLowercase.
-	].
-	enc := enc asSymbol.
+        enc := registry asLowercase.
+        encoding size ~~ 0 ifTrue:[
+           enc := enc, '-', encoding asLowercase.
+        ].
+        enc := enc asSymbol.
     ] ifFalse:[
-	(encoding size ~~ 0) ifTrue:[
-	    enc := encoding asLowercase asSymbol
-	] ifFalse:[
-	    charSets := charSetCollections.
-	    (charSets notEmptyOrNil) ifTrue:[
-		charSets := charSets asUppercase asCollectionOfWords.
-		(charSets includes:'ISO8859-1') ifTrue:[
-		    enc := #'iso8859-1'
-		] ifFalse:[
-		    (charSets includes:'ISO8859') ifTrue:[
-			enc := #iso8859
-		    ] ifFalse:[
-			(charSets includes:'ASCII') ifTrue:[
-			    enc := #ascii
-			] ifFalse:[
-			    (charSets includes:'ADOBE-STANDARD') ifTrue:[
-				enc := #iso8859
-			    ]
-			]
-		    ]
-		]
-	    ]
-	]
+        (encoding size ~~ 0) ifTrue:[
+            enc := encoding asLowercase asSymbol
+        ] ifFalse:[
+            charSets := charSetCollections.
+            (charSets notEmptyOrNil) ifTrue:[
+                charSets := charSets asUppercase asCollectionOfWords.
+                (charSets includes:'ISO8859-1') ifTrue:[
+                    enc := #'iso8859-1'
+                ] ifFalse:[
+                    (charSets includes:'ISO8859') ifTrue:[
+                        enc := #iso8859
+                    ] ifFalse:[
+                        (charSets includes:'ASCII') ifTrue:[
+                            enc := #ascii
+                        ] ifFalse:[
+                            (charSets includes:'ADOBE-STANDARD') ifTrue:[
+                                enc := #iso8859
+                            ]
+                        ]
+                    ]
+                ]
+            ]
+        ]
     ].
     ^  enc
 
@@ -6790,47 +6801,47 @@
     aFontNameString isNil ifTrue:[^ nil].
 
     Error handle:[:ex |
-	family := nil.
+        family := nil.
     ] do:[
-	fields := aFontNameString asCollectionOfSubstringsSeparatedBy:$-.
-	fields size == 3 ifTrue:[
-	    "take care of old font names: family-style-size"
-	    family := fields at:1.
-	    style := fields at:2.
-	    size := Number readFromString:(fields at:3).
-	] ifFalse:[
-	    fields size == 2 ifTrue:[
-		"take care of old font names: family-size"
-		family := fields at:1.
-		size := Number readFromString:(fields at:2).
-	    ] ifFalse:[
-		fields size >= 15 ifTrue:[
-		    family := fields at:3.
-		    face := fields at:4.
-		    style := fields at:5.
-		    style = 'o' ifTrue:[
-			style := 'oblique'
-		    ] ifFalse:[style = 'i' ifTrue:[
-			 style := 'italic'
-		    ] ifFalse:[style = 'r' ifTrue:[
-			 style := 'roman'
-		    ]]].
-		    moreStyle := fields at:6.
-		    (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
-			style := style, '-', moreStyle.
-		    ].
+        fields := aFontNameString asCollectionOfSubstringsSeparatedBy:$-.
+        fields size == 3 ifTrue:[
+            "take care of old font names: family-style-size"
+            family := fields at:1.
+            style := fields at:2.
+            size := Number readFromString:(fields at:3).
+        ] ifFalse:[
+            fields size == 2 ifTrue:[
+                "take care of old font names: family-size"
+                family := fields at:1.
+                size := Number readFromString:(fields at:2).
+            ] ifFalse:[
+                fields size >= 15 ifTrue:[
+                    family := fields at:3.
+                    face := fields at:4.
+                    style := fields at:5.
+                    style = 'o' ifTrue:[
+                        style := 'oblique'
+                    ] ifFalse:[style = 'i' ifTrue:[
+                         style := 'italic'
+                    ] ifFalse:[style = 'r' ifTrue:[
+                         style := 'roman'
+                    ]]].
+                    moreStyle := fields at:6.
+                    (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
+                        style := style, '-', moreStyle.
+                    ].
 "/                    pxlSize := (Integer readFromString:(fields at:8)).
-		    size := (Number readFromString:(fields at:9)) / 10.
-		    resX := fields at:10.
-		    resY := fields at:11.
-		    registry := fields at:14.
-		    encoding := fields at:15.
-		    coding := registry , '-' , encoding.
-		] ifFalse:[
-		    "/ very old name (such as cursor, 5x7 etc)
-		]
-	    ]
-	].
+                    size := (Number readFromString:(fields at:9)) / 10.
+                    resX := fields at:10.
+                    resY := fields at:11.
+                    registry := fields at:14.
+                    encoding := fields at:15.
+                    coding := registry , '-' , encoding.
+                ] ifFalse:[
+                    "/ very old name (such as cursor, 5x7 etc)
+                ]
+            ]
+        ].
     ].
 
     family notNil ifTrue:[
@@ -6856,36 +6867,36 @@
     int len;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(fontId)) {
-	    f = __FontVal(fontId);
-	    if (f) {
-		minCode = __MKUINT((f->min_byte1<<8) + f->min_char_or_byte2);
-		maxCode = __MKUINT((f->max_byte1<<8) + f->max_char_or_byte2);
-
-		if (f->direction == FontLeftToRight) {
-		    dir = @symbol(LeftToRight);
-		} else if (f->direction == FontRightToLeft) {
-		    dir = @symbol(RightToLeft);
-		}
-		avgAscent = __MKSMALLINT(f->ascent);
-		avgDescent = __MKSMALLINT(f->descent);
-		maxAscent = __MKSMALLINT(f->max_bounds.ascent);
-		maxDescent = __MKSMALLINT(f->max_bounds.descent);
-		minWidth = __MKSMALLINT(f->min_bounds.width);
-		maxWidth = __MKSMALLINT(f->max_bounds.width);
-
-		ENTER_XLIB();
-		len = XTextWidth(f, "n", 1);
-		LEAVE_XLIB();
-
-		avgWidth = __MKSMALLINT( len );
-	    }
-	}
+        if (__isExternalAddress(fontId)) {
+            f = __FontVal(fontId);
+            if (f) {
+                minCode = __MKUINT((f->min_byte1<<8) + f->min_char_or_byte2);
+                maxCode = __MKUINT((f->max_byte1<<8) + f->max_char_or_byte2);
+
+                if (f->direction == FontLeftToRight) {
+                    dir = @symbol(LeftToRight);
+                } else if (f->direction == FontRightToLeft) {
+                    dir = @symbol(RightToLeft);
+                }
+                avgAscent = __MKSMALLINT(f->ascent);
+                avgDescent = __MKSMALLINT(f->descent);
+                maxAscent = __MKSMALLINT(f->max_bounds.ascent);
+                maxDescent = __MKSMALLINT(f->max_bounds.descent);
+                minWidth = __MKSMALLINT(f->min_bounds.width);
+                maxWidth = __MKSMALLINT(f->max_bounds.width);
+
+                ENTER_XLIB();
+                len = XTextWidth(f, "n", 1);
+                LEAVE_XLIB();
+
+                avgWidth = __MKSMALLINT( len );
+            }
+        }
     }
 %}.
     avgAscent == nil ifTrue:[
-	self primitiveFailedOrClosedConnection.
-	^ nil
+        self primitiveFailedOrClosedConnection.
+        ^ nil
     ].
 
     "DingBats font returns 0 for maxAscent/maxDescent"
@@ -6928,8 +6939,8 @@
 
     "
      Screen current
-	fontProperties:#(#'PIXEL_SIZE' #'POINT_SIZE' RESOLUTION notExistant)
-	of:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
+        fontProperties:#(#'PIXEL_SIZE' #'POINT_SIZE' RESOLUTION notExistant)
+        of:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
     "
 !
 
@@ -6950,20 +6961,20 @@
     OBJ x;
 
     if (__isExternalAddress(aFontId)) {
-	f = __FontVal(aFontId);
-	if (f && (prop = f->properties) != 0) {
-	    n = f->n_properties;
-	    propsArray = __ARRAY_NEW_INT(n*2);
-	    for (i = 0; n; n--, prop++) {
-		x = __MKUINT(prop->name); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
-		x = __MKUINT(prop->card32); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
-	    }
-	}
+        f = __FontVal(aFontId);
+        if (f && (prop = f->properties) != 0) {
+            n = f->n_properties;
+            propsArray = __ARRAY_NEW_INT(n*2);
+            for (i = 0; n; n--, prop++) {
+                x = __MKUINT(prop->name); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
+                x = __MKUINT(prop->card32); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
+            }
+        }
     }
 %}.
     result := Dictionary new.
     propsArray notNil ifTrue:[
-	propsArray pairWiseDo:[:n :v | result at:(self atomName:n) put:v].
+        propsArray pairWiseDo:[:n :v | result at:(self atomName:n) put:v].
     ].
     ^ result
 
@@ -6974,7 +6985,7 @@
      |d|
      d := Dictionary new.
      (Screen current fontPropertiesOf:(Screen current getDefaultFontWithEncoding:#'iso10646-1')) keysAndValuesDo:[:name :value|
-	  d at:name put:((Screen current atomName:value) ? value)
+          d at:name put:((Screen current atomName:value) ? value)
      ].
      d
     "
@@ -6991,11 +7002,11 @@
     resX := props at:1.
     resY := props at:2.
     (resX notNil and:[resY notNil]) ifTrue:[
-	^ resX @ resY
+        ^ resX @ resY
     ].
     res := props at:3.
     res notNil ifTrue:[
-	^ res @ res
+        ^ res @ res
     ].
     ^ self resolution
 
@@ -7013,15 +7024,15 @@
 
     props := self fontPropertiesOf:aFontId.
     #('FONT' 'FONT_NAME' 'FULL_NAME' 'FULLNAME' ) do:[:try |
-	|fullNameID|
-
-	fullNameID := props at:try ifAbsent:nil.
-	fullNameID notNil ifTrue:[
-	    fullName := self atomName:fullNameID.
-	    fullName notEmptyOrNil ifTrue:[
-		^ fullName
-	    ].
-	]
+        |fullNameID|
+
+        fullNameID := props at:try ifAbsent:nil.
+        fullNameID notNil ifTrue:[
+            fullName := self atomName:fullNameID.
+            fullName notEmptyOrNil ifTrue:[
+                ^ fullName
+            ].
+        ]
     ].
 
     ^ nil.
@@ -7045,36 +7056,36 @@
     int i;
 
     if (ISCONNECTED) {
-	if (__isStringLike(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 (__isStringLike(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
@@ -7092,7 +7103,7 @@
 
     id := self createFontFor:'-misc-fixed-*-*-*-*-*-*-*-*-*-*-', encoding.
     id isNil ifTrue:[
-	id := self createFontFor:'fixed'
+        id := self createFontFor:'fixed'
     ].
     ^ id.
 
@@ -7102,7 +7113,7 @@
 !
 
 getFontWithFamily:familyString face:faceString
-	    style:styleArgString size:sizeArgOrNil sizeUnit:sizeUnit encoding:encoding
+            style:styleArgString size:sizeArgOrNil sizeUnit:sizeUnit encoding:encoding
 
     "try to get the specified font, if not available, try next smaller
      font. Access to X-fonts by name is possible, by passing the X font name
@@ -7115,28 +7126,28 @@
     styleString := styleArgString.
 
     sizeArgOrNil notNil ifTrue:[
-	roundedSize := sizeArgOrNil rounded asInteger.
-	sizeUnit == #px ifTrue:[
-	    pixelSize := roundedSize.
-	] ifFalse:[
-	    pointSize := roundedSize.
-	].
+        roundedSize := sizeArgOrNil rounded asInteger.
+        sizeUnit == #px ifTrue:[
+            pixelSize := roundedSize.
+        ] ifFalse:[
+            pointSize := roundedSize.
+        ].
     ].
 
     "special: if face is nil, allow access to X-fonts"
     faceString isNil ifTrue:[
-	roundedSize notNil ifTrue:[
-	    theName := familyString , '-' , roundedSize printString
-	] ifFalse:[
-	    theName := familyString
-	].
-	theName notNil ifTrue:[
-	    theId := self createFontFor:theName.
-	].
-	theId isNil ifTrue:[
-	    theId := self getDefaultFontWithEncoding:encoding
-	].
-	^ theId
+        roundedSize notNil ifTrue:[
+            theName := familyString , '-' , roundedSize printString
+        ] ifFalse:[
+            theName := familyString
+        ].
+        theName notNil ifTrue:[
+            theId := self createFontFor:theName.
+        ].
+        theId isNil ifTrue:[
+            theId := self getDefaultFontWithEncoding:encoding
+        ].
+        ^ theId
     ].
 
     "/ spacing other than 'normal' is contained as last component
@@ -7144,67 +7155,67 @@
 
     (styleString notNil
      and:[(styleString endsWith:'-narrow')
-	  or:[styleString endsWith:'-semicondensed']]) ifTrue:[
-	|i|
-	i := styleString lastIndexOf:$-.
-	spacing := styleString copyFrom:(i+1).
-	styleString := styleString copyTo:(i-1).
+          or:[styleString endsWith:'-semicondensed']]) ifTrue:[
+        |i|
+        i := styleString lastIndexOf:$-.
+        spacing := styleString copyFrom:(i+1).
+        styleString := styleString copyTo:(i-1).
     ] ifFalse:[
-	spacing := 'normal'.
+        spacing := 'normal'.
     ].
 
     xlatedStyle := styleString.
     xlatedStyle notNil ifTrue:[
-	xlatedStyle := xlatedStyle first asString
+        xlatedStyle := xlatedStyle first asString
     ].
 
     encoding isNil ifTrue:[
-	encodingMatch := '*-*'.
+        encodingMatch := '*-*'.
     ] ifFalse:[
-	idx := encoding indexOf:$-.
-	idx ~~ 0 ifTrue:[
-	    encodingMatch := encoding
-	] ifFalse:[
-	    encodingMatch := encoding , '-*'.
-	].
+        idx := encoding indexOf:$-.
+        idx ~~ 0 ifTrue:[
+            encodingMatch := encoding
+        ] ifFalse:[
+            encodingMatch := encoding , '-*'.
+        ].
     ].
 
     id := self
-	    getFontWithFoundry:'*'
-	    family:familyString asLowercase
-	    weight:faceString
-	    slant:xlatedStyle
-	    spacing:spacing
-	    pixelSize:pixelSize
-	    size:pointSize
-	    encoding:encodingMatch.
+            getFontWithFoundry:'*'
+            family:familyString asLowercase
+            weight:faceString
+            slant:xlatedStyle
+            spacing:spacing
+            pixelSize:pixelSize
+            size:pointSize
+            encoding:encodingMatch.
 
     id isNil ifTrue:[
-	(encodingMatch notNil and:[encodingMatch ~= '*']) ifTrue:[
-	    "/ too stupid: registries come in both cases
-	    "/ and X does not ignore case
-	    "/
-	    id := self
-		    getFontWithFoundry:'*'
-		    family:familyString asLowercase
-		    weight:faceString
-		    slant:xlatedStyle
-		    spacing:spacing
-		    pixelSize:nil
-		    size:roundedSize
-		    encoding:encodingMatch asUppercase.
-	    id isNil ifTrue:[
-		id := self
-			getFontWithFoundry:'*'
-			family:familyString asLowercase
-			weight:faceString
-			slant:xlatedStyle
-			spacing:spacing
-			pixelSize:nil
-			size:roundedSize
-			encoding:encodingMatch asLowercase.
-	    ]
-	]
+        (encodingMatch notNil and:[encodingMatch ~= '*']) ifTrue:[
+            "/ too stupid: registries come in both cases
+            "/ and X does not ignore case
+            "/
+            id := self
+                    getFontWithFoundry:'*'
+                    family:familyString asLowercase
+                    weight:faceString
+                    slant:xlatedStyle
+                    spacing:spacing
+                    pixelSize:nil
+                    size:roundedSize
+                    encoding:encodingMatch asUppercase.
+            id isNil ifTrue:[
+                id := self
+                        getFontWithFoundry:'*'
+                        family:familyString asLowercase
+                        weight:faceString
+                        slant:xlatedStyle
+                        spacing:spacing
+                        pixelSize:nil
+                        size:roundedSize
+                        encoding:encodingMatch asLowercase.
+            ]
+        ]
     ].
     ^ id
 
@@ -7213,8 +7224,8 @@
 !
 
 getFontWithFoundry:foundry family:family weight:weight
-	      slant:slant spacing:spc pixelSize:pSize size:size
-	      encoding:encoding
+              slant:slant spacing:spc pixelSize:pSize size:size
+              encoding:encoding
 
     "get the specified font, if not available, return nil.
      This is the new font creation method - all others will be changed to
@@ -7237,64 +7248,64 @@
 
     "this works only on 'Release >= 3' - X-servers"
     "name is:
-	-foundry-family    -weight -slant-
-	 sony    helvetica bold     r
-	 adobe   courier   medium   i
-	 msic    fixed              o
-	 ...     ...
+        -foundry-family    -weight -slant-
+         sony    helvetica bold     r
+         adobe   courier   medium   i
+         msic    fixed              o
+         ...     ...
     "
 
     size isNil ifTrue:[
-	sizeMatch := '*'
+        sizeMatch := '*'
     ] ifFalse:[
-	sizeMatch := size printString , '0'
+        sizeMatch := size printString , '0'
     ].
     foundry isNil ifTrue:[
-	foundryMatch := '*'
+        foundryMatch := '*'
     ] ifFalse:[
-	foundryMatch := foundry
+        foundryMatch := foundry
     ].
     family isNil ifTrue:[
-	familyMatch := '*'
+        familyMatch := '*'
     ] ifFalse:[
-	familyMatch := family
+        familyMatch := family
     ].
     weight isNil ifTrue:[
-	weightMatch := '*'
+        weightMatch := '*'
     ] ifFalse:[
-	weightMatch := weight
+        weightMatch := weight
     ].
     slant isNil ifTrue:[
-	slantMatch := '*'
+        slantMatch := '*'
     ] ifFalse:[
-	slantMatch := slant
+        slantMatch := slant
     ].
     spc isNil ifTrue:[
-	spcMatch := '*'
+        spcMatch := '*'
     ] ifFalse:[
-	spcMatch := spc
+        spcMatch := spc
     ].
     pSize isNil ifTrue:[
-	pSizeMatch := '*'
+        pSizeMatch := '*'
     ] ifFalse:[
-	pSizeMatch := pSize printString
+        pSizeMatch := pSize printString
     ].
     encoding isNil ifTrue:[
-	encodingMatch := '*'
+        encodingMatch := '*'
     ] ifFalse:[
-	encodingMatch := encoding
+        encodingMatch := encoding
     ].
 
     theName := ('-' , foundryMatch,
-		'-' , familyMatch,
-		'-' , weightMatch ,
-		'-' , slantMatch ,
-		'-' , spcMatch ,
-		'-*' ,
-		'-' , pSizeMatch ,
-		'-' , sizeMatch ,
-		'-*-*-*-*' ,
-		'-' , encodingMatch).
+                '-' , familyMatch,
+                '-' , weightMatch ,
+                '-' , slantMatch ,
+                '-' , spcMatch ,
+                '-*' ,
+                '-' , pSizeMatch ,
+                '-' , sizeMatch ,
+                '-*-*-*-*' ,
+                '-' , encodingMatch).
 
 "/  Transcript showCR:theName; endEntry.
 
@@ -7303,24 +7314,24 @@
 
     "
      Display
-	getFontWithFoundry:'*'
-	family:'courier'
-	weight:'medium'
-	slant:'r'
-	spacing:nil
-	pixelSize:nil
-	size:13
-	encoding:#'iso8859-1'.
+        getFontWithFoundry:'*'
+        family:'courier'
+        weight:'medium'
+        slant:'r'
+        spacing:nil
+        pixelSize:nil
+        size:13
+        encoding:#'iso8859-1'.
 
      Display
-	getFontWithFoundry:'*'
-	family:'courier'
-	weight:'medium'
-	slant:'r'
-	spacing:nil
-	pixelSize:nil
-	size:13
-	encoding:#'iso10646-1'
+        getFontWithFoundry:'*'
+        family:'courier'
+        weight:'medium'
+        slant:'r'
+        spacing:nil
+        pixelSize:nil
+        size:13
+        encoding:#'iso10646-1'
     "
 
     "Modified: 10.4.1997 / 19:15:44 / cg"
@@ -7335,20 +7346,20 @@
 
     "
       Screen current
-	heightOf:'hello world' from:1 to:10
-	inFont:(Screen current  getFontWithFoundry:'*'
-		    family:'courier new'
-		    weight:'medium'
-		    slant:'r'
-		    spacing:nil
-		    pixelSize:nil
-		    size:13
-		    encoding:#'iso10646-1'
-	    ).
+        heightOf:'hello world' from:1 to:10
+        inFont:(Screen current  getFontWithFoundry:'*'
+                    family:'courier new'
+                    weight:'medium'
+                    slant:'r'
+                    spacing:nil
+                    pixelSize:nil
+                    size:13
+                    encoding:#'iso10646-1'
+            ).
 
       Screen current
-	heightOf:'hello World gggÖÜ' from:1 to:15
-	inFont:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
+        heightOf:'hello World gggÖÜ' from:1 to:15
+        inFont:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
     "
 !
 
@@ -7361,13 +7372,13 @@
     |names|
 
     listOfXFonts isNil ifTrue:[
-	names := self getAvailableFontsMatching:'*'.
-	names isNil ifTrue:[
-	    "no names returned ..."
-	    ^ nil
-	].
-	listOfXFonts := names collect:[:aName | self fontDescriptionFromXFontName:aName].
-	listOfXFonts := FontDescription genericFonts, listOfXFonts.
+        names := self getAvailableFontsMatching:'*'.
+        names isNil ifTrue:[
+            "no names returned ..."
+            ^ nil
+        ].
+        listOfXFonts := names collect:[:aName | self fontDescriptionFromXFontName:aName].
+        listOfXFonts := FontDescription genericFonts, listOfXFonts.
     ].
     ^ listOfXFonts
 
@@ -7393,10 +7404,10 @@
 
     sizes := super pixelSizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter.
     (sizes notNil and:[sizes isEmpty or:[sizes includes:0]]) ifTrue:[
-	"special: in X11R5 and above, size 0 means:
-	 there are scaled versions in all sizes available"
-
-	^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
+        "special: in X11R5 and above, size 0 means:
+         there are scaled versions in all sizes available"
+
+        ^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
     ].
     ^ sizes
 
@@ -7417,21 +7428,21 @@
      * ignore closed connection
      */
     if (! ISCONNECTED) {
-	RETURN ( self );
+        RETURN ( self );
     }
 
     if (__isExternalAddress(aFontId)) {
-	f = __FontVal(aFontId);
-	if (f) {
-
-	    ENTER_XLIB();
-	    XFreeFont(myDpy, f);
-	    LEAVE_XLIB();
+        f = __FontVal(aFontId);
+        if (f) {
+
+            ENTER_XLIB();
+            XFreeFont(myDpy, f);
+            LEAVE_XLIB();
 #ifdef COUNT_RESOURCES
-	    __cnt_font--;
-#endif
-	}
-	RETURN ( self );
+            __cnt_font--;
+#endif
+        }
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -7446,10 +7457,10 @@
 
     sizes := super sizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter.
     (sizes notNil and:[sizes includes:0]) ifTrue:[
-	"special: in X11R5 and above, size 0 means:
-	 there are scaled versions in all sizes available"
-
-	^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
+        "special: in X11R5 and above, size 0 means:
+         there are scaled versions in all sizes available"
+
+        ^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
     ].
     ^ sizes
 
@@ -7476,185 +7487,185 @@
     XCharStruct overAllReturn;
 
     if (ISCONNECTED) {
-	if (__bothSmallInteger(index1, index2)
-	 && __isExternalAddress(aFontId)
-	 && __isNonNilObject(aString)) {
-	    int lMax = __intVal(@global(MaxStringLength));
-	    f = __FontVal(aFontId);
-	    if (! f) goto fail;
-
-	    i1 = __intVal(index1) - 1;
-
-	    if (i1 >= 0) {
-		OBJ cls;
-
-		i2 = __intVal(index2) - 1;
-		if (i2 < i1) {
-		    RETURN ( __MKSMALLINT(0) );
-		}
-
-		cp = (char *) __stringVal(aString);
-		l = i2 - i1 + 1;
-
-		if (__isStringLike(aString)) {
-		    n = __stringSize(aString);
-		    if (i2 < n) {
-			cp += i1;
+        if (__bothSmallInteger(index1, index2)
+         && __isExternalAddress(aFontId)
+         && __isNonNilObject(aString)) {
+            int lMax = __intVal(@global(MaxStringLength));
+            f = __FontVal(aFontId);
+            if (! f) goto fail;
+
+            i1 = __intVal(index1) - 1;
+
+            if (i1 >= 0) {
+                OBJ cls;
+
+                i2 = __intVal(index2) - 1;
+                if (i2 < i1) {
+                    RETURN ( __MKSMALLINT(0) );
+                }
+
+                cp = (char *) __stringVal(aString);
+                l = i2 - i1 + 1;
+
+                if (__isStringLike(aString)) {
+                    n = __stringSize(aString);
+                    if (i2 < n) {
+                        cp += i1;
 
 #if 1
-			len = XTextExtents(f, cp, l,
-						&directionReturn, &fontAscentReturn, &fontDescentReturn,
-						&overAllReturn);
-			//console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width);
-			RETURN ( __MKSMALLINT(overAllReturn.width) );
+                        len = XTextExtents(f, cp, l,
+                                                &directionReturn, &fontAscentReturn, &fontDescentReturn,
+                                                &overAllReturn);
+                        //console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width);
+                        RETURN ( __MKSMALLINT(overAllReturn.width) );
 #else
-			ENTER_XLIB();
-			len = XTextWidth(f, cp, l);
-			LEAVE_XLIB();
-			RETURN ( __MKSMALLINT(len) );
-#endif
-		    }
-		}
-
-		cls = __qClass(aString);
-		nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-		cp += nInstBytes;
-
-		if (__isBytes(aString)) {
-		    n = __byteArraySize(aString) - nInstBytes;
-		    if (i2 < n) {
-			cp += i1;
+                        ENTER_XLIB();
+                        len = XTextWidth(f, cp, l);
+                        LEAVE_XLIB();
+                        RETURN ( __MKSMALLINT(len) );
+#endif
+                    }
+                }
+
+                cls = __qClass(aString);
+                nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+                cp += nInstBytes;
+
+                if (__isBytes(aString)) {
+                    n = __byteArraySize(aString) - nInstBytes;
+                    if (i2 < n) {
+                        cp += i1;
 
 #if 1
-			len = XTextExtents(f, cp, l,
-						&directionReturn, &fontAscentReturn, &fontDescentReturn,
-						&overAllReturn);
-			RETURN ( __MKSMALLINT(overAllReturn.width) );
+                        len = XTextExtents(f, cp, l,
+                                                &directionReturn, &fontAscentReturn, &fontDescentReturn,
+                                                &overAllReturn);
+                        RETURN ( __MKSMALLINT(overAllReturn.width) );
 #else
-			ENTER_XLIB();
-			len = XTextWidth(f, cp, l);
-			LEAVE_XLIB();
-			RETURN ( __MKSMALLINT(len) );
-#endif
-		    }
-		}
-
-		/* TWOBYTESTRINGS */
-		if (__isWords(aString)) {
-		    n = (__byteArraySize(aString) - nInstBytes) / 2;
-
-		    if (i2 < n) {
-			union {
-			    char b[2];
-			    unsigned short s;
-			} u;
-			int i;
-			XChar2b *cp2 = (XChar2b *)0;
-			int mustFree = 0;
-
-			cp += (i1 * 2);
-			if (l > lMax) l = lMax;
-
-			/*
-			 * ST/X TwoByteStrings store the asciiValue in native byteOrder;
-			 * X expects them MSB first
-			 * convert as required
-			 */
-
-			u.s = 0x1234;
-			if (u.b[0] != 0x12) {
-			    if (l <= NLOCALBUFFER) {
-				cp2 = xlatebuffer;
-			    } else {
-				cp2 = (XChar2b *)(malloc(l * 2));
-				mustFree = 1;
-			    }
-			    for (i=0; i<l; i++) {
-				cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
-				cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
-			    }
-			    cp = (char *) cp2;
-			}
+                        ENTER_XLIB();
+                        len = XTextWidth(f, cp, l);
+                        LEAVE_XLIB();
+                        RETURN ( __MKSMALLINT(len) );
+#endif
+                    }
+                }
+
+                /* TWOBYTESTRINGS */
+                if (__isWords(aString)) {
+                    n = (__byteArraySize(aString) - nInstBytes) / 2;
+
+                    if (i2 < n) {
+                        union {
+                            char b[2];
+                            unsigned short s;
+                        } u;
+                        int i;
+                        XChar2b *cp2 = (XChar2b *)0;
+                        int mustFree = 0;
+
+                        cp += (i1 * 2);
+                        if (l > lMax) l = lMax;
+
+                        /*
+                         * ST/X TwoByteStrings store the asciiValue in native byteOrder;
+                         * X expects them MSB first
+                         * convert as required
+                         */
+
+                        u.s = 0x1234;
+                        if (u.b[0] != 0x12) {
+                            if (l <= NLOCALBUFFER) {
+                                cp2 = xlatebuffer;
+                            } else {
+                                cp2 = (XChar2b *)(malloc(l * 2));
+                                mustFree = 1;
+                            }
+                            for (i=0; i<l; i++) {
+                                cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+                                cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+                            }
+                            cp = (char *) cp2;
+                        }
 
 #if 1
-			len = XTextExtents16(f, (XChar2b *)cp, l,
-						&directionReturn, &fontAscentReturn, &fontDescentReturn,
-						&overAllReturn);
-			len = overAllReturn.width;
+                        len = XTextExtents16(f, (XChar2b *)cp, l,
+                                                &directionReturn, &fontAscentReturn, &fontDescentReturn,
+                                                &overAllReturn);
+                        len = overAllReturn.width;
 #else
-			ENTER_XLIB();
-			len = XTextWidth16(f, (XChar2b *)cp, l);
-			LEAVE_XLIB();
-#endif
-
-			if (mustFree) {
-			    free(cp2);
-			}
-
-			RETURN ( __MKSMALLINT(len) );
-		    }
-		}
-		/* FOURBYTESTRINGS */
-		if (__isLongs(aString)) {
-		    int i;
-		    XChar2b *cp2;
-		    int mustFree = 0;
-
-		    n = (__byteArraySize(aString) - nInstBytes) / 4;
-		    if (i2 < n) {
-			union {
-			    char b[2];
-			    unsigned short s;
-			} u;
-			int i;
-			XChar2b *cp2 = (XChar2b *)0;
-			int mustFree = 0;
-
-			cp += (i1 * 4);
-			if (l > lMax) l = lMax;
-
-			/*
-			 * For now: X does not support 32bit characters without the new 32Unicode extensions.
-			 * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
-			 */
-			if (l <= NLOCALBUFFER) {
-			    cp2 = xlatebuffer;
-			} else {
-			    cp2 = (XChar2b *)(malloc(l * 2));
-			    mustFree = 1;
-			}
-			for (i=0; i<l; i++) {
-			    int codePoint;
-
-			    codePoint = ((unsigned int32 *)cp)[i];
-			    if (codePoint > 0xFFFF) {
-				codePoint = 0xFFFF;
-			    }
-			    cp2[i].byte1 = codePoint & 0xFF;
-			    cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
-			}
-			cp = (char *) cp2;
+                        ENTER_XLIB();
+                        len = XTextWidth16(f, (XChar2b *)cp, l);
+                        LEAVE_XLIB();
+#endif
+
+                        if (mustFree) {
+                            free(cp2);
+                        }
+
+                        RETURN ( __MKSMALLINT(len) );
+                    }
+                }
+                /* FOURBYTESTRINGS */
+                if (__isLongs(aString)) {
+                    int i;
+                    XChar2b *cp2;
+                    int mustFree = 0;
+
+                    n = (__byteArraySize(aString) - nInstBytes) / 4;
+                    if (i2 < n) {
+                        union {
+                            char b[2];
+                            unsigned short s;
+                        } u;
+                        int i;
+                        XChar2b *cp2 = (XChar2b *)0;
+                        int mustFree = 0;
+
+                        cp += (i1 * 4);
+                        if (l > lMax) l = lMax;
+
+                        /*
+                         * For now: X does not support 32bit characters without the new 32Unicode extensions.
+                         * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
+                         */
+                        if (l <= NLOCALBUFFER) {
+                            cp2 = xlatebuffer;
+                        } else {
+                            cp2 = (XChar2b *)(malloc(l * 2));
+                            mustFree = 1;
+                        }
+                        for (i=0; i<l; i++) {
+                            int codePoint;
+
+                            codePoint = ((unsigned int32 *)cp)[i];
+                            if (codePoint > 0xFFFF) {
+                                codePoint = 0xFFFF;
+                            }
+                            cp2[i].byte1 = codePoint & 0xFF;
+                            cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
+                        }
+                        cp = (char *) cp2;
 
 #if 1
-			len = XTextExtents16(f, (XChar2b *)cp, l,
-						&directionReturn, &fontAscentReturn, &fontDescentReturn,
-						&overAllReturn);
-			len = overAllReturn.width;
+                        len = XTextExtents16(f, (XChar2b *)cp, l,
+                                                &directionReturn, &fontAscentReturn, &fontDescentReturn,
+                                                &overAllReturn);
+                        len = overAllReturn.width;
 #else
-			ENTER_XLIB();
-			len = XTextWidth16(f, (XChar2b *)cp, l);
-			LEAVE_XLIB();
-#endif
-
-			if (mustFree) {
-			    free(cp2);
-			}
-
-			RETURN ( __MKSMALLINT(len) );
-		    }
-		}
-	    }
-	}
+                        ENTER_XLIB();
+                        len = XTextWidth16(f, (XChar2b *)cp, l);
+                        LEAVE_XLIB();
+#endif
+
+                        if (mustFree) {
+                            free(cp2);
+                        }
+
+                        RETURN ( __MKSMALLINT(len) );
+                    }
+                }
+            }
+        }
     }
 #undef NLOCALBUFFER
 fail: ;
@@ -7672,31 +7683,31 @@
     int _mode, ok = 1;
 
     if (mode == @symbol(asyncPointer))
-	_mode = AsyncPointer;
+        _mode = AsyncPointer;
     else if (mode == @symbol(syncPointer))
-	_mode = SyncPointer;
+        _mode = SyncPointer;
     else if (mode == @symbol(asyncKeyboard))
-	_mode = AsyncKeyboard;
+        _mode = AsyncKeyboard;
     else if (mode == @symbol(syncKeyboard))
-	_mode = SyncKeyboard;
+        _mode = SyncKeyboard;
     else if (mode == @symbol(syncBoth))
-	_mode = SyncBoth;
+        _mode = SyncBoth;
     else if (mode == @symbol(asyncBoth))
-	_mode = AsyncBoth;
+        _mode = AsyncBoth;
     else if (mode == @symbol(replayPointer))
-	_mode = ReplayPointer;
+        _mode = ReplayPointer;
     else if (mode == @symbol(replayKeyboard))
-	_mode = ReplayKeyboard;
+        _mode = ReplayKeyboard;
     else
-	ok = 0;
+        ok = 0;
 
     if (ok
      && ISCONNECTED) {
-	ENTER_XLIB();
-	XAllowEvents(myDpy, _mode, CurrentTime);
-	LEAVE_XLIB();
-
-	RETURN (self);
+        ENTER_XLIB();
+        XAllowEvents(myDpy, _mode, CurrentTime);
+        LEAVE_XLIB();
+
+        RETURN (self);
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -7710,52 +7721,52 @@
     int result, ok;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aWindowId)) {
-
-	    ENTER_XLIB();
-	    result = XGrabKeyboard(myDpy,
-				   __WindowVal(aWindowId),
-				   True /* False */,
-				   GrabModeAsync,
-				   GrabModeAsync,
-				   CurrentTime);
-	    LEAVE_XLIB();
-
-	    ok = 0;
-	    switch(result) {
-		case AlreadyGrabbed:
-		    if (@global(ErrorPrinting) == true) {
-			console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: AlreadyGrabbed\n");
-		    }
-		    break;
-		case GrabNotViewable:
-		    if (@global(ErrorPrinting) == true) {
-			console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: GrabNotViewable\n");
-		    }
-		    break;
-		case GrabInvalidTime:
-		    if (@global(ErrorPrinting) == true) {
-			console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: InvalidTime\n");
-		    }
-		    break;
-		case GrabFrozen:
-		    if (@global(ErrorPrinting) == true) {
-			console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: Frozen\n");
-		    }
-		    break;
-		default:
-		    ok = 1;
-		    break;
-	    }
-	    if (! ok) {
-		ENTER_XLIB();
-		XUngrabKeyboard(myDpy, CurrentTime);
-		LEAVE_XLIB();
-		RETURN (false);
-	    }
-
-	    RETURN ( true );
-	}
+        if (__isExternalAddress(aWindowId)) {
+
+            ENTER_XLIB();
+            result = XGrabKeyboard(myDpy,
+                                   __WindowVal(aWindowId),
+                                   True /* False */,
+                                   GrabModeAsync,
+                                   GrabModeAsync,
+                                   CurrentTime);
+            LEAVE_XLIB();
+
+            ok = 0;
+            switch(result) {
+                case AlreadyGrabbed:
+                    if (@global(ErrorPrinting) == true) {
+                        console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: AlreadyGrabbed\n");
+                    }
+                    break;
+                case GrabNotViewable:
+                    if (@global(ErrorPrinting) == true) {
+                        console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: GrabNotViewable\n");
+                    }
+                    break;
+                case GrabInvalidTime:
+                    if (@global(ErrorPrinting) == true) {
+                        console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: InvalidTime\n");
+                    }
+                    break;
+                case GrabFrozen:
+                    if (@global(ErrorPrinting) == true) {
+                        console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: Frozen\n");
+                    }
+                    break;
+                default:
+                    ok = 1;
+                    break;
+            }
+            if (! ok) {
+                ENTER_XLIB();
+                XUngrabKeyboard(myDpy, CurrentTime);
+                LEAVE_XLIB();
+                RETURN (false);
+            }
+
+            RETURN ( true );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -7774,88 +7785,88 @@
     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.
@@ -7866,12 +7877,12 @@
     "grap the pointer - return true if ok"
 
     ^ self
-	grabPointerIn:aWindowId
-	withCursor:aCursorId
-	eventMask:nil
-	pointerMode:pMode
-	keyboardMode:kMode
-	confineTo:confineId
+        grabPointerIn:aWindowId
+        withCursor:aCursorId
+        eventMask:nil
+        pointerMode:pMode
+        keyboardMode:kMode
+        confineTo:confineId
 
     "Modified: / 28.7.1998 / 02:47:51 / cg"
 !
@@ -7883,12 +7894,12 @@
 %{
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	ENTER_XLIB();
-	XUngrabKeyboard(dpy, CurrentTime);
-	XSync(dpy, 0);
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+
+        ENTER_XLIB();
+        XUngrabKeyboard(dpy, CurrentTime);
+        XSync(dpy, 0);
+        LEAVE_XLIB();
 
     }
 %}.
@@ -7901,12 +7912,12 @@
 %{
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	ENTER_XLIB();
-	XUngrabPointer(dpy, CurrentTime);
-	XSync(dpy, 0);
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+
+        ENTER_XLIB();
+        XUngrabPointer(dpy, CurrentTime);
+        XSync(dpy, 0);
+        LEAVE_XLIB();
 
     }
 %}.
@@ -7916,8 +7927,8 @@
     "release the keyboard"
 
     activeKeyboardGrab notNil ifTrue:[
-	activeKeyboardGrab := nil.
-	self primUngrabKeyboard.
+        activeKeyboardGrab := nil.
+        self primUngrabKeyboard.
     ]
 !
 
@@ -7925,8 +7936,8 @@
     "release the pointer"
 
     activePointerGrab notNil ifTrue:[
-	activePointerGrab := nil.
-	self primUngrabPointer.
+        activePointerGrab := nil.
+        self primUngrabPointer.
     ]
 ! !
 
@@ -7942,14 +7953,14 @@
     GC gc;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)) {
-	    gc = __GCVal(aGCId);
-	    gcv.clip_mask = None;
-	    ENTER_XLIB();
-	    XChangeGC(myDpy, gc, GCClipMask, &gcv);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aGCId)) {
+            gc = __GCVal(aGCId);
+            gcv.clip_mask = None;
+            ENTER_XLIB();
+            XChangeGC(myDpy, gc, GCClipMask, &gcv);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -7962,13 +7973,13 @@
 %{
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)
-	 && __isSmallInteger(bgColorIndex)) {
-	    ENTER_XLIB();
-	    XSetBackground(myDpy, __GCVal(aGCId), __intVal(bgColorIndex));
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aGCId)
+         && __isSmallInteger(bgColorIndex)) {
+            ENTER_XLIB();
+            XSetBackground(myDpy, __GCVal(aGCId), __intVal(bgColorIndex));
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -7984,25 +7995,25 @@
     Pixmap bitmap;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	if (__isExternalAddress(aGCId)) {
-	    gc = __GCVal(aGCId);
-	    if (__isExternalAddress(aBitmapId)) {
-		bitmap = __PixmapVal(aBitmapId);
-		ENTER_XLIB();
-		XSetStipple(dpy, gc, bitmap);
-		XSetFillStyle(dpy, gc, FillOpaqueStippled);
-		LEAVE_XLIB();
-		RETURN ( self );
-	    }
-	    if (aBitmapId == nil) {
-		ENTER_XLIB();
-		XSetFillStyle(dpy, gc, FillSolid);
-		LEAVE_XLIB();
-		RETURN ( self );
-	    }
-	}
+        Display *dpy = myDpy;
+
+        if (__isExternalAddress(aGCId)) {
+            gc = __GCVal(aGCId);
+            if (__isExternalAddress(aBitmapId)) {
+                bitmap = __PixmapVal(aBitmapId);
+                ENTER_XLIB();
+                XSetStipple(dpy, gc, bitmap);
+                XSetFillStyle(dpy, gc, FillOpaqueStippled);
+                LEAVE_XLIB();
+                RETURN ( self );
+            }
+            if (aBitmapId == nil) {
+                ENTER_XLIB();
+                XSetFillStyle(dpy, gc, FillSolid);
+                LEAVE_XLIB();
+                RETURN ( self );
+            }
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -8018,18 +8029,18 @@
     GC gc;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)) {
-	    gc = __GCVal(aGCId);
-	    if (aBool == true)
-		gcv.subwindow_mode = ClipByChildren;
-	    else
-		gcv.subwindow_mode = IncludeInferiors;
-
-	    ENTER_XLIB();
-	    XChangeGC(myDpy, gc, GCSubwindowMode, &gcv);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aGCId)) {
+            gc = __GCVal(aGCId);
+            if (aBool == true)
+                gcv.subwindow_mode = ClipByChildren;
+            else
+                gcv.subwindow_mode = IncludeInferiors;
+
+            ENTER_XLIB();
+            XChangeGC(myDpy, gc, GCSubwindowMode, &gcv);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -8044,18 +8055,18 @@
     XRectangle r;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)
-	 && __bothSmallInteger(clipX, clipY)
-	 && __bothSmallInteger(clipWidth, clipHeight)) {
-	    r.x = __intVal(clipX);
-	    r.y = __intVal(clipY);
-	    r.width = __intVal(clipWidth);
-	    r.height = __intVal(clipHeight);
-	    ENTER_XLIB();
-	    XSetClipRectangles(myDpy, __GCVal(aGCId), 0, 0, &r, 1, Unsorted);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aGCId)
+         && __bothSmallInteger(clipX, clipY)
+         && __bothSmallInteger(clipWidth, clipHeight)) {
+            r.x = __intVal(clipX);
+            r.y = __intVal(clipY);
+            r.width = __intVal(clipWidth);
+            r.height = __intVal(clipHeight);
+            ENTER_XLIB();
+            XSetClipRectangles(myDpy, __GCVal(aGCId), 0, 0, &r, 1, Unsorted);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -8068,17 +8079,17 @@
 %{
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)
-	 && __isSmallInteger(offset)
-	 && __isByteArrayLike(dashList)) {
-	    ENTER_XLIB();
-	    XSetDashes(myDpy, __GCVal(aGCId),
-		       __intVal(offset),
-		       __ByteArrayInstPtr(dashList)->ba_element,
-		       __byteArraySize(dashList));
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aGCId)
+         && __isSmallInteger(offset)
+         && __isByteArrayLike(dashList)) {
+            ENTER_XLIB();
+            XSetDashes(myDpy, __GCVal(aGCId),
+                       __intVal(offset),
+                       __ByteArrayInstPtr(dashList)->ba_element,
+                       __byteArraySize(dashList));
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 bad: ;
 %}.
@@ -8099,14 +8110,14 @@
     XFontStruct *f;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aFontId)
-	 && __isExternalAddress(aGCId)) {
-	    f = (XFontStruct *) __FontVal(aFontId);
-	    ENTER_XLIB();
-	    XSetFont(myDpy, __GCVal(aGCId), f->fid);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aFontId)
+         && __isExternalAddress(aGCId)) {
+            f = (XFontStruct *) __FontVal(aFontId);
+            ENTER_XLIB();
+            XSetFont(myDpy, __GCVal(aGCId), f->fid);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     "
@@ -8124,17 +8135,17 @@
     GC gc;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-	if (__bothSmallInteger(fgColorIndex, bgColorIndex)
-	 && __isExternalAddress(aGCId)) {
-	    gc = __GCVal(aGCId);
-
-	    ENTER_XLIB();
-	    XSetForeground(dpy, gc, __intVal(fgColorIndex));
-	    XSetBackground(dpy, gc, __intVal(bgColorIndex));
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        Display *dpy = myDpy;
+        if (__bothSmallInteger(fgColorIndex, bgColorIndex)
+         && __isExternalAddress(aGCId)) {
+            gc = __GCVal(aGCId);
+
+            ENTER_XLIB();
+            XSetForeground(dpy, gc, __intVal(fgColorIndex));
+            XSetBackground(dpy, gc, __intVal(bgColorIndex));
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -8147,13 +8158,13 @@
 %{
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)
-	 && __isSmallInteger(fgColorIndex)) {
-	    ENTER_XLIB();
-	    XSetForeground(myDpy, __GCVal(aGCId), __intVal(fgColorIndex));
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aGCId)
+         && __isSmallInteger(fgColorIndex)) {
+            ENTER_XLIB();
+            XSetForeground(myDpy, __GCVal(aGCId), __intVal(fgColorIndex));
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -8169,30 +8180,30 @@
     int fun = -1;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)) {
-	    gc = __GCVal(aGCId);
-	    if (aFunctionSymbol == @symbol(copy)) fun = GXcopy;
-	    else if (aFunctionSymbol == @symbol(copyInverted)) fun = GXcopyInverted;
-	    else if (aFunctionSymbol == @symbol(xor)) fun = GXxor;
-	    else if (aFunctionSymbol == @symbol(and)) fun = GXand;
-	    else if (aFunctionSymbol == @symbol(andReverse)) fun = GXandReverse;
-	    else if (aFunctionSymbol == @symbol(andInverted)) fun = GXandInverted;
-	    else if (aFunctionSymbol == @symbol(or)) fun = GXor;
-	    else if (aFunctionSymbol == @symbol(orReverse)) fun = GXorReverse;
-	    else if (aFunctionSymbol == @symbol(orInverted)) fun = GXorInverted;
-	    else if (aFunctionSymbol == @symbol(invert)) fun = GXinvert;
-	    else if (aFunctionSymbol == @symbol(clear)) fun = GXclear;
-	    else if (aFunctionSymbol == @symbol(set)) fun = GXset;
-	    else if (aFunctionSymbol == @symbol(noop)) fun = GXnoop;
-	    else if (aFunctionSymbol == @symbol(equiv)) fun = GXequiv;
-	    else if (aFunctionSymbol == @symbol(nand)) fun = GXnand;
-	    if (fun != -1) {
-		ENTER_XLIB();
-		XSetFunction(myDpy, gc, fun);
-		LEAVE_XLIB();
-		RETURN ( self );
-	    }
-	}
+        if (__isExternalAddress(aGCId)) {
+            gc = __GCVal(aGCId);
+            if (aFunctionSymbol == @symbol(copy)) fun = GXcopy;
+            else if (aFunctionSymbol == @symbol(copyInverted)) fun = GXcopyInverted;
+            else if (aFunctionSymbol == @symbol(xor)) fun = GXxor;
+            else if (aFunctionSymbol == @symbol(and)) fun = GXand;
+            else if (aFunctionSymbol == @symbol(andReverse)) fun = GXandReverse;
+            else if (aFunctionSymbol == @symbol(andInverted)) fun = GXandInverted;
+            else if (aFunctionSymbol == @symbol(or)) fun = GXor;
+            else if (aFunctionSymbol == @symbol(orReverse)) fun = GXorReverse;
+            else if (aFunctionSymbol == @symbol(orInverted)) fun = GXorInverted;
+            else if (aFunctionSymbol == @symbol(invert)) fun = GXinvert;
+            else if (aFunctionSymbol == @symbol(clear)) fun = GXclear;
+            else if (aFunctionSymbol == @symbol(set)) fun = GXset;
+            else if (aFunctionSymbol == @symbol(noop)) fun = GXnoop;
+            else if (aFunctionSymbol == @symbol(equiv)) fun = GXequiv;
+            else if (aFunctionSymbol == @symbol(nand)) fun = GXnand;
+            if (fun != -1) {
+                ENTER_XLIB();
+                XSetFunction(myDpy, gc, fun);
+                LEAVE_XLIB();
+                RETURN ( self );
+            }
+        }
     }
 %}.
     "
@@ -8210,12 +8221,12 @@
 %{
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)) {
-	    ENTER_XLIB();
-	    XSetGraphicsExposures(myDpy, __GCVal(aGCId), (aBoolean==true)?1:0);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aGCId)) {
+            ENTER_XLIB();
+            XSetGraphicsExposures(myDpy, __GCVal(aGCId), (aBoolean==true)?1:0);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -8239,56 +8250,56 @@
     int x_nDash;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)
-	 && __isSmallInteger(aNumber)) {
-	    Display *dpy = myDpy;
-
-	    if (lineStyle == @symbol(solid)) {
-		x_dashes = (char *)0;
-		x_style = LineSolid;
-	    } else if (lineStyle == @symbol(dashed)) {
-		x_dashes = dashList;
-		x_nDash = sizeof(dashList);
-		x_style = LineOnOffDash;
-	    } else if (lineStyle == @symbol(doubleDashed)) {
-		x_dashes = dashList;
-		x_nDash = sizeof(dashList);
-		x_style = LineDoubleDash;
-	    } else if (lineStyle == @symbol(dotted)) {
-		x_dashes = dotList;
-		x_nDash = sizeof(dotList);
-		x_style = LineOnOffDash;
-	    } else if (lineStyle == @symbol(dashDot)) {
-		x_dashes = dashDotList;
-		x_nDash = sizeof(dashDotList);
-		x_style = LineOnOffDash;
-	    } else if (lineStyle == @symbol(dashDotDot)) {
-		x_dashes = dashDotDotList;
-		x_nDash = sizeof(dashDotDotList);
-		x_style = LineOnOffDash;
-	    } else goto bad;
-
-	    if (capStyle == @symbol(notLast)) x_cap = CapNotLast;
-	    else if (capStyle == @symbol(butt)) x_cap = CapButt;
-	    else if (capStyle == @symbol(round)) x_cap  = CapRound;
-	    else if (capStyle == @symbol(projecting)) x_cap  = CapProjecting;
-	    else goto bad;
-
-	    if (joinStyle == @symbol(miter)) x_join = JoinMiter;
-	    else if (joinStyle == @symbol(bevel)) x_join = JoinBevel;
-	    else if (joinStyle == @symbol(round)) x_join  = JoinRound;
-	    else goto bad;
-
-	    ENTER_XLIB();
-	    if (x_dashes) {
-		XSetDashes(dpy, __GCVal(aGCId), 0, x_dashes, x_nDash);
-	    }
-	    XSetLineAttributes(dpy,
-			       __GCVal(aGCId), __intVal(aNumber),
-			       x_style, x_cap, x_join);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aGCId)
+         && __isSmallInteger(aNumber)) {
+            Display *dpy = myDpy;
+
+            if (lineStyle == @symbol(solid)) {
+                x_dashes = (char *)0;
+                x_style = LineSolid;
+            } else if (lineStyle == @symbol(dashed)) {
+                x_dashes = dashList;
+                x_nDash = sizeof(dashList);
+                x_style = LineOnOffDash;
+            } else if (lineStyle == @symbol(doubleDashed)) {
+                x_dashes = dashList;
+                x_nDash = sizeof(dashList);
+                x_style = LineDoubleDash;
+            } else if (lineStyle == @symbol(dotted)) {
+                x_dashes = dotList;
+                x_nDash = sizeof(dotList);
+                x_style = LineOnOffDash;
+            } else if (lineStyle == @symbol(dashDot)) {
+                x_dashes = dashDotList;
+                x_nDash = sizeof(dashDotList);
+                x_style = LineOnOffDash;
+            } else if (lineStyle == @symbol(dashDotDot)) {
+                x_dashes = dashDotDotList;
+                x_nDash = sizeof(dashDotDotList);
+                x_style = LineOnOffDash;
+            } else goto bad;
+
+            if (capStyle == @symbol(notLast)) x_cap = CapNotLast;
+            else if (capStyle == @symbol(butt)) x_cap = CapButt;
+            else if (capStyle == @symbol(round)) x_cap  = CapRound;
+            else if (capStyle == @symbol(projecting)) x_cap  = CapProjecting;
+            else goto bad;
+
+            if (joinStyle == @symbol(miter)) x_join = JoinMiter;
+            else if (joinStyle == @symbol(bevel)) x_join = JoinBevel;
+            else if (joinStyle == @symbol(round)) x_join  = JoinRound;
+            else goto bad;
+
+            ENTER_XLIB();
+            if (x_dashes) {
+                XSetDashes(dpy, __GCVal(aGCId), 0, x_dashes, x_nDash);
+            }
+            XSetLineAttributes(dpy,
+                               __GCVal(aGCId), __intVal(aNumber),
+                               x_style, x_cap, x_join);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 bad: ;
 %}.
@@ -8309,12 +8320,12 @@
 %{
 
     if (ISCONNECTED) {
-	if (__bothSmallInteger(orgX, orgY) && __isExternalAddress(aGCid)) {
-	    ENTER_XLIB();
-	    XSetTSOrigin(myDpy, __GCVal(aGCid), __intVal(orgX), __intVal(orgY));
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__bothSmallInteger(orgX, orgY) && __isExternalAddress(aGCid)) {
+            ENTER_XLIB();
+            XSetTSOrigin(myDpy, __GCVal(aGCid), __intVal(orgX), __intVal(orgY));
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -8330,25 +8341,25 @@
     Pixmap pixmap;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	if (__isExternalAddress(aGCId)) {
-	    gc = __GCVal(aGCId);
-	    if (__isExternalAddress(aPixmapId)) {
-		pixmap = __PixmapVal(aPixmapId);
-		ENTER_XLIB();
-		XSetTile(dpy, gc, pixmap);
-		XSetFillStyle(dpy, gc, FillTiled);
-		LEAVE_XLIB();
-		RETURN ( self );
-	    }
-	    if (aPixmapId == nil) {
-		ENTER_XLIB();
-		XSetFillStyle(dpy, gc, FillSolid);
-		LEAVE_XLIB();
-		RETURN ( self );
-	    }
-	}
+        Display *dpy = myDpy;
+
+        if (__isExternalAddress(aGCId)) {
+            gc = __GCVal(aGCId);
+            if (__isExternalAddress(aPixmapId)) {
+                pixmap = __PixmapVal(aPixmapId);
+                ENTER_XLIB();
+                XSetTile(dpy, gc, pixmap);
+                XSetFillStyle(dpy, gc, FillTiled);
+                LEAVE_XLIB();
+                RETURN ( self );
+            }
+            if (aPixmapId == nil) {
+                ENTER_XLIB();
+                XSetFillStyle(dpy, gc, FillSolid);
+                LEAVE_XLIB();
+                RETURN ( self );
+            }
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -8366,13 +8377,13 @@
 
 %{ /* UNLIMITEDSTACK */   /* calls XSync()! */
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-
-	__INST(displayId) = nil;
-	ENTER_XLIB();
-	XCloseDisplay(dpy);
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+
+
+        __INST(displayId) = nil;
+        ENTER_XLIB();
+        XCloseDisplay(dpy);
+        LEAVE_XLIB();
     }
 %}
 !
@@ -8383,10 +8394,10 @@
 
 %{
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	__INST(displayId) = nil;
-	close(ConnectionNumber(dpy));
+        Display *dpy = myDpy;
+
+        __INST(displayId) = nil;
+        close(ConnectionNumber(dpy));
     }
 %}
 !
@@ -8403,7 +8414,7 @@
      application window group"
 
     windowGroupWindow isNil ifTrue:[
-	windowGroupWindow := WindowGroupWindow new create.
+        windowGroupWindow := WindowGroupWindow new create.
     ].
     ^ windowGroupWindow
 !
@@ -8452,15 +8463,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
     ].
 
     xlibTimeout := xlibTimeout ? DefaultXLibTimeout.
@@ -8512,46 +8523,46 @@
 
     map := self modifierMapping.
     map isNil ifTrue:[
-	"/
-	"/ mhmh - a crippled Xlib which does not provide modifier mappings
-	"/ setup some reasonable default. If that is not sufficient,
-	"/ you have to change things from your display.rc file.
-	"/
-	altModifierMask := self modifier1Mask.
-	metaModifierMask := self modifier2Mask.
+        "/
+        "/ mhmh - a crippled Xlib which does not provide modifier mappings
+        "/ setup some reasonable default. If that is not sufficient,
+        "/ you have to change things from your display.rc file.
+        "/
+        altModifierMask := self modifier1Mask.
+        metaModifierMask := self modifier2Mask.
     ] ifFalse:[
-	| mod symbolFromKeyCode nonNilOnes |
-
-	altModifierMask := 0.
-	metaModifierMask := 0.
-
-	symbolFromKeyCode := [:key | self symbolFromKeycode:key].
-	nonNilOnes := [:str | str notNil].
-
-	mod := map at:1.
-	mod notNil ifTrue:[
-	    shiftModifiers := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
-	].
-	mod := map at:3.
-	mod notNil ifTrue:[
-	    ctrlModifiers  := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
-	].
-	mod := map at:4.
-	mod notNil ifTrue:[
-	    mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
-	    (mod includes:#'Num_Lock') ifFalse:[
-		metaModifiers := mod.
-		metaModifierMask := 1 bitShift:(4-1).
-	    ].
-	].
-	mod := map at:5.
-	mod notNil ifTrue:[
-	    mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
-	    (mod includes:#'Num_Lock') ifFalse:[
-		altModifiers   := mod.
-		altModifierMask := 1 bitShift:(5-1).
-	    ].
-	]
+        | mod symbolFromKeyCode nonNilOnes |
+
+        altModifierMask := 0.
+        metaModifierMask := 0.
+
+        symbolFromKeyCode := [:key | self symbolFromKeycode:key].
+        nonNilOnes := [:str | str notNil].
+
+        mod := map at:1.
+        mod notNil ifTrue:[
+            shiftModifiers := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
+        ].
+        mod := map at:3.
+        mod notNil ifTrue:[
+            ctrlModifiers  := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
+        ].
+        mod := map at:4.
+        mod notNil ifTrue:[
+            mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
+            (mod includes:#'Num_Lock') ifFalse:[
+                metaModifiers := mod.
+                metaModifierMask := 1 bitShift:(4-1).
+            ].
+        ].
+        mod := map at:5.
+        mod notNil ifTrue:[
+            mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
+            (mod includes:#'Num_Lock') ifFalse:[
+                altModifiers   := mod.
+                altModifierMask := 1 bitShift:(5-1).
+            ].
+        ]
     ].
 
     "
@@ -8563,25 +8574,25 @@
 
 initializeScreenBounds
     self isXineramaActive ifTrue:[
-	|rect|
-
-	self monitorBounds do:[:eachRect|
-	    rect isNil ifTrue:[
-		rect := eachRect.
-	    ] ifFalse:[
-		rect := rect merge:eachRect.
-	    ]
-	].
-	width := rect width.
-	height := rect height.
-
-	"propagate possible size changes to our rottView"
-	rootView notNil ifTrue:[
-	    rootView initialize.
-	].
+        |rect|
+
+        self monitorBounds do:[:eachRect|
+            rect isNil ifTrue:[
+                rect := eachRect.
+            ] ifFalse:[
+                rect := rect merge:eachRect.
+            ]
+        ].
+        width := rect width.
+        height := rect height.
+
+        "propagate possible size changes to our rottView"
+        rootView notNil ifTrue:[
+            rootView initialize.
+        ].
     ] ifFalse:[
-	width := self queryWidth.
-	height := self queryHeight.
+        width := self queryWidth.
+        height := self queryHeight.
     ].
     widthMM := self queryWidthMM.
     heightMM := self queryHeightMM.
@@ -8630,12 +8641,12 @@
     hasColors := hasGreyscales := true.
     (visualType == #StaticGray
      or:[ visualType == #GrayScale]) ifTrue:[
-	hasColors := false.
-	monitorType := #monochrome.
+        hasColors := false.
+        monitorType := #monochrome.
     ].
 
     ncells == 2 ifTrue:[
-	hasColors := hasGreyscales := false.
+        hasColors := hasGreyscales := false.
     ].
 
     masks := self queryRGBMasks.
@@ -8645,13 +8656,13 @@
     bitsPerRGB := masks at:4.
 
     visualType == #TrueColor ifTrue:[
-	redShift := redMask lowBit - 1.
-	greenShift := greenMask lowBit - 1.
-	blueShift := blueMask lowBit - 1.
-
-	bitsRed := redMask highBit - redMask lowBit + 1.
-	bitsGreen := greenMask highBit - greenMask lowBit + 1.
-	bitsBlue := blueMask highBit - blueMask lowBit + 1.
+        redShift := redMask lowBit - 1.
+        greenShift := greenMask lowBit - 1.
+        blueShift := blueMask lowBit - 1.
+
+        bitsRed := redMask highBit - redMask lowBit + 1.
+        bitsGreen := greenMask highBit - greenMask lowBit + 1.
+        bitsBlue := blueMask highBit - blueMask lowBit + 1.
     ].
 
 %{
@@ -8670,52 +8681,52 @@
     int dummy;
 
     if (ISCONNECTED) {
-	dpy = myDpy;
-
-	/*
-	 * look for RGB visual with the highest depth
-	 */
-	nvi = 0;
-	viproto.screen = scr;
-	vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi);
-	maxRGBDepth = maxRGBADepth = 0;
-	for (i = 0; i < nvi; i++) {
-	    int thisDepth = vip[i].depth;
-
-	    switch (vip[i].class) {
-		case TrueColor:
-		    if (thisDepth > maxRGBDepth) {
-			if (thisDepth <= 24) {
-			    maxRGBDepth = thisDepth;
-			    rgbRedMask = vip[i].red_mask;
-			    rgbGreenMask = vip[i].green_mask;
-			    rgbBlueMask = vip[i].blue_mask;
-			    rgbVisualID = vip[i].visualid;
-			} else {
-			    if (thisDepth > maxRGBADepth) {
-				// printf("found rgba visual!\n");
-				maxRGBADepth = thisDepth;
-				rgbaRedMask = vip[i].red_mask;
-				rgbaGreenMask = vip[i].green_mask;
-				rgbaBlueMask = vip[i].blue_mask;
-				rgbaVisualID = vip[i].visualid;
-			    }
-			}
-		    }
-		    break;
-	    }
-	}
-	if (vip) XFree ((char *) vip);
-
-	if (maxRGBDepth) {
-	    __INST(rgbVisual) = __MKEXTERNALADDRESS(rgbVisualID); __STORESELF(rgbVisual);
-	}
-	if (maxRGBADepth) {
-	    __INST(rgbaVisual) = __MKEXTERNALADDRESS(rgbaVisualID); __STORESELF(rgbaVisual);
-	    if (!maxRGBDepth) {
-		__INST(rgbVisual) = __INST(rgbaVisual); __STORESELF(rgbVisual);
-	    }
-	}
+        dpy = myDpy;
+
+        /*
+         * look for RGB visual with the highest depth
+         */
+        nvi = 0;
+        viproto.screen = scr;
+        vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi);
+        maxRGBDepth = maxRGBADepth = 0;
+        for (i = 0; i < nvi; i++) {
+            int thisDepth = vip[i].depth;
+
+            switch (vip[i].class) {
+                case TrueColor:
+                    if (thisDepth > maxRGBDepth) {
+                        if (thisDepth <= 24) {
+                            maxRGBDepth = thisDepth;
+                            rgbRedMask = vip[i].red_mask;
+                            rgbGreenMask = vip[i].green_mask;
+                            rgbBlueMask = vip[i].blue_mask;
+                            rgbVisualID = vip[i].visualid;
+                        } else {
+                            if (thisDepth > maxRGBADepth) {
+                                // printf("found rgba visual!\n");
+                                maxRGBADepth = thisDepth;
+                                rgbaRedMask = vip[i].red_mask;
+                                rgbaGreenMask = vip[i].green_mask;
+                                rgbaBlueMask = vip[i].blue_mask;
+                                rgbaVisualID = vip[i].visualid;
+                            }
+                        }
+                    }
+                    break;
+            }
+        }
+        if (vip) XFree ((char *) vip);
+
+        if (maxRGBDepth) {
+            __INST(rgbVisual) = __MKEXTERNALADDRESS(rgbVisualID); __STORESELF(rgbVisual);
+        }
+        if (maxRGBADepth) {
+            __INST(rgbaVisual) = __MKEXTERNALADDRESS(rgbaVisualID); __STORESELF(rgbaVisual);
+            if (!maxRGBDepth) {
+                __INST(rgbVisual) = __INST(rgbaVisual); __STORESELF(rgbVisual);
+            }
+        }
     }
 %}.
 !
@@ -8730,17 +8741,17 @@
     ignoreBackingStore := false.
 
     (self serverVendor = 'X11/NeWS') ifTrue:[
-	"/
-	"/ this is a kludge around a bug in the X11/NeWS server,
-	"/ which does not correctly handle saveUnder
-	"/
-	hasSaveUnder := false.
+        "/
+        "/ this is a kludge around a bug in the X11/NeWS server,
+        "/ which does not correctly handle saveUnder
+        "/
+        hasSaveUnder := false.
     ].
 !
 
 initializeUniqueID
     uniqueDeviceID isNil ifTrue:[
-	uniqueDeviceID := UUID genUUID.
+        uniqueDeviceID := UUID genUUID.
     ]
 !
 
@@ -8754,24 +8765,24 @@
     char *nm;
 
     if (__isStringLike(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
@@ -8781,12 +8792,12 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	int scr;
-
-	dpy = myDpy;
-	scr = DefaultScreen(dpy);
-	RETURN ( __MKSMALLINT(BlackPixel(dpy, scr)));
+        Display *dpy;
+        int scr;
+
+        dpy = myDpy;
+        scr = DefaultScreen(dpy);
+        RETURN ( __MKSMALLINT(BlackPixel(dpy, scr)));
     }
 %}.
     ^ nil
@@ -8800,12 +8811,12 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	int scr;
-
-	dpy = myDpy;
-	scr = DefaultScreen(dpy);
-	RETURN ( __MKSMALLINT(DisplayCells(dpy, scr)));
+        Display *dpy;
+        int scr;
+
+        dpy = myDpy;
+        scr = DefaultScreen(dpy);
+        RETURN ( __MKSMALLINT(DisplayCells(dpy, scr)));
     }
 %}.
     ^ nil
@@ -8820,14 +8831,14 @@
 
 #ifdef DPS
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XQueryExtension(dpy, "DPSExtension", &dummy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XQueryExtension(dpy, "DPSExtension", &dummy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -8842,10 +8853,10 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-
-	dpy = myDpy;
-	RETURN ( __MKSMALLINT(DefaultScreen(dpy)));
+        Display *dpy;
+
+        dpy = myDpy;
+        RETURN ( __MKSMALLINT(DefaultScreen(dpy)));
     }
 %}.
     ^ nil
@@ -8859,25 +8870,25 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	Visual *visual;
-
-	dpy = myDpy;
-	visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
-	switch (visual->class) {
-	    case StaticGray:
-		RETURN ( @symbol(StaticGray) );
-	    case GrayScale:
-		RETURN ( @symbol(GrayScale) );
-	    case StaticColor:
-		RETURN ( @symbol(StaticColor) );
-	    case PseudoColor:
-		RETURN ( @symbol(PseudoColor) );
-	    case TrueColor:
-		RETURN ( @symbol(TrueColor) );
-	    case DirectColor:
-		RETURN ( @symbol(DirectColor) );
-	}
+        Display *dpy;
+        Visual *visual;
+
+        dpy = myDpy;
+        visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
+        switch (visual->class) {
+            case StaticGray:
+                RETURN ( @symbol(StaticGray) );
+            case GrayScale:
+                RETURN ( @symbol(GrayScale) );
+            case StaticColor:
+                RETURN ( @symbol(StaticColor) );
+            case PseudoColor:
+                RETURN ( @symbol(PseudoColor) );
+            case TrueColor:
+                RETURN ( @symbol(TrueColor) );
+            case DirectColor:
+                RETURN ( @symbol(DirectColor) );
+        }
     }
 %}.
     ^ nil
@@ -8891,12 +8902,12 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	int scr;
-
-	dpy = myDpy;
-	scr = DefaultScreen(dpy);
-	RETURN ( __MKSMALLINT(DisplayPlanes(dpy, scr)));
+        Display *dpy;
+        int scr;
+
+        dpy = myDpy;
+        scr = DefaultScreen(dpy);
+        RETURN ( __MKSMALLINT(DisplayPlanes(dpy, scr)));
     }
 %}.
     ^ nil
@@ -8910,12 +8921,12 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	int scr;
-
-	dpy = myDpy;
-	scr = DefaultScreen(dpy);
-	RETURN ( __MKSMALLINT(DisplayHeight(dpy, scr)));
+        Display *dpy;
+        int scr;
+
+        dpy = myDpy;
+        scr = DefaultScreen(dpy);
+        RETURN ( __MKSMALLINT(DisplayHeight(dpy, scr)));
     }
 %}.
     ^ nil
@@ -8929,12 +8940,12 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	int scr;
-
-	dpy = myDpy;
-	scr = DefaultScreen(dpy);
-	RETURN ( __MKSMALLINT(DisplayHeightMM(dpy, scr)));
+        Display *dpy;
+        int scr;
+
+        dpy = myDpy;
+        scr = DefaultScreen(dpy);
+        RETURN ( __MKSMALLINT(DisplayHeightMM(dpy, scr)));
     }
 %}.
     ^ nil
@@ -8949,14 +8960,14 @@
 
 #ifdef MBUF
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XQueryExtension(dpy, "Multi-Buffering", &dummy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XQueryExtension(dpy, "Multi-Buffering", &dummy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -8972,14 +8983,14 @@
 
 #ifdef PEX5
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XQueryExtension(dpy, PEX_NAME_STRING, &dummy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XQueryExtension(dpy, PEX_NAME_STRING, &dummy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -8994,17 +9005,17 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	Visual *visual;
-	OBJ redMask, greenMask, blueMask, bprgb;
-
-	dpy = myDpy;
-	visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
-	redMask   = __MKSMALLINT(visual->red_mask);
-	greenMask = __MKSMALLINT(visual->green_mask);
-	blueMask  = __MKSMALLINT(visual->blue_mask);
-	bprgb  = __MKSMALLINT(visual->bits_per_rgb);
-	RETURN ( __ARRAY_WITH4(redMask, greenMask, blueMask, bprgb) );
+        Display *dpy;
+        Visual *visual;
+        OBJ redMask, greenMask, blueMask, bprgb;
+
+        dpy = myDpy;
+        visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
+        redMask   = __MKSMALLINT(visual->red_mask);
+        greenMask = __MKSMALLINT(visual->green_mask);
+        blueMask  = __MKSMALLINT(visual->blue_mask);
+        bprgb  = __MKSMALLINT(visual->bits_per_rgb);
+        RETURN ( __ARRAY_WITH4(redMask, greenMask, blueMask, bprgb) );
     }
 %}.
     ^ nil
@@ -9028,14 +9039,14 @@
 
 #ifdef XRENDER
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XRenderQueryExtension (dpy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XRenderQueryExtension (dpy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -9051,14 +9062,14 @@
 
 #ifdef xxSHM
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XQueryExtension(dpy, "MIT_SHM", &dummy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XQueryExtension(dpy, "MIT_SHM", &dummy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -9074,14 +9085,14 @@
 
 #ifdef SHAPE
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XShapeQueryExtension(dpy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XShapeQueryExtension(dpy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -9096,12 +9107,12 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	int scr;
-
-	dpy = myDpy;
-	scr = DefaultScreen(dpy);
-	RETURN ( __MKSMALLINT(WhitePixel(dpy, scr)));
+        Display *dpy;
+        int scr;
+
+        dpy = myDpy;
+        scr = DefaultScreen(dpy);
+        RETURN ( __MKSMALLINT(WhitePixel(dpy, scr)));
     }
 %}.
     ^ nil
@@ -9115,12 +9126,12 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	int scr;
-
-	dpy = myDpy;
-	scr = DefaultScreen(dpy);
-	RETURN ( __MKSMALLINT(DisplayWidth(dpy, scr)));
+        Display *dpy;
+        int scr;
+
+        dpy = myDpy;
+        scr = DefaultScreen(dpy);
+        RETURN ( __MKSMALLINT(DisplayWidth(dpy, scr)));
     }
 %}.
     ^ nil
@@ -9134,12 +9145,12 @@
 %{  /* NOCONTEXT */
 
     if (ISCONNECTED) {
-	Display *dpy;
-	int scr;
-
-	dpy = myDpy;
-	scr = DefaultScreen(dpy);
-	RETURN ( __MKSMALLINT(DisplayWidthMM(dpy, scr)));
+        Display *dpy;
+        int scr;
+
+        dpy = myDpy;
+        scr = DefaultScreen(dpy);
+        RETURN ( __MKSMALLINT(DisplayWidthMM(dpy, scr)));
     }
 %}.
     ^ nil
@@ -9154,14 +9165,14 @@
 
 #ifdef XIE
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XQueryExtension(dpy, xieExtName, &dummy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XQueryExtension(dpy, xieExtName, &dummy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -9177,14 +9188,14 @@
 
 #ifdef XI
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XQueryExtension(dpy, "XInputExtension", &dummy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XQueryExtension(dpy, "XInputExtension", &dummy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -9200,14 +9211,14 @@
 
 #ifdef XVIDEO
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XQueryExtension(dpy, "XVideo", &dummy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XQueryExtension(dpy, "XVideo", &dummy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -9223,14 +9234,14 @@
 
 #ifdef XINERAMA
     if (ISCONNECTED) {
-	Display *dpy;
-	int dummy;
-
-	dpy = myDpy;
-
-	if (XineramaQueryExtension (dpy, &dummy, &dummy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        int dummy;
+
+        dpy = myDpy;
+
+        if (XineramaQueryExtension (dpy, &dummy, &dummy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -9243,8 +9254,8 @@
 
 reinitialize
     preWaitAction notNil ifTrue:[
-	Processor removePreWaitAction:preWaitAction.
-	preWaitAction := nil.
+        Processor removePreWaitAction:preWaitAction.
+        preWaitAction := nil.
     ].
     virtualRootId := rootId := nil.
     selectionFetchers := nil.
@@ -9254,8 +9265,8 @@
 
 releaseDeviceResources
     preWaitAction notNil ifTrue:[
-	Processor removePreWaitAction:preWaitAction.
-	preWaitAction := nil.
+        Processor removePreWaitAction:preWaitAction.
+        preWaitAction := nil.
     ].
     selectionFetchers := nil.
     super releaseDeviceResources.
@@ -9279,7 +9290,7 @@
      By default, this is X's modifier1, which is the ALT key on
      most keyboards. However, there may be exceptions to this,
      and the setting can be changed with:
-	Display altModifierMask:(Display modifier2Mask)
+        Display altModifierMask:(Display modifier2Mask)
      Setting the mask to 0 disables the ALT key (in ST/X) altogether.
     "
 
@@ -9311,7 +9322,7 @@
      most keyboards (if present at all).
      However, there may be exceptions to this, and the setting can
      be changed with:
-	Display metaModifierMask:(Display modifier1Mask)
+        Display metaModifierMask:(Display modifier1Mask)
      Setting the mask to 0 disables the META key (in ST/X) altogether.
      As reported, some Xservers place the Meta-key onto NumLock,
      and having NumLock enabled makes ST/X think, that meta is pressed
@@ -9385,18 +9396,18 @@
     ret := Array new:8.
     nextKey := 1.
     1 to:8 do:[ :i |
-	(modifierKeyMap at:nextKey) ~= 0 ifTrue:[
-	    |mod|
-
-	    mod := OrderedCollection new:maxKeyPerMod.
-	    modifierKeyMap from:nextKey to:(nextKey+maxKeyPerMod-1) do:[ :key |
-		key ~= 0 ifTrue:[
-		    mod add:key
-		].
-	    ].
-	    ret at:i put:mod asArray.
-	].
-	nextKey := nextKey+maxKeyPerMod.
+        (modifierKeyMap at:nextKey) ~= 0 ifTrue:[
+            |mod|
+
+            mod := OrderedCollection new:maxKeyPerMod.
+            modifierKeyMap from:nextKey to:(nextKey+maxKeyPerMod-1) do:[ :key |
+                key ~= 0 ifTrue:[
+                    mod add:key
+                ].
+            ].
+            ret at:i put:mod asArray.
+        ].
+        nextKey := nextKey+maxKeyPerMod.
     ].
 
     ^ ret
@@ -9410,12 +9421,12 @@
 
      mapping := Display modifierMapping.
      ^ mapping collect:[:eachRow |
-			     eachRow notNil ifTrue:[
-				 eachRow collect:[ :key | Display stringFromKeycode:key ].
-			     ] ifFalse:[
-				 nil
-			     ]
-		       ].
+                             eachRow notNil ifTrue:[
+                                 eachRow collect:[ :key | Display stringFromKeycode:key ].
+                             ] ifFalse:[
+                                 nil
+                             ]
+                       ].
     "
 !
 
@@ -9440,22 +9451,22 @@
     XModifierKeymap *modmap;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	if ((modmap = XGetModifierMapping(dpy)) != 0) {
-	   modifierKeyMap = __BYTEARRAY_UNINITIALIZED_NEW_INT(modmap->max_keypermod * 8);
-	   if (modifierKeyMap != nil) {
-		memcpy((char *)__ByteArrayInstPtr(modifierKeyMap)->ba_element,
-		       (char *)modmap->modifiermap, modmap->max_keypermod * 8);
-	   }
-	   XFreeModifiermap(modmap);
-	}
+        Display *dpy = myDpy;
+
+        if ((modmap = XGetModifierMapping(dpy)) != 0) {
+           modifierKeyMap = __BYTEARRAY_UNINITIALIZED_NEW_INT(modmap->max_keypermod * 8);
+           if (modifierKeyMap != nil) {
+                memcpy((char *)__ByteArrayInstPtr(modifierKeyMap)->ba_element,
+                       (char *)modmap->modifiermap, modmap->max_keypermod * 8);
+           }
+           XFreeModifiermap(modmap);
+        }
     }
 %}.
     ^ modifierKeyMap
 
     "
-	Display rawModifierMapping
+        Display rawModifierMapping
     "
 !
 
@@ -9483,19 +9494,19 @@
     char *keystring;
 
     if (ISCONNECTED && __isSmallInteger(code)) {
-	Display *dpy = myDpy;
+        Display *dpy = myDpy;
 
 // Our Windows Xlib does not support Xkb as of 2013-01
 //        if ((keysym = XkbKeycodeToKeysym(dpy, __intVal(code), 0, 0)) != NoSymbol
-	if ((keysym = XKeycodeToKeysym(dpy, __intVal(code), 0)) != NoSymbol
-	    && (keystring = XKeysymToString(keysym)) != 0)
-	    str = __MKSYMBOL(keystring, 0);
+        if ((keysym = XKeycodeToKeysym(dpy, __intVal(code), 0)) != NoSymbol
+            && (keystring = XKeysymToString(keysym)) != 0)
+            str = __MKSYMBOL(keystring, 0);
     }
 %}.
     ^ str
 
     "
-	Display symbolFromKeycode:50
+        Display symbolFromKeycode:50
     "
 ! !
 
@@ -9505,7 +9516,7 @@
     "output an audible beep or bell"
 
     UserPreferences current beepEnabled ifTrue:[
-	self beep:0 volume:50
+        self beep:0 volume:50
     ]
 
     "Modified: / 3.12.1999 / 17:13:59 / ps"
@@ -9521,14 +9532,14 @@
 
     if (__isSmallInteger(volumeInPercent)
      && ISCONNECTED) {
-	/* stupid: X wants -100 .. 100 and calls this percent */
-	volume = __intVal(volumeInPercent) * 2 - 100;
-	if (volume < -100) volume = -100;
-	else if (volume > 100) volume = 100;
-
-	ENTER_XLIB();
-	XBell(myDpy, volume);
-	LEAVE_XLIB();
+        /* stupid: X wants -100 .. 100 and calls this percent */
+        volume = __intVal(volumeInPercent) * 2 - 100;
+        if (volume < -100) volume = -100;
+        else if (volume > 100) volume = 100;
+
+        ENTER_XLIB();
+        XBell(myDpy, volume);
+        LEAVE_XLIB();
     }
 %}
 !
@@ -9541,9 +9552,9 @@
     <context: #return>
 %{
     if (ISCONNECTED) {
-	ENTER_XLIB();
-	XSynchronize(myDpy, 0);
-	LEAVE_XLIB();
+        ENTER_XLIB();
+        XSynchronize(myDpy, 0);
+        LEAVE_XLIB();
     }
 %}
     "
@@ -9562,9 +9573,9 @@
     <context: #return>
 %{
     if (ISCONNECTED) {
-	ENTER_XLIB();
-	XFlush(myDpy);
-	LEAVE_XLIB();
+        ENTER_XLIB();
+        XFlush(myDpy);
+        LEAVE_XLIB();
     }
 %}.
 
@@ -9576,12 +9587,12 @@
 %{
 #ifdef DPS
     if (ISCONNECTED
-	&& __isExternalAddress(aDPSContext)) {
-	ENTER_XLIB();
-	DPSFlushContext(__DPSContextVal(aDPSContext));
-	LEAVE_XLIB();
-
-	RETURN ( self );
+        && __isExternalAddress(aDPSContext)) {
+        ENTER_XLIB();
+        DPSFlushContext(__DPSContextVal(aDPSContext));
+        LEAVE_XLIB();
+
+        RETURN ( self );
     }
 #endif
 %}.
@@ -9600,9 +9611,9 @@
 
     if (ISCONNECTED) {
 
-	ENTER_XLIB();
-	XSync(myDpy, 0);
-	LEAVE_XLIB();
+        ENTER_XLIB();
+        XSync(myDpy, 0);
+        LEAVE_XLIB();
 
     }
 %}.
@@ -9615,11 +9626,11 @@
     XMappingEvent *ev;
 
     if (ISCONNECTED && __isByteArrayLike(eB)) {
-	ev = (XMappingEvent *)(__ByteArrayInstPtr(eB)->ba_element);
-	ENTER_XLIB();
-	XRefreshKeyboardMapping(ev);
-	LEAVE_XLIB();
-	RETURN ( self );
+        ev = (XMappingEvent *)(__ByteArrayInstPtr(eB)->ba_element);
+        ENTER_XLIB();
+        XRefreshKeyboardMapping(ev);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -9659,25 +9670,25 @@
     Window focusWindow;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aWindowId)) {
-	    focusWindow = __WindowVal(aWindowId);
-	} else if (aWindowId == nil) {
-	    focusWindow = None;
-	} else
-	    goto err;
-	if (revertSymbol == @symbol(parent))
-	    arg = RevertToParent;
-	else if (revertSymbol == @symbol(root))
-	    arg = RevertToPointerRoot;
-	else
-	    arg = RevertToNone;
-
-
-	ENTER_XLIB();
-	XSetInputFocus(myDpy, focusWindow, arg, CurrentTime);
-	LEAVE_XLIB();
-
-	RETURN ( self );
+        if (__isExternalAddress(aWindowId)) {
+            focusWindow = __WindowVal(aWindowId);
+        } else if (aWindowId == nil) {
+            focusWindow = None;
+        } else
+            goto err;
+        if (revertSymbol == @symbol(parent))
+            arg = RevertToParent;
+        else if (revertSymbol == @symbol(root))
+            arg = RevertToPointerRoot;
+        else
+            arg = RevertToNone;
+
+
+        ENTER_XLIB();
+        XSetInputFocus(myDpy, focusWindow, arg, CurrentTime);
+        LEAVE_XLIB();
+
+        RETURN ( self );
     }
 err:;
 %}.
@@ -9710,9 +9721,9 @@
 
     if (ISCONNECTED) {
 
-	ENTER_XLIB();
-	XSynchronize(myDpy, 1);
-	LEAVE_XLIB();
+        ENTER_XLIB();
+        XSynchronize(myDpy, 1);
+        LEAVE_XLIB();
 
     }
 %}
@@ -9750,20 +9761,20 @@
     unsigned int mask;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	w = RootWindow(dpy, screen);
-	if (w) {
-
-	    ENTER_XLIB();
-	    XQueryPointer(dpy, w, &rootRet, &childRet,
-				 &rootX, &rootY,
-				 &winX, &winY,
-				 &mask);
-	    LEAVE_XLIB();
-
-	    RETURN (__MKSMALLINT(mask));
-	}
+        Display *dpy = myDpy;
+
+        w = RootWindow(dpy, screen);
+        if (w) {
+
+            ENTER_XLIB();
+            XQueryPointer(dpy, w, &rootRet, &childRet,
+                                 &rootX, &rootY,
+                                 &winX, &winY,
+                                 &mask);
+            LEAVE_XLIB();
+
+            RETURN (__MKSMALLINT(mask));
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -9823,23 +9834,23 @@
     unsigned int mask;
 
     if (ISCONNECTED && rootWindowId != nil) {
-	Display *dpy = myDpy;
-	Window w = (Window)__externalAddressVal(rootWindowId);
-
-	ENTER_XLIB();
-	XQueryPointer(dpy, w, &rootRet, &childRet,
-			      &rootX, &rootY,
-			      &winX, &winY,
-			      &mask);
-	LEAVE_XLIB();
-	xpos = __MKSMALLINT(rootX);
-	ypos = __MKSMALLINT(rootY);
+        Display *dpy = myDpy;
+        Window w = (Window)__externalAddressVal(rootWindowId);
+
+        ENTER_XLIB();
+        XQueryPointer(dpy, w, &rootRet, &childRet,
+                              &rootX, &rootY,
+                              &winX, &winY,
+                              &mask);
+        LEAVE_XLIB();
+        xpos = __MKSMALLINT(rootX);
+        ypos = __MKSMALLINT(rootY);
 
     }
 %}.
     xpos isNil ifTrue:[
-	self primitiveFailedOrClosedConnection.
-	^ nil
+        self primitiveFailedOrClosedConnection.
+        ^ nil
     ].
     ^ xpos @ ypos
 !
@@ -9881,21 +9892,21 @@
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)
      && __bothSmallInteger(xpos, ypos)) {
-	Display *dpy = myDpy;
-	Window w = __WindowVal(aWindowId);
-
-	ENTER_XLIB();
-	XWarpPointer(dpy,
-		     None,  /* src window */
-		     w,  /* dst window */
-		     0,  /* src_x */
-		     0,  /* src_y */
-		     0,  /* src_w */
-		     0,  /* src_h */
-		     __intVal(xpos),  /* dst_x */
-		     __intVal(ypos)   /* dst_y */
-		    );
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+        Window w = __WindowVal(aWindowId);
+
+        ENTER_XLIB();
+        XWarpPointer(dpy,
+                     None,  /* src window */
+                     w,  /* dst window */
+                     0,  /* src_x */
+                     0,  /* src_y */
+                     0,  /* src_w */
+                     0,  /* src_h */
+                     __intVal(xpos),  /* dst_x */
+                     __intVal(ypos)   /* dst_y */
+                    );
+        LEAVE_XLIB();
     }
 %}.
     ^ self
@@ -9911,7 +9922,7 @@
     "register someone to be notified when the selection changes"
 
     selectionHandlers isNil ifTrue:[
-	selectionHandlers := IdentitySet new.
+        selectionHandlers := IdentitySet new.
     ].
     selectionHandlers add:someone
 !
@@ -9941,8 +9952,8 @@
     "no longer tell someone about selection changes"
 
     selectionHandlers notNil ifTrue:[
-	selectionHandlers remove:someone ifAbsent:nil.
-	selectionHandlers := selectionHandlers asNilIfEmpty
+        selectionHandlers remove:someone ifAbsent:nil.
+        selectionHandlers := selectionHandlers asNilIfEmpty
     ].
 !
 
@@ -9961,26 +9972,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:;
 %}.
@@ -9995,15 +10006,15 @@
     |val typeID propertyID windowID|
 
     propertySymbolOrAtomID isString ifTrue:[
-	propertyID := self atomIDOf:propertySymbolOrAtomID create:false.
-	propertyID isNil ifTrue:[^ nil].
+        propertyID := self atomIDOf:propertySymbolOrAtomID create:false.
+        propertyID isNil ifTrue:[^ nil].
     ] ifFalse:[
-	propertyID := propertySymbolOrAtomID.
+        propertyID := propertySymbolOrAtomID.
     ].
     aWindowOrWindowIDOrNil isView ifTrue:[
-	windowID := aWindowOrWindowIDOrNil id.
+        windowID := aWindowOrWindowIDOrNil id.
     ] ifFalse:[
-	windowID := aWindowOrWindowIDOrNil.
+        windowID := aWindowOrWindowIDOrNil.
     ].
 
 %{
@@ -10018,98 +10029,98 @@
 #   define PROP_SIZE    2048
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	if (__isAtomID(propertyID)) {
-	    property = __AtomVal(propertyID);
-
-	    if (__isExternalAddress(windowID)) {
-		window = __WindowVal(windowID);
-	    } else if (windowID == nil) {
-		window = DefaultRootWindow(dpy);
-	    } else
-		goto fail;
-
-	    nread = 0;
-	    cp = 0;
+        Display *dpy = myDpy;
+
+        if (__isAtomID(propertyID)) {
+            property = __AtomVal(propertyID);
+
+            if (__isExternalAddress(windowID)) {
+                window = __WindowVal(windowID);
+            } else if (windowID == nil) {
+                window = DefaultRootWindow(dpy);
+            } else
+                goto fail;
+
+            nread = 0;
+            cp = 0;
 #ifdef PROPERTY_DEBUG
-	    console_fprintf(stderr, "getProperty %x\n", property);
-#endif
-
-	    do {
-		int retVal;
-
-		ENTER_XLIB();
-		retVal = XGetWindowProperty(dpy, window, property, nread/4, PROP_SIZE,
-					    doDelete == true,
-					    AnyPropertyType, &actual_type, &actual_format,
-					    &nitems, &bytes_after, (unsigned char **)&data);
-		LEAVE_XLIB();
-		if (retVal != Success) {
+            console_fprintf(stderr, "getProperty %x\n", property);
+#endif
+
+            do {
+                int retVal;
+
+                ENTER_XLIB();
+                retVal = XGetWindowProperty(dpy, window, property, nread/4, PROP_SIZE,
+                                            doDelete == true,
+                                            AnyPropertyType, &actual_type, &actual_format,
+                                            &nitems, &bytes_after, (unsigned char **)&data);
+                LEAVE_XLIB();
+                if (retVal != Success) {
 #ifdef PROPERTY_DEBUG
-		    console_fprintf(stderr, "- no success\n");
-#endif
-		    ok = 0;
-		    break;
-		}
+                    console_fprintf(stderr, "- no success\n");
+#endif
+                    ok = 0;
+                    break;
+                }
 #ifdef PROPERTY_DEBUG
-		console_fprintf(stderr, "- type:%x\n", actual_type);
-#endif
-		nitems *= (actual_format / 8);
-		typeID = __MKATOMOBJ(actual_type);
-		if (! cp) {
-		    cp = cp2 = (char *)malloc(nitems+bytes_after);
-		} else {
-		    cp2 = cp + nread;
-		}
-		if (! cp) {
-		    XFree(data);
-		    goto fail;
-		}
-
-		nread += nitems;
-		bcopy(data, cp2, nitems);
-		XFree(data);
+                console_fprintf(stderr, "- type:%x\n", actual_type);
+#endif
+                nitems *= (actual_format / 8);
+                typeID = __MKATOMOBJ(actual_type);
+                if (! cp) {
+                    cp = cp2 = (char *)malloc(nitems+bytes_after);
+                } else {
+                    cp2 = cp + nread;
+                }
+                if (! cp) {
+                    XFree(data);
+                    goto fail;
+                }
+
+                nread += nitems;
+                bcopy(data, cp2, nitems);
+                XFree(data);
 #ifdef PROPERTY_DEBUG
-		console_fprintf(stderr, "- <nitems:%d bytes_after:%d>\n", nitems, bytes_after);
-#endif
-	    } while (bytes_after > 0);
-
-	    if (ok) {
-		switch (actual_format) {
-		case 32:
-		    val = __stArrayFromCUIntArray((unsigned int*)cp, nread/4);
-		    break;
-		case 16:
-		    val = __stArrayFromCUShortArray((unsigned short*)cp, nread/2);
-		    break;
-		case 8:
-		default:
-		    if (actual_type == XA_STRING) {
-			val = __MKSTRING_L(cp, nread);
-		    } else {
-			val = __MKBYTEARRAY(cp, nread);
-		    }
-		    break;
-		}
-	    }
-	    if (cp)
-		free(cp);
-	}
+                console_fprintf(stderr, "- <nitems:%d bytes_after:%d>\n", nitems, bytes_after);
+#endif
+            } while (bytes_after > 0);
+
+            if (ok) {
+                switch (actual_format) {
+                case 32:
+                    val = __stArrayFromCUIntArray((unsigned int*)cp, nread/4);
+                    break;
+                case 16:
+                    val = __stArrayFromCUShortArray((unsigned short*)cp, nread/2);
+                    break;
+                case 8:
+                default:
+                    if (actual_type == XA_STRING) {
+                        val = __MKSTRING_L(cp, nread);
+                    } else {
+                        val = __MKBYTEARRAY(cp, nread);
+                    }
+                    break;
+                }
+            }
+            if (cp)
+                free(cp);
+        }
     }
 fail: ;
 %}.
     (typeID isNil or:[typeID == 0]) ifTrue:[
-	"typeID == 0 (None): The property does not exist in the specified window"
-	^ nil
+        "typeID == 0 (None): The property does not exist in the specified window"
+        ^ nil
     ].
     ^ typeID->val
 
     "
      Display
-	getProperty:#'_NET_WM_ICON_GEOMETRY'
-	from:nil
-	delete:false
+        getProperty:#'_NET_WM_ICON_GEOMETRY'
+        from:nil
+        delete:false
     "
 !
 
@@ -10122,9 +10133,9 @@
     |windowID atoms|
 
     aWindowOrWindowIDOrNil isView ifTrue:[
-	windowID := aWindowOrWindowIDOrNil id.
+        windowID := aWindowOrWindowIDOrNil id.
     ] ifFalse:[
-	windowID := aWindowOrWindowIDOrNil.
+        windowID := aWindowOrWindowIDOrNil.
     ].
 
 %{
@@ -10133,41 +10144,41 @@
     int i;
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-	int numProps = 0;
-
-	if (__isExternalAddress(windowID)) {
-	    window = __WindowVal(windowID);
-	} else if (windowID == nil) {
-	    window = DefaultRootWindow(dpy);
-	} else if (__isInteger(windowID)) {
-	    window = (Window)__unsignedLongIntVal(windowID);
-	} else {
-	    goto fail;
-	}
-
-	ENTER_XLIB();
-	atomListPtr = XListProperties(dpy, window, &numProps);
-	LEAVE_XLIB();
-
-	if (atomListPtr == NULL) {
-	    RETURN (nil);
-	}
-
-	atoms = __ARRAY_NEW_INT(numProps);
-
-	if (atoms == nil) {
-	    goto fail;
-	}
-
-	for (i=0; i<numProps; i++) {
-	    OBJ atm;
-
-	    atm = __MKATOMOBJ(atomListPtr[i]);
-	    __ArrayInstPtr(atoms)->a_element[i] = atm; __STORE(atoms, atm);
-	}
-	XFree(atomListPtr);
-	RETURN (atoms);
+        Display *dpy = myDpy;
+        int numProps = 0;
+
+        if (__isExternalAddress(windowID)) {
+            window = __WindowVal(windowID);
+        } else if (windowID == nil) {
+            window = DefaultRootWindow(dpy);
+        } else if (__isInteger(windowID)) {
+            window = (Window)__unsignedLongIntVal(windowID);
+        } else {
+            goto fail;
+        }
+
+        ENTER_XLIB();
+        atomListPtr = XListProperties(dpy, window, &numProps);
+        LEAVE_XLIB();
+
+        if (atomListPtr == NULL) {
+            RETURN (nil);
+        }
+
+        atoms = __ARRAY_NEW_INT(numProps);
+
+        if (atoms == nil) {
+            goto fail;
+        }
+
+        for (i=0; i<numProps; i++) {
+            OBJ atm;
+
+            atm = __MKATOMOBJ(atomListPtr[i]);
+            __ArrayInstPtr(atoms)->a_element[i] = atm; __STORE(atoms, atm);
+        }
+        XFree(atomListPtr);
+        RETURN (atoms);
     }
 fail: ;
 %}.
@@ -10179,12 +10190,12 @@
     "
     "
      (Display propertiesOf:nil) do:[:atm |
-	|v prop|
-
-	Transcript show:((Display atomName:atm) printStringLeftPaddedTo:5).
-	Transcript show:': '.
-	prop := Display getProperty:atm from:nil delete:false.
-	Transcript showCR:prop value.
+        |v prop|
+
+        Transcript show:((Display atomName:atm) printStringLeftPaddedTo:5).
+        Transcript show:': '.
+        prop := Display getProperty:atm from:nil delete:false.
+        Transcript showCR:prop value.
      ]
     "
 !
@@ -10194,13 +10205,13 @@
 
     iconAtom := self atomIDOf:#'_NET_WM_ICON' create:false.
     iconAtom isNil ifTrue:[
-	"/Hmm, no such property, not running under EWMH compliant WM?
-	^ self
+        "/Hmm, no such property, not running under EWMH compliant WM?
+        ^ self
     ].
     typeAtom := self atomIDOf:#'CARDINAL' create:false.
     typeAtom isNil ifTrue:[
-	"/Hmm, no such property, not running under EWMH compliant WM?
-	^ self
+        "/Hmm, no such property, not running under EWMH compliant WM?
+        ^ self
     ].
     iWidth  := anIcon width.
     iHeight := anIcon height.
@@ -10211,7 +10222,7 @@
     self setProperty:iconAtom type:typeAtom value:buffer for:aWindowID
 
     "
-	Display setIcon:0 for:0
+        Display setIcon:0 for:0
     "
 !
 
@@ -10226,59 +10237,59 @@
 
 %{  /* UNLIMITEDSTACK */
     if (ISCONNECTED && __isAtomID(propertyID) && __isAtomID(typeID)) {
-	Display *dpy = myDpy;
-	Atom prop, type;
-	Window window;
-
-	prop = __AtomVal(propertyID);
-	type = __AtomVal(typeID);
-
-	if (__isExternalAddress(aWindowID)) {
-	    window = __WindowVal(aWindowID);
-	} else if (aWindowID == nil) {
-	    window = DefaultRootWindow(dpy);
-	} else if (__isInteger(aWindowID)) {
-	    window = (Window)__unsignedLongIntVal(aWindowID);
-	} else {
-	    RETURN(false);
-	}
-
-	retval = true;
-
-	ENTER_XLIB();
-	if (__isInteger(anObject)) {
-	    unsigned INT value = __longIntVal(anObject);
-	    XChangeProperty(dpy, window, prop, type, 32,
-			    PropModeReplace,
-			    (unsigned char *)&value, 1);
-	} else if (__isByteArrayLike(anObject)) {
-	    XChangeProperty(dpy, window, prop, type, 8,
-			    PropModeReplace,
-			    __byteArrayVal(anObject),
-			    __byteArraySize(anObject));
-	} else if (__isWords(anObject)) {
-	    /* wordArray-like (16bit-string) object */
-	    XChangeProperty(dpy, window, prop, type, 16,
-			    PropModeReplace,
-			    __stringVal(anObject),
-			    __wordArraySize(anObject));
-	} else if (__isIntegerArray(anObject)) {
-	    /* array of atoms */
-	    XChangeProperty(dpy, window, prop, type, 32,
-			    PropModeReplace,
-			    (char *)__integerArrayVal(anObject),
-			    __integerArraySize(anObject));
-	} else if (__isStringLike(anObject)) {
-	    XChangeProperty(dpy, window, prop, type, 8,
-			    PropModeReplace,
-			    __stringVal(anObject),
-			    __stringSize(anObject));
-	} else {
-	    retval = false;
-	}
-	LEAVE_XLIB();
-
-	DPRINTF(("changeProp win=%"_lx_" prop=%"_lx_" type=%"_lx_"\n", (INT)window, (INT)prop, (INT)type));
+        Display *dpy = myDpy;
+        Atom prop, type;
+        Window window;
+
+        prop = __AtomVal(propertyID);
+        type = __AtomVal(typeID);
+
+        if (__isExternalAddress(aWindowID)) {
+            window = __WindowVal(aWindowID);
+        } else if (aWindowID == nil) {
+            window = DefaultRootWindow(dpy);
+        } else if (__isInteger(aWindowID)) {
+            window = (Window)__unsignedLongIntVal(aWindowID);
+        } else {
+            RETURN(false);
+        }
+
+        retval = true;
+
+        ENTER_XLIB();
+        if (__isInteger(anObject)) {
+            unsigned INT value = __longIntVal(anObject);
+            XChangeProperty(dpy, window, prop, type, 32,
+                            PropModeReplace,
+                            (unsigned char *)&value, 1);
+        } else if (__isByteArrayLike(anObject)) {
+            XChangeProperty(dpy, window, prop, type, 8,
+                            PropModeReplace,
+                            __byteArrayVal(anObject),
+                            __byteArraySize(anObject));
+        } else if (__isWords(anObject)) {
+            /* wordArray-like (16bit-string) object */
+            XChangeProperty(dpy, window, prop, type, 16,
+                            PropModeReplace,
+                            __stringVal(anObject),
+                            __wordArraySize(anObject));
+        } else if (__isIntegerArray(anObject)) {
+            /* array of atoms */
+            XChangeProperty(dpy, window, prop, type, 32,
+                            PropModeReplace,
+                            (char *)__integerArrayVal(anObject),
+                            __integerArraySize(anObject));
+        } else if (__isStringLike(anObject)) {
+            XChangeProperty(dpy, window, prop, type, 8,
+                            PropModeReplace,
+                            __stringVal(anObject),
+                            __stringSize(anObject));
+        } else {
+            retval = false;
+        }
+        LEAVE_XLIB();
+
+        DPRINTF(("changeProp win=%"_lx_" prop=%"_lx_" type=%"_lx_"\n", (INT)window, (INT)prop, (INT)type));
     }
 %}.
     ^ retval
@@ -10294,7 +10305,7 @@
     extent := self monitorBounds first extent.
 
     self isPDA ifTrue:[
-	^ extent - (16 @ 20)
+        ^ extent - (16 @ 20)
     ].
     ^ extent * 2 // 3
 !
@@ -10304,12 +10315,12 @@
 
 #ifdef XINERAMA
     if (ISCONNECTED) {
-	Display *dpy;
-	dpy = myDpy;
-
-	if (XineramaIsActive(dpy)) {
-	    RETURN ( true );
-	}
+        Display *dpy;
+        dpy = myDpy;
+
+        if (XineramaIsActive(dpy)) {
+            RETURN ( true );
+        }
     }
 #endif
 %}.
@@ -10371,15 +10382,15 @@
 
     atomSymbol := aStringOrSymbol asSymbol.
     (atoms notNil and:[(atom := atoms at:atomSymbol ifAbsent:nil) notNil]) ifTrue:[
-	^ atom.
+        ^ atom.
     ].
 
     atom := self primAtomIDOf:atomSymbol create:create.
     atom notNil ifTrue:[
-	atoms isNil ifTrue:[
-	    atoms := IdentityDictionary new.
-	].
-	atoms at:atomSymbol put:atom.
+        atoms isNil ifTrue:[
+            atoms := IdentityDictionary new.
+        ].
+        atoms at:atomSymbol put:atom.
     ].
 
     ^ atom
@@ -10404,15 +10415,15 @@
     char *name;
 
     if (ISCONNECTED && __isAtomID(anAtomID)) {
-	ENTER_XLIB();
-	name = XGetAtomName(myDpy, __AtomVal(anAtomID));
-	LEAVE_XLIB();
-	if (name == 0) {
-	    RETURN (nil);
-	}
-	str = __MKSTRING(name);
-	XFree(name);
-	RETURN ( str );
+        ENTER_XLIB();
+        name = XGetAtomName(myDpy, __AtomVal(anAtomID));
+        LEAVE_XLIB();
+        if (name == 0) {
+            RETURN (nil);
+        }
+        str = __MKSTRING(name);
+        XFree(name);
+        RETURN ( str );
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -10436,11 +10447,11 @@
      This is highly X specific and  currently not used.
 
      Notice:
-	we do not plan to use X's resources for ST/X's defaults,
-	styles or resources. This would make porting of applications
-	to different platforms much more difficult (Windows has no resource
-	database). If you stay within ST/X's resource files, these can be
-	easily transported to other platforms.
+        we do not plan to use X's resources for ST/X's defaults,
+        styles or resources. This would make porting of applications
+        to different platforms much more difficult (Windows has no resource
+        database). If you stay within ST/X's resource files, these can be
+        easily transported to other platforms.
 
      This method is provided for special applications which want to access
      existing X resources and are not planned to be ever ported to other
@@ -10453,27 +10464,27 @@
      && __isStringLike(name)
      && __isStringLike(cls)) {
 
-	rslt = XGetDefault(myDpy, (char *) __stringVal(cls),
-				  (char *) __stringVal(name));
-
-	RETURN (rslt ? __MKSTRING(rslt) : nil );
+        rslt = XGetDefault(myDpy, (char *) __stringVal(cls),
+                                  (char *) __stringVal(name));
+
+        RETURN (rslt ? __MKSTRING(rslt) : nil );
     }
 %}.
     self primitiveFailedOrClosedConnection.
     ^ nil.
 
     "if your ~/.Xdefaults contains an entry such as:
-	OpenWindows.Beep:       notices
+        OpenWindows.Beep:       notices
      the following returns 'notices'.
 
-	 Display getResource:'Beep' class:'OpenWindows'
+         Display getResource:'Beep' class:'OpenWindows'
 
      if your ~/.Xdefaults contains an entry such as:
-	*.beNiceToColormap:       false
+        *.beNiceToColormap:       false
      the following return 'false'.
 
-	 Display getResource:'beNiceToColormap' class:'any'
-	 Display getResource:'beNiceToColormap' class:''
+         Display getResource:'beNiceToColormap' class:'any'
+         Display getResource:'beNiceToColormap' class:''
     "
 !
 
@@ -10489,14 +10500,14 @@
     if (ISCONNECTED
      && __isStringLike(aStringOrSymbol)) {
 
-	ENTER_XLIB();
-	prop = XInternAtom(myDpy, __stringVal(aStringOrSymbol),
-				  (create == true) ? False : True);
-	LEAVE_XLIB();
-	if (prop == None) {
-	    RETURN (nil);
-	}
-	RETURN ( __MKATOMOBJ(prop) );
+        ENTER_XLIB();
+        prop = XInternAtom(myDpy, __stringVal(aStringOrSymbol),
+                                  (create == true) ? False : True);
+        LEAVE_XLIB();
+        if (prop == None) {
+            RETURN (nil);
+        }
+        RETURN ( __MKATOMOBJ(prop) );
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -10522,35 +10533,35 @@
     |rawInfo info|
 
     ((w <= 0) or:[h <= 0]) ifTrue:[
-	self primitiveFailed.
-	^ nil
+        self primitiveFailed.
+        ^ nil
     ].
 
     rawInfo := Array new:8.
-		  "1 -> bit order"
-		  "2 -> depth"
-		  "3 -> bytes_per_line"
-		  "4 -> byte_order"
-		  "5 -> format"
-		  "6 -> bitmap_unit"
-		  "7 -> bitmap_pad"
-		  "8 -> bits_per_pixel"
+                  "1 -> bit order"
+                  "2 -> depth"
+                  "3 -> bytes_per_line"
+                  "4 -> byte_order"
+                  "5 -> format"
+                  "6 -> bitmap_unit"
+                  "7 -> bitmap_pad"
+                  "8 -> bits_per_pixel"
 
     "/ had to extract the getPixel call into a separate method, to specify
     "/ unlimitedStack (some implementations use alloca and require huge amounts
     "/ of temporary stack space
 
     (self primGetBitsFrom:aDrawableId x:srcx y:srcy width:w height:h into:imageBits infoInto:rawInfo) ifTrue:[
-	info := IdentityDictionary new.
-	info at:#bitOrder put:(rawInfo at:1).
-	info at:#depth put:(rawInfo at:2).
-	info at:#bytesPerLine put:(rawInfo at:3).
-	info at:#byteOrder put:(rawInfo at:4).
-	info at:#format put:(rawInfo at:5).
-	info at:#bitmapUnit put:(rawInfo at:6).
-	info at:#bitmapPad put:(rawInfo at:7).
-	info at:#bitsPerPixel put:(rawInfo at:8).
-	^ info
+        info := IdentityDictionary new.
+        info at:#bitOrder put:(rawInfo at:1).
+        info at:#depth put:(rawInfo at:2).
+        info at:#bytesPerLine put:(rawInfo at:3).
+        info at:#byteOrder put:(rawInfo at:4).
+        info at:#format put:(rawInfo at:5).
+        info at:#bitmapUnit put:(rawInfo at:6).
+        info at:#bitmapPad put:(rawInfo at:7).
+        info at:#bitsPerPixel put:(rawInfo at:8).
+        ^ info
     ].
     "
      some error occured - either args are not smallintegers, imageBits is not a ByteArray
@@ -10575,20 +10586,20 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aDrawableId) && __bothSmallInteger(x, y)) {
-	win = __WindowVal(aDrawableId);
-	xpos = __intVal(x);
-	ypos = __intVal(y);
-	if ((xpos < 0) || (ypos < 0)) {
-	    RETURN ( __MKSMALLINT(0) );
-	}
-	ENTER_XLIB();
-	img = XGetImage(myDpy, win, xpos, ypos, 1, 1, (unsigned)~0, ZPixmap);
-	LEAVE_XLIB();
-	if (img != 0) {
-	    ret = XGetPixel(img, 0, 0);
-	    XDestroyImage(img);
-	    RETURN (  __MKSMALLINT(ret) );
-	}
+        win = __WindowVal(aDrawableId);
+        xpos = __intVal(x);
+        ypos = __intVal(y);
+        if ((xpos < 0) || (ypos < 0)) {
+            RETURN ( __MKSMALLINT(0) );
+        }
+        ENTER_XLIB();
+        img = XGetImage(myDpy, win, xpos, ypos, 1, 1, (unsigned)~0, ZPixmap);
+        LEAVE_XLIB();
+        if (img != 0) {
+            ret = XGetPixel(img, 0, 0);
+            XDestroyImage(img);
+            RETURN (  __MKSMALLINT(ret) );
+        }
     }
 %}.
     ^ nil
@@ -10612,80 +10623,80 @@
      && __bothSmallInteger(w, h)
      && __isArray(info)
      && __isByteArray(imageBits)) {
-	Display *dpy = myDpy;
-
-	win = __WindowVal(aDrawableId);
-	ENTER_XLIB();
-	image = XGetImage(dpy, win, __intVal(srcx), __intVal(srcy),
-				    __intVal(w), __intVal(h),
-				    (unsigned)AllPlanes, ZPixmap);
-	LEAVE_XLIB();
-
-	if (! image) {
-	    RETURN ( false );
-	}
-
-	pad = image->bitmap_pad;
+        Display *dpy = myDpy;
+
+        win = __WindowVal(aDrawableId);
+        ENTER_XLIB();
+        image = XGetImage(dpy, win, __intVal(srcx), __intVal(srcy),
+                                    __intVal(w), __intVal(h),
+                                    (unsigned)AllPlanes, ZPixmap);
+        LEAVE_XLIB();
+
+        if (! image) {
+            RETURN ( false );
+        }
+
+        pad = image->bitmap_pad;
 #ifdef SUPERDEBUG
-	console_printf("pad:%d depth:%d\n", image->bitmap_pad, image->depth);
-#endif
-	switch (image->depth) {
-	    case 1:
-	    case 2:
-	    case 4:
-	    case 8:
-	    case 16:
-	    case 24:
-	    case 32:
-		numBytes = image->bytes_per_line * image->height;
-		break;
-
-	    default:
-		/* unsupported depth ? */
-		console_fprintf(stderr, "possibly unsupported depth:%d in primGetBits\n", image->depth);
-		numBytes = image->bytes_per_line * image->height;
-		break;
-	}
+        console_printf("pad:%d depth:%d\n", image->bitmap_pad, image->depth);
+#endif
+        switch (image->depth) {
+            case 1:
+            case 2:
+            case 4:
+            case 8:
+            case 16:
+            case 24:
+            case 32:
+                numBytes = image->bytes_per_line * image->height;
+                break;
+
+            default:
+                /* unsupported depth ? */
+                console_fprintf(stderr, "possibly unsupported depth:%d in primGetBits\n", image->depth);
+                numBytes = image->bytes_per_line * image->height;
+                break;
+        }
 
 #ifdef SUPERDEBUG
-	console_printf("bytes need:%d bytes given:%d\n", numBytes, __byteArraySize(imageBits));
-#endif
-
-	if (numBytes > __byteArraySize(imageBits)) {
-	    /* imageBits too small */
-	    console_fprintf(stderr, "Workstation [warning]: byteArray too small in primGetBits\n");
-	    console_fprintf(stderr, "  bytes need:%d given:%d\n", numBytes, (int)__byteArraySize(imageBits));
-	    console_fprintf(stderr, "  pad:%d depth:%d imgBytesPerLine:%d\n",
-				image->bitmap_pad, image->depth, image->bytes_per_line);
-	    goto fail;
-	}
-	if (image->bitmap_bit_order == MSBFirst)
-	    __ArrayInstPtr(info)->a_element[0] = @symbol(msbFirst);
-	else
-	    __ArrayInstPtr(info)->a_element[0] = @symbol(lsbFirst);
-	__ArrayInstPtr(info)->a_element[1] = __MKSMALLINT(image->depth);
-	__ArrayInstPtr(info)->a_element[2] = __MKSMALLINT(image->bytes_per_line);
-	if (image->byte_order == MSBFirst)
-	    __ArrayInstPtr(info)->a_element[3] = @symbol(msbFirst);
-	else
-	    __ArrayInstPtr(info)->a_element[3] = @symbol(lsbFirst);
-	if (image->format == XYBitmap)
-	    __ArrayInstPtr(info)->a_element[4] = @symbol(XYBitmap);
-	else if (image->format == XYPixmap)
-	    __ArrayInstPtr(info)->a_element[4] = @symbol(XYPixmap);
-	else if (image->format == ZPixmap)
-	    __ArrayInstPtr(info)->a_element[4] = @symbol(ZPixmap);
-
-	__ArrayInstPtr(info)->a_element[5] = __MKSMALLINT(image->bitmap_unit);
-	__ArrayInstPtr(info)->a_element[6] = __MKSMALLINT(image->bitmap_pad);
-	__ArrayInstPtr(info)->a_element[7] = __MKSMALLINT(image->bits_per_pixel);
-	bcopy(image->data, __ByteArrayInstPtr(imageBits)->ba_element, numBytes);
-	XDestroyImage(image);
-	RETURN ( true );
+        console_printf("bytes need:%d bytes given:%d\n", numBytes, __byteArraySize(imageBits));
+#endif
+
+        if (numBytes > __byteArraySize(imageBits)) {
+            /* imageBits too small */
+            console_fprintf(stderr, "Workstation [warning]: byteArray too small in primGetBits\n");
+            console_fprintf(stderr, "  bytes need:%d given:%d\n", numBytes, (int)__byteArraySize(imageBits));
+            console_fprintf(stderr, "  pad:%d depth:%d imgBytesPerLine:%d\n",
+                                image->bitmap_pad, image->depth, image->bytes_per_line);
+            goto fail;
+        }
+        if (image->bitmap_bit_order == MSBFirst)
+            __ArrayInstPtr(info)->a_element[0] = @symbol(msbFirst);
+        else
+            __ArrayInstPtr(info)->a_element[0] = @symbol(lsbFirst);
+        __ArrayInstPtr(info)->a_element[1] = __MKSMALLINT(image->depth);
+        __ArrayInstPtr(info)->a_element[2] = __MKSMALLINT(image->bytes_per_line);
+        if (image->byte_order == MSBFirst)
+            __ArrayInstPtr(info)->a_element[3] = @symbol(msbFirst);
+        else
+            __ArrayInstPtr(info)->a_element[3] = @symbol(lsbFirst);
+        if (image->format == XYBitmap)
+            __ArrayInstPtr(info)->a_element[4] = @symbol(XYBitmap);
+        else if (image->format == XYPixmap)
+            __ArrayInstPtr(info)->a_element[4] = @symbol(XYPixmap);
+        else if (image->format == ZPixmap)
+            __ArrayInstPtr(info)->a_element[4] = @symbol(ZPixmap);
+
+        __ArrayInstPtr(info)->a_element[5] = __MKSMALLINT(image->bitmap_unit);
+        __ArrayInstPtr(info)->a_element[6] = __MKSMALLINT(image->bitmap_pad);
+        __ArrayInstPtr(info)->a_element[7] = __MKSMALLINT(image->bits_per_pixel);
+        bcopy(image->data, __ByteArrayInstPtr(imageBits)->ba_element, numBytes);
+        XDestroyImage(image);
+        RETURN ( true );
     }
 fail:
     if (image) {
-	XDestroyImage(image);
+        XDestroyImage(image);
     }
 %}.
     ^ false
@@ -10703,40 +10714,40 @@
 
     selectionOwnerWindowId := self getSelectionOwnerOf:clipboardAtom.
     selectionOwnerWindowId isNil ifTrue:[
-	"no selection. There is the possibilty that one of our (modal)
-	 views has been closed. Get the selection from the copyBuffer"
-	^ copyBuffer.
+        "no selection. There is the possibilty that one of our (modal)
+         views has been closed. Get the selection from the copyBuffer"
+        ^ copyBuffer.
     ].
     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
     ].
 
     drawableId notNil ifTrue:[
-	"sorry, cannot fetch a selection, if there is no drawableId.
-	 Should I borrow a drawableId from another window?"
-
-	selection := SelectionFetcher
-	    requestSelection:clipboardAtom
-	    type:(self atomIDOf:#'ST_OBJECT')
-	    onDevice:self for:drawableId.
-
-	"/ should not happen
+        "sorry, cannot fetch a selection, if there is no drawableId.
+         Should I borrow a drawableId from another window?"
+
+        selection := SelectionFetcher
+            requestSelection:clipboardAtom
+            type:(self atomIDOf:#'ST_OBJECT')
+            onDevice:self for:drawableId.
+
+        "/ should not happen
 false ifTrue:[
-	"/ cg: disabled the code below: I don't want any string here (when asking for an object)
-	selection isEmptyOrNil ifTrue:[
-	    selection := SelectionFetcher
-		requestSelection:clipboardAtom
-		type:(self atomIDOf:#'UTF8_STRING')
-		onDevice:self for:drawableId.
-
-	    selection isNil ifTrue:[
-		selection := SelectionFetcher
-		    requestSelection:clipboardAtom
-		    type:(self atomIDOf:#STRING)
-		    onDevice:self for:drawableId.
-	    ].
-	].
+        "/ cg: disabled the code below: I don't want any string here (when asking for an object)
+        selection isEmptyOrNil ifTrue:[
+            selection := SelectionFetcher
+                requestSelection:clipboardAtom
+                type:(self atomIDOf:#'UTF8_STRING')
+                onDevice:self for:drawableId.
+
+            selection isNil ifTrue:[
+                selection := SelectionFetcher
+                    requestSelection:clipboardAtom
+                    type:(self atomIDOf:#STRING)
+                    onDevice:self for:drawableId.
+            ].
+        ].
 ].
     ].
     selection isEmptyOrNil ifTrue:[ ^ copyBuffer ].
@@ -10755,43 +10766,43 @@
     |selectionId selectionOwnerWindowId selection|
 
     selectionBufferSymbol == #selection ifTrue:[
-	selectionId := primaryAtom.
+        selectionId := primaryAtom.
     ] ifFalse:[
-	selectionId := clipboardAtom.
+        selectionId := clipboardAtom.
     ].
 
     selectionOwnerWindowId := self getSelectionOwnerOf:selectionId.
     selectionOwnerWindowId isNil ifTrue:[
-	"no selection. There is the possibilty that one of our (modal)
-	 views has been closed. Get the selection from the copyBuffer"
-	^ self copyBufferAsString.
+        "no selection. There is the possibilty that one of our (modal)
+         views has been closed. Get the selection from the copyBuffer"
+        ^ self copyBufferAsString.
     ].
 
     selectionOwnerWindowId = selectionOwner ifTrue:[
-	"I still hold the selection, so return my locally buffered data"
-	"JV@2012-04-02: Added support for PRIMARY/SELECTION buffers."
-	^ selectionId == primaryAtom ifTrue:[
-	    self primaryBufferAsString
-	] ifFalse:[
-	    self copyBufferAsString.
-	]
+        "I still hold the selection, so return my locally buffered data"
+        "JV@2012-04-02: Added support for PRIMARY/SELECTION buffers."
+        ^ selectionId == primaryAtom ifTrue:[
+            self primaryBufferAsString
+        ] ifFalse:[
+            self copyBufferAsString.
+        ]
     ].
 
     drawableId notNil ifTrue:[
-	"sorry, cannot fetch a selection, if there is no drawableId.
-	 Should I borrow a drawableId from another window?"
-
-	selection := SelectionFetcher
-	    requestSelection:selectionId
-	    type:(self atomIDOf:#'UTF8_STRING')
-	    onDevice:self for:drawableId.
-
-	selection isNil ifTrue:[
-	    selection := SelectionFetcher
-		requestSelection:selectionId
-		type:(self atomIDOf:#STRING)
-		onDevice:self for:drawableId.
-	].
+        "sorry, cannot fetch a selection, if there is no drawableId.
+         Should I borrow a drawableId from another window?"
+
+        selection := SelectionFetcher
+            requestSelection:selectionId
+            type:(self atomIDOf:#'UTF8_STRING')
+            onDevice:self for:drawableId.
+
+        selection isNil ifTrue:[
+            selection := SelectionFetcher
+                requestSelection:selectionId
+                type:(self atomIDOf:#STRING)
+                onDevice:self for:drawableId.
+        ].
     ].
 
     ^ selection
@@ -10806,110 +10817,72 @@
 
 !XWorkstation methodsFor:'selection sending'!
 
-copyBufferAs:aTargetAtom
+selectionBuffer:bufferGetSelector as:aTargetAtomID
     "convert the current selection to the format defined by aTargetAtom.
-     Answer the converted selection"
-
-    (aTargetAtom == (self atomIDOf:#STRING)) ifTrue:[
-	"/ 'string' printCR.
-	"the other view wants the selection as string"
-	^ self copyBufferAsString.
-    ].
-
-    (aTargetAtom == (self atomIDOf:#UTF8_STRING)) ifTrue:[
-	"/ 'utf string' printCR.
-	"the other view wants the selection as utf8 string"
-	^ self copyBufferAsString utf8Encoded.
-    ].
-
-    (aTargetAtom == (self atomIDOf:#TIMESTAMP)) ifTrue:[
-	"the other view wants to know when we acquired ownership of the selection"
-	^ selectionTime.
-    ].
-
-    (aTargetAtom == (self atomIDOf:#TARGETS)) ifTrue:[
-	"the other view wants to know which targets we support"
-	^ self supportedTargetAtoms.
-    ].
-
-    (aTargetAtom == (self atomIDOf:#'ST_OBJECT')) ifTrue:[
-	"/ 'st-object' printCR.
-	"send the selection in binaryStore format"
-	"require libboss to be loaded"
-	(Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
-	    'XWorkstation: cannot use binary store for copy buffer (libboss missing)' errorPrintCR.
-	    ^ nil
-	].
-
-	[
-	    ^ self getCopyBuffer binaryStoreBytes.
-	] on:Error do:[:ex|
-	    'XWorkstation: error on binary store of copy buffer: ' errorPrint.
-	    ex description errorPrintCR.
-	    ^ nil.
-	].
-    ].
-
-    aTargetAtom == (self atomIDOf:#LENGTH) ifTrue:[
-	"the other one wants to know the size of our selection.
-	 LENGTH is deprecated, since we do not know how the selection is
-	 going to be converted. The client must not rely on the length returned"
-
-	^ self copyBufferAsString size
+     Answer an association with the type of converted selection (an atomID)
+     and the converted selection"
+
+    |buffer bufferAsString|
+
+    buffer := self perform:bufferGetSelector.
+
+    (aTargetAtomID == (self atomIDOf:#'ST_OBJECT')) ifTrue:[
+        "/ 'st-object' printCR.
+        "send the selection in binaryStore format"
+        "require libboss to be loaded"
+        (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
+            'XWorkstation: cannot use binary store for copy buffer (libboss missing)' errorPrintCR.
+            ^ nil -> nil.
+        ].
+
+        [
+            ^ aTargetAtomID -> (buffer binaryStoreBytes).
+        ] on:Error do:[:ex|
+            'XWorkstation: error on binary store of copy buffer: ' errorPrint.
+            ex description errorPrintCR.
+            ^ nil.
+        ].
+    ].
+
+    bufferAsString := self class bufferAsString:buffer.
+
+    (aTargetAtomID == (self atomIDOf:#STRING)
+     or:[aTargetAtomID == (self atomIDOf:#'text/plain')]
+    ) ifTrue:[
+        "/ 'string' printCR.
+        "the other view wants the selection as string"
+        ^ aTargetAtomID -> (bufferAsString asSingleByteStringReplaceInvalidWith:$#).
+    ].
+
+    (aTargetAtomID == (self atomIDOf:#UTF8_STRING)
+     or:[aTargetAtomID == (self atomIDOf:#'text/plain;codeset=utf-8')]
+    ) ifTrue:[
+        "/ 'utf string' printCR.
+        "the other view wants the selection as utf8 string"
+        ^ aTargetAtomID -> (bufferAsString utf8Encoded).
+    ].
+
+    aTargetAtomID == (self atomIDOf:#LENGTH) ifTrue:[
+        "the other one wants to know the size of our selection.
+         LENGTH is deprecated, since we do not know how the selection is
+         going to be converted. The client must not rely on the length returned"
+
+        ^ (self atomIDOf:#INTEGER) -> (bufferAsString size).
     ].
 
     "we do not support the requestet target type"
-    ^ nil.
+    ^ nil -> nil.
 
     "Modified: / 23-08-2006 / 15:56:08 / cg"
 !
 
-primaryBufferAs:aTargetAtom
-    "convert the current selection to the format defined by aTargetAtom.
-     Answer the converted selection"
-
-    (aTargetAtom == (self atomIDOf:#STRING)) ifTrue:[
-	"the other view wants the selection as string"
-	^ self primaryBufferAsString.
-    ].
-
-    (aTargetAtom == (self atomIDOf:#UTF8_STRING)) ifTrue:[
-	"the other view wants the selection as utf8 string"
-	^ self primaryBufferAsString utf8Encoded.
-    ].
-
-    (aTargetAtom == (self atomIDOf:#TIMESTAMP)) ifTrue:[
-	"the other view wants to know when we acquired ownership of the selection"
-	^ selectionTime.
-    ].
-
-    (aTargetAtom == (self atomIDOf:#TARGETS)) ifTrue:[
-	"the other view wants to know which targets we support"
-	^ self supportedTargetAtoms copyWithoutFirst "/we do not support ST_OBJECT in primary
-    ].
-
-    aTargetAtom == (self atomIDOf:#LENGTH) ifTrue:[
-	"the other one wants to know the size of our selection.
-	 LENGTH is deprecated, since we do not know how the selection is
-	 going to be converted. The client must not rely on the length returned"
-
-	^ self primaryBufferAsString size
-    ].
-
-    "we do not support the requestet target type"
-    ^ nil.
-
-    "Modified: / 23-08-2006 / 15:56:08 / cg"
-    "Created: / 27-03-2012 / 14:49:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 setClipboardObject:anObject owner:aWindowId
     "set the object selection, and make aWindowId be the owner.
      This can be used by other Smalltalk(X) applications only.
      We set only the CLIPBOARD selection"
 
-    selectionTime := lastEventTime.
-    self setSelectionOwner:aWindowId of:clipboardAtom time:selectionTime
+    clipboardSelectionTime := lastEventTime.
+    self setSelectionOwner:aWindowId of:clipboardAtom time:clipboardSelectionTime
 !
 
 setClipboardText:aString owner:aWindowId
@@ -10919,10 +10892,10 @@
      We set both the PRIMARY and CLIPBOARD, so that you can paste
      into xterm."
 
-    selectionTime := lastEventTime.
-
-    self setSelectionOwner:aWindowId of:clipboardAtom time:selectionTime.
-    self setSelectionOwner:aWindowId of:primaryAtom time:selectionTime.
+    clipboardSelectionTime := primarySelectionTime := lastEventTime.
+
+    self setSelectionOwner:aWindowId of:clipboardAtom time:clipboardSelectionTime.
+    self setSelectionOwner:aWindowId of:primaryAtom time:primarySelectionTime.
 
     "Modified: / 17.6.1998 / 19:48:54 / cg"
 !
@@ -10932,9 +10905,9 @@
      This can be used by any other X application when middle-click
      pasting. X Window specific."
 
-    selectionTime := lastEventTime.
-
-    self setSelectionOwner:aWindowId of:primaryAtom time:selectionTime.
+    primarySelectionTime := lastEventTime.
+
+    self setSelectionOwner:aWindowId of:primaryAtom time:primarySelectionTime.
 
     "Created: / 27-03-2012 / 14:16:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -10943,17 +10916,12 @@
     "answer an integer array containing the list of supported targets
      i.e. supported clipboard formats"
 
-    |supportedTargets numericTargetArray|
-
     "Note: some sender code assumes that ST_OBJECT is first"
-    supportedTargets := #(ST_OBJECT STRING UTF8_STRING TIMESTAMP TARGETS LENGTH).
-
-    numericTargetArray := IntegerArray new:supportedTargets size.
-    supportedTargets keysAndValuesDo:[:index :targetSymbol|
-        numericTargetArray at:index put:(self atomIDOf:targetSymbol)
-    ].
-
-    ^ numericTargetArray
+    ^ #(ST_OBJECT STRING UTF8_STRING TIMESTAMP TARGETS LENGTH
+      #'text/plain' #'text/plain;codeset=utf-8'
+    ) collect:[:eachTargetSymbol|
+            self atomIDOf:eachTargetSymbol
+        ] as:IntegerArray.
 ! !
 
 !XWorkstation methodsFor:'selections-basic'!
@@ -10967,21 +10935,21 @@
     |selectionAtomID|
 
     selectionAtomSymbolOrID isString ifTrue:[
-	selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
+        selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
     ] ifFalse:[
-	selectionAtomID := selectionAtomSymbolOrID.
+        selectionAtomID := selectionAtomSymbolOrID.
     ].
 
 %{
     Window window;
 
     if (__isAtomID(selectionAtomID) && ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	ENTER_XLIB();
-	window = XGetSelectionOwner(dpy, __AtomVal(selectionAtomID));
-	LEAVE_XLIB();
-	RETURN ((window == None) ? nil : __MKEXTERNALADDRESS(window));
+        Display *dpy = myDpy;
+
+        ENTER_XLIB();
+        window = XGetSelectionOwner(dpy, __AtomVal(selectionAtomID));
+        LEAVE_XLIB();
+        RETURN ((window == None) ? nil : __MKEXTERNALADDRESS(window));
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -11005,34 +10973,34 @@
      && __isAtomID(typeID)
      && __isAtomID(propertyID)
      && __isAtomID(selectionID)) {
-	Display *dpy = myDpy;
-	Window w;
-	Time time;
-
-	if (__isExternalAddress(aWindowId)) {
-	    w = __WindowVal(aWindowId);
-	} else if (aWindowId == nil) {
-	    w = (Window)0;
-	} else
-	    goto err;
-
-	if (anIntegerTimestamp == nil) {
-	    /*
-	     * the ICCCM convention says: you should set the time to the time when
-	     * the selection was requested and not to CurrentTime
-	     */
-	    time = CurrentTime;
-	} else if (__isInteger(anIntegerTimestamp)) {
-	    time = __unsignedLongIntVal(anIntegerTimestamp);
-	} else
-	    goto err;
-
-	ENTER_XLIB();
-	XConvertSelection(dpy, __AtomVal(selectionID), __AtomVal(typeID),
-			       __AtomVal(propertyID), w, time);
-	LEAVE_XLIB();
-
-	RETURN (true);
+        Display *dpy = myDpy;
+        Window w;
+        Time time;
+
+        if (__isExternalAddress(aWindowId)) {
+            w = __WindowVal(aWindowId);
+        } else if (aWindowId == nil) {
+            w = (Window)0;
+        } else
+            goto err;
+
+        if (anIntegerTimestamp == nil) {
+            /*
+             * the ICCCM convention says: you should set the time to the time when
+             * the selection was requested and not to CurrentTime
+             */
+            time = CurrentTime;
+        } else if (__isInteger(anIntegerTimestamp)) {
+            time = __unsignedLongIntVal(anIntegerTimestamp);
+        } else
+            goto err;
+
+        ENTER_XLIB();
+        XConvertSelection(dpy, __AtomVal(selectionID), __AtomVal(typeID),
+                               __AtomVal(propertyID), w, time);
+        LEAVE_XLIB();
+
+        RETURN (true);
 err:;
     }
 %}.
@@ -11041,17 +11009,17 @@
 
     "
      Display
-	requestSelection:(Display atomIDOf:'PRIMARY')
-	property:(Display atomIDOf:'VT_SELECTION')
-	type:(Display atomIDOf:'STRING')
-	for:Transcript id
+        requestSelection:(Display atomIDOf:'PRIMARY')
+        property:(Display atomIDOf:'VT_SELECTION')
+        type:(Display atomIDOf:'STRING')
+        for:Transcript id
     "
     "
      Display
-	requestSelection:(Display atomIDOf:'PRIMARY')
-	property:(Display atomIDOf:'VT_SELECTION')
-	type:(Display atomIDOf:'C_STRING')
-	for:Transcript id
+        requestSelection:(Display atomIDOf:'PRIMARY')
+        property:(Display atomIDOf:'VT_SELECTION')
+        type:(Display atomIDOf:'C_STRING')
+        for:Transcript id
     "
 !
 
@@ -11065,72 +11033,72 @@
     <context: #return>
 %{
     if (ISCONNECTED
-	&& (__isAtomID(propertyID) || propertyID == nil)
-	&& __isAtomID(targetID) && __isAtomID(selectionID)) {
-	Display *dpy = myDpy;
-	XEvent ev;
-	Window requestor;
-	Status result;
-
-	if (__isExternalAddress(requestorID)) {
-	    requestor = __WindowVal(requestorID);
-	} else if (__isSmallInteger(requestorID)) {
-	    requestor = (Window)__smallIntegerVal(requestorID);
-	} else if (requestorID == nil) {
-	    requestor = DefaultRootWindow(dpy);
-	} else {
-	    requestor = (Window)__unsignedLongIntVal(requestorID);
-	}
-
-	ev.xselection.type = SelectionNotify;
-	ev.xselection.display = dpy;
-	ev.xselection.selection = __AtomVal(selectionID);
-	ev.xselection.target = __AtomVal(targetID);
-	ev.xselection.requestor = requestor;
-
-	if (__isExternalAddress(aTime)) {
-	    ev.xselection.time = (INT)(__externalAddressVal(aTime));
-	} else if (__isSmallInteger(aTime)) {
-	    ev.xselection.time = __smallIntegerVal(aTime);
-	} else if (aTime == nil) {
-	    ev.xselection.time = CurrentTime;
-	} else {
-	    ev.xselection.time = (INT)__unsignedLongIntVal(aTime);
-	}
+        && (__isAtomID(propertyID) || propertyID == nil)
+        && __isAtomID(targetID) && __isAtomID(selectionID)) {
+        Display *dpy = myDpy;
+        XEvent ev;
+        Window requestor;
+        Status result;
+
+        if (__isExternalAddress(requestorID)) {
+            requestor = __WindowVal(requestorID);
+        } else if (__isSmallInteger(requestorID)) {
+            requestor = (Window)__smallIntegerVal(requestorID);
+        } else if (requestorID == nil) {
+            requestor = DefaultRootWindow(dpy);
+        } else {
+            requestor = (Window)__unsignedLongIntVal(requestorID);
+        }
+
+        ev.xselection.type = SelectionNotify;
+        ev.xselection.display = dpy;
+        ev.xselection.selection = __AtomVal(selectionID);
+        ev.xselection.target = __AtomVal(targetID);
+        ev.xselection.requestor = requestor;
+
+        if (__isExternalAddress(aTime)) {
+            ev.xselection.time = (INT)(__externalAddressVal(aTime));
+        } else if (__isSmallInteger(aTime)) {
+            ev.xselection.time = __smallIntegerVal(aTime);
+        } else if (aTime == nil) {
+            ev.xselection.time = CurrentTime;
+        } else {
+            ev.xselection.time = (INT)__unsignedLongIntVal(aTime);
+        }
 #if 0
-	console_printf("ev.xselection.selection: %x\n", ev.xselection.selection);
-	console_printf("ev.xselection.target: %x\n", ev.xselection.target);
-	console_printf("ev.xselection.requestor: %x\n", ev.xselection.requestor);
-	console_printf("ev.xselection.time: %x\n", ev.xselection.time);
-	console_printf("requestor: %x\n", requestor);
-#endif
-
-	/* send nil property if selection cannot be converted */
-	if (propertyID == nil)
-	    ev.xselection.property = None;
-	else
-	    ev.xselection.property = __AtomVal(propertyID);
-
-
-	DPRINTF(("sending SelectionNotify sel=%"_lx_" prop=%"_lx_" target=%"_lx_" requestor=%"_lx_" to %"_lx_"\n",
-		(INT)ev.xselection.selection,
-		(INT)ev.xselection.property,
-		(INT)ev.xselection.target,
-		(INT)ev.xselection.requestor,
-		(INT)requestor));
-
-	ENTER_XLIB();
-	result = XSendEvent(dpy, requestor, False, 0 , &ev);
-	LEAVE_XLIB();
-
-	if ((result == BadValue) || (result == BadWindow)) {
-	    DPRINTF(("bad status\n"));
-	    RETURN (false);
-	}
-	ENTER_XLIB();
-	XFlush(dpy);
-	LEAVE_XLIB();
-	RETURN (true)
+        console_printf("ev.xselection.selection: %x\n", ev.xselection.selection);
+        console_printf("ev.xselection.target: %x\n", ev.xselection.target);
+        console_printf("ev.xselection.requestor: %x\n", ev.xselection.requestor);
+        console_printf("ev.xselection.time: %x\n", ev.xselection.time);
+        console_printf("requestor: %x\n", requestor);
+#endif
+
+        /* send nil property if selection cannot be converted */
+        if (propertyID == nil)
+            ev.xselection.property = None;
+        else
+            ev.xselection.property = __AtomVal(propertyID);
+
+
+        DPRINTF(("sending SelectionNotify sel=%"_lx_" prop=%"_lx_" target=%"_lx_" requestor=%"_lx_" to %"_lx_"\n",
+                (INT)ev.xselection.selection,
+                (INT)ev.xselection.property,
+                (INT)ev.xselection.target,
+                (INT)ev.xselection.requestor,
+                (INT)requestor));
+
+        ENTER_XLIB();
+        result = XSendEvent(dpy, requestor, False, 0 , &ev);
+        LEAVE_XLIB();
+
+        if ((result == BadValue) || (result == BadWindow)) {
+            DPRINTF(("bad status\n"));
+            RETURN (false);
+        }
+        ENTER_XLIB();
+        XFlush(dpy);
+        LEAVE_XLIB();
+        RETURN (true)
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -11153,9 +11121,9 @@
     selectionOwner := aWindowId.
 
     selectionAtomSymbolOrID isString ifTrue:[
-	selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
+        selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
     ] ifFalse:[
-	selectionAtomID := selectionAtomSymbolOrID.
+        selectionAtomID := selectionAtomSymbolOrID.
     ].
 
 %{
@@ -11164,27 +11132,27 @@
     if (__isExternalAddress(aWindowId)
      && __isAtomID(selectionAtomID)
      && ISCONNECTED) {
-	Display *dpy = myDpy;
-	Time time;
-
-	win = __WindowVal(aWindowId);
-
-	if (anIntegerTimestamp == nil) {
-	    /*
-	     * the ICCCM convention says: you should set the time to the time when
-	     * the selection was acquired and not to CurrentTime
-	     */
-	    time = CurrentTime;
-	} else if (__isInteger(anIntegerTimestamp)) {
-	    time = __unsignedLongIntVal(anIntegerTimestamp);
-	} else
-	    goto err;
-
-	DPRINTF(("setOwner prop=%"_lx_" win=%"_lx_"\n", (INT)__AtomVal(selectionAtomID), (INT)win));
-	ENTER_XLIB();
-	XSetSelectionOwner(dpy, __AtomVal(selectionAtomID), win, time);
-	RETURN (self);
-	LEAVE_XLIB();
+        Display *dpy = myDpy;
+        Time time;
+
+        win = __WindowVal(aWindowId);
+
+        if (anIntegerTimestamp == nil) {
+            /*
+             * the ICCCM convention says: you should set the time to the time when
+             * the selection was acquired and not to CurrentTime
+             */
+            time = CurrentTime;
+        } else if (__isInteger(anIntegerTimestamp)) {
+            time = __unsignedLongIntVal(anIntegerTimestamp);
+        } else
+            goto err;
+
+        DPRINTF(("setOwner prop=%"_lx_" win=%"_lx_"\n", (INT)__AtomVal(selectionAtomID), (INT)win));
+        ENTER_XLIB();
+        XSetSelectionOwner(dpy, __AtomVal(selectionAtomID), win, time);
+        RETURN (self);
+        LEAVE_XLIB();
     }
 err:;
 %}.
@@ -11202,10 +11170,10 @@
     allChildIDs := OrderedCollection new.
     childIDs := self childIdsOf:aWindowId.
     childIDs notNil ifTrue:[
-	allChildIDs addAll:childIDs.
-	childIDs do:[:eachChildId |
-	    allChildIDs addAll:(self allChildIdsOf:eachChildId).
-	].
+        allChildIDs addAll:childIDs.
+        childIDs do:[:eachChildId |
+            allChildIDs addAll:(self allChildIdsOf:eachChildId).
+        ].
     ].
     ^ allChildIDs
 
@@ -11219,20 +11187,20 @@
      deviceIDAtom := (Display atomIDOf:#'STX_DEVICE_ID').
      uuidAtom     := (Display atomIDOf:#'UUID').
      (Display allChildIdsOf:(Display rootWindowId))
-	select:[:id |
-	    |uuid|
-
-	    Display
-		getProperty:deviceIDAtom
-		from:id
-		delete:false
-		into:[:type :value |
-		    type == uuidAtom ifTrue:[
-			uuid := UUID fromBytes:value.
-		    ].
-		].
-	    uuid notNil.
-	]
+        select:[:id |
+            |uuid|
+
+            Display
+                getProperty:deviceIDAtom
+                from:id
+                delete:false
+                into:[:type :value |
+                    type == uuidAtom ifTrue:[
+                        uuid := UUID fromBytes:value.
+                    ].
+                ].
+            uuid notNil.
+        ]
     "
 !
 
@@ -11246,35 +11214,35 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	Display *dpy = myDpy;
-	Window win = __WindowVal(aWindowId);
-	Window rootReturn, parentReturn;
-	Window* children = (Window *)0;
-	unsigned int numChildren;
-	int i;
-	int rslt;
-
-	ENTER_XLIB();
-	rslt = XQueryTree(dpy, win,
-		       &rootReturn, &parentReturn,
-		       &children, &numChildren);
-	LEAVE_XLIB();
-	if (rslt) {
-	    childIdArray = __ARRAY_NEW_INT(numChildren);
-	    if (childIdArray != nil) {
-		for (i=0; i < numChildren; i++) {
-		    if (children[i]) {
-			OBJ childId;
-
-			childId = __MKEXTERNALADDRESS(children[i]);
-			__ArrayInstPtr(childIdArray)->a_element[i] = childId;
-			__STORE(childIdArray, childId);
-		    }
-		}
-		if (children) XFree(children);
-	    }
-	    RETURN (childIdArray);
-	}
+        Display *dpy = myDpy;
+        Window win = __WindowVal(aWindowId);
+        Window rootReturn, parentReturn;
+        Window* children = (Window *)0;
+        unsigned int numChildren;
+        int i;
+        int rslt;
+
+        ENTER_XLIB();
+        rslt = XQueryTree(dpy, win,
+                       &rootReturn, &parentReturn,
+                       &children, &numChildren);
+        LEAVE_XLIB();
+        if (rslt) {
+            childIdArray = __ARRAY_NEW_INT(numChildren);
+            if (childIdArray != nil) {
+                for (i=0; i < numChildren; i++) {
+                    if (children[i]) {
+                        OBJ childId;
+
+                        childId = __MKEXTERNALADDRESS(children[i]);
+                        __ArrayInstPtr(childIdArray)->a_element[i] = childId;
+                        __STORE(childIdArray, childId);
+                    }
+                }
+                if (children) XFree(children);
+            }
+            RETURN (childIdArray);
+        }
     }
 %}.
     ^ nil.
@@ -11297,17 +11265,17 @@
     OBJ id;
 
     if (__INST(rootId) != nil) {
-	RETURN (__INST(rootId));
+        RETURN (__INST(rootId));
     }
 
     if (ISCONNECTED) {
-	root = RootWindow(myDpy, screen);
-	if (! root) {
-	    id = nil;
-	} else {
-	    id = __MKEXTERNALADDRESS(root); __INST(rootId) = id; __STORE(self, id);
-	}
-	RETURN (id);
+        root = RootWindow(myDpy, screen);
+        if (! root) {
+            id = nil;
+        } else {
+            id = __MKEXTERNALADDRESS(root); __INST(rootId) = id; __STORE(self, id);
+        }
+        RETURN (id);
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -11332,92 +11300,92 @@
     OBJ id;
 
     if (__INST(virtualRootId) != nil) {
-	RETURN (__INST(virtualRootId));
+        RETURN (__INST(virtualRootId));
     }
 
     if (ISCONNECTED) {
-	Display *dpy = myDpy;
-
-	rootWin = RootWindow(dpy, screen);
+        Display *dpy = myDpy;
+
+        rootWin = RootWindow(dpy, screen);
 #ifndef IRIS
 
-	/*
-	 * on IRIS, this creates a badwindow error - why ?
-	 * children contains a funny window (000034)
-	 */
-
-	/*
-	 * care for virtual root windows (tvtwm & friends)
-	 */
-	{
-	    Atom vRootAtom, kwinAtom;
-	    int i;
-	    Window rootReturn, parentReturn;
-	    Window* children = (Window *)0;
-	    unsigned int numChildren;
-	    int ignoreVRoot = 0;
-
-	    /*
-	     * Take care of KDE 2.1.
-	     * they define _SWM_ROOT but this is not the parent of
-	     * the application windows.
-	     * Instead it is used for background painting
-	     */
-
-	    kwinAtom = XInternAtom(dpy, "KWIN_RUNNING", True);
-	    if (kwinAtom != None) {
-		Atom actual_type;
-		int actual_format;
-		unsigned long nitems, bytesafter;
-		unsigned char *retVal = 0;
-
-		ignoreVRoot = XGetWindowProperty(dpy, rootWin, kwinAtom,
-				       0L, 1L, False, kwinAtom,
-				       &actual_type, &actual_format,
-				       &nitems, &bytesafter, &retVal) == Success
-			      && actual_type != 0;
-		if (retVal)
-		    XFree(retVal);
-	    }
-
-	    if (!ignoreVRoot) {
-		vRootAtom = XInternAtom(dpy, "__SWM_VROOT", True);
-		if (vRootAtom != None) {
-		    if (XQueryTree(dpy, rootWin,
-				       &rootReturn, &parentReturn,
-				       &children, &numChildren)) {
-			for (i=0; i < numChildren; i++) {
-			    Atom actual_type;
-			    int actual_format;
-			    unsigned long nitems, bytesafter;
-			    Window* newRoot = (Window*) 0;
-
-			    if (children[i]) {
-				if (XGetWindowProperty(dpy, children[i], vRootAtom,
-						       0L, 1L, False, XA_WINDOW,
-						       &actual_type, &actual_format,
-						       &nitems, &bytesafter,
-						       (unsigned char**) &newRoot
-						      ) == Success && newRoot) {
-				    vRootWin = *newRoot;
-				    XFree(newRoot); /* XXX */
-				    break;
-				}
-			    }
-			}
-			if (children) XFree(children);
-		    }
-		}
-	     }
-	}
+        /*
+         * on IRIS, this creates a badwindow error - why ?
+         * children contains a funny window (000034)
+         */
+
+        /*
+         * care for virtual root windows (tvtwm & friends)
+         */
+        {
+            Atom vRootAtom, kwinAtom;
+            int i;
+            Window rootReturn, parentReturn;
+            Window* children = (Window *)0;
+            unsigned int numChildren;
+            int ignoreVRoot = 0;
+
+            /*
+             * Take care of KDE 2.1.
+             * they define _SWM_ROOT but this is not the parent of
+             * the application windows.
+             * Instead it is used for background painting
+             */
+
+            kwinAtom = XInternAtom(dpy, "KWIN_RUNNING", True);
+            if (kwinAtom != None) {
+                Atom actual_type;
+                int actual_format;
+                unsigned long nitems, bytesafter;
+                unsigned char *retVal = 0;
+
+                ignoreVRoot = XGetWindowProperty(dpy, rootWin, kwinAtom,
+                                       0L, 1L, False, kwinAtom,
+                                       &actual_type, &actual_format,
+                                       &nitems, &bytesafter, &retVal) == Success
+                              && actual_type != 0;
+                if (retVal)
+                    XFree(retVal);
+            }
+
+            if (!ignoreVRoot) {
+                vRootAtom = XInternAtom(dpy, "__SWM_VROOT", True);
+                if (vRootAtom != None) {
+                    if (XQueryTree(dpy, rootWin,
+                                       &rootReturn, &parentReturn,
+                                       &children, &numChildren)) {
+                        for (i=0; i < numChildren; i++) {
+                            Atom actual_type;
+                            int actual_format;
+                            unsigned long nitems, bytesafter;
+                            Window* newRoot = (Window*) 0;
+
+                            if (children[i]) {
+                                if (XGetWindowProperty(dpy, children[i], vRootAtom,
+                                                       0L, 1L, False, XA_WINDOW,
+                                                       &actual_type, &actual_format,
+                                                       &nitems, &bytesafter,
+                                                       (unsigned char**) &newRoot
+                                                      ) == Success && newRoot) {
+                                    vRootWin = *newRoot;
+                                    XFree(newRoot); /* XXX */
+                                    break;
+                                }
+                            }
+                        }
+                        if (children) XFree(children);
+                    }
+                }
+             }
+        }
 #endif
     }
 
     if (! vRootWin) {
-	vRootWin = rootWin;
-	if (! vRootWin) {
-	    RETURN ( nil );
-	}
+        vRootWin = rootWin;
+        if (! vRootWin) {
+            RETURN ( nil );
+        }
     }
     id = __MKEXTERNALADDRESS(rootWin); __INST(rootId) = id; __STORE(self, id);
     id = __MKEXTERNALADDRESS(vRootWin); __INST(virtualRootId) = id; __STORE(self, id);
@@ -11440,21 +11408,21 @@
     int w, h;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aWindowId)
-	 && __bothSmallInteger(x, y)
-	 && __bothSmallInteger(width, height)) {
-	    w = __intVal(width);
-	    h = __intVal(height);
-	    /*
-	     * need this check here: some servers simply dump core with bad args
-	     */
-	    if ((w >= 0) && (h >= 0)) {
-		ENTER_XLIB();
-		XClearArea(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y), w, h, 0);
-		LEAVE_XLIB();
-	    }
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aWindowId)
+         && __bothSmallInteger(x, y)
+         && __bothSmallInteger(width, height)) {
+            w = __intVal(width);
+            h = __intVal(height);
+            /*
+             * need this check here: some servers simply dump core with bad args
+             */
+            if ((w >= 0) && (h >= 0)) {
+                ENTER_XLIB();
+                XClearArea(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y), w, h, 0);
+                LEAVE_XLIB();
+            }
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -11467,12 +11435,12 @@
 %{
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aWindowId)) {
-	    ENTER_XLIB();
-	    XClearWindow(myDpy, __WindowVal(aWindowId));
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aWindowId)) {
+            ENTER_XLIB();
+            XClearWindow(myDpy, __WindowVal(aWindowId));
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11488,29 +11456,29 @@
     int mask = CWSibling | CWStackMode;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aWindowId)
-	 && __isExternalAddress(siblingId)) {
-	    if (modeSymbol == @symbol(above)) {
-		chg.stack_mode = Above;
-	    } else if (modeSymbol == @symbol(below)) {
-		chg.stack_mode = Below;
-	    } else if (modeSymbol == @symbol(topIf)) {
-		chg.stack_mode = TopIf;
-	    } else if (modeSymbol == @symbol(bottomIf)) {
-		chg.stack_mode = BottomIf;
-	    } else if (modeSymbol == @symbol(opposite)) {
-		chg.stack_mode = Opposite;
-	    } else {
-		mask = CWSibling;
-	    }
-
-	    chg.sibling = __WindowVal(siblingId);
-	    ENTER_XLIB();
-	    XConfigureWindow(myDpy, __WindowVal(aWindowId),
-				    mask, &chg);
-	    LEAVE_XLIB();
-	    RETURN ( self );
-	}
+        if (__isExternalAddress(aWindowId)
+         && __isExternalAddress(siblingId)) {
+            if (modeSymbol == @symbol(above)) {
+                chg.stack_mode = Above;
+            } else if (modeSymbol == @symbol(below)) {
+                chg.stack_mode = Below;
+            } else if (modeSymbol == @symbol(topIf)) {
+                chg.stack_mode = TopIf;
+            } else if (modeSymbol == @symbol(bottomIf)) {
+                chg.stack_mode = BottomIf;
+            } else if (modeSymbol == @symbol(opposite)) {
+                chg.stack_mode = Opposite;
+            } else {
+                mask = CWSibling;
+            }
+
+            chg.sibling = __WindowVal(siblingId);
+            ENTER_XLIB();
+            XConfigureWindow(myDpy, __WindowVal(aWindowId),
+                                    mask, &chg);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
     }
 bad: ;
 %}.
@@ -11533,30 +11501,30 @@
 %{
     int x_ret, y_ret;
     unsigned int width_ret, height_ret,
-		 border_width_ret, depth_ret;
+                 border_width_ret, depth_ret;
     Window root_ret;
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	ENTER_XLIB();
-	XGetGeometry(myDpy, __WindowVal(aWindowId),
-		     &root_ret,
-		     &x_ret, &y_ret,
-		     &width_ret, &height_ret, &border_width_ret,
-		     &depth_ret);
-	LEAVE_XLIB();
-
-	x = __MKSMALLINT(x_ret);
-	y = __MKSMALLINT(y_ret);
-	width = __MKSMALLINT(width_ret);
-	height = __MKSMALLINT(height_ret);
-	depth = __MKSMALLINT(depth_ret);
-	borderWidth = __MKSMALLINT(border_width_ret);
+        ENTER_XLIB();
+        XGetGeometry(myDpy, __WindowVal(aWindowId),
+                     &root_ret,
+                     &x_ret, &y_ret,
+                     &width_ret, &height_ret, &border_width_ret,
+                     &depth_ret);
+        LEAVE_XLIB();
+
+        x = __MKSMALLINT(x_ret);
+        y = __MKSMALLINT(y_ret);
+        width = __MKSMALLINT(width_ret);
+        height = __MKSMALLINT(height_ret);
+        depth = __MKSMALLINT(depth_ret);
+        borderWidth = __MKSMALLINT(border_width_ret);
     }
 %}.
     borderWidth isNil ifTrue:[
-	self primitiveFailedOrClosedConnection.
-	^ nil
+        self primitiveFailedOrClosedConnection.
+        ^ nil
     ].
     info := Dictionary new.
     info at:#origin put:(x @ y).
@@ -11567,15 +11535,15 @@
 
     "
      Transcript topView device
-	getGeometryOf:(Transcript id)
+        getGeometryOf:(Transcript id)
     "
     "
      Transcript topView device
-	getGeometryOf:(Transcript topView id)
+        getGeometryOf:(Transcript topView id)
     "
     "
      Display
-	getGeometryOf:(Display viewIdFromUser)
+        getGeometryOf:(Display viewIdFromUser)
     "
     "
      |d|
@@ -11596,22 +11564,22 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	char *name = NULL;
-	Status ok;
-	Window root, parent, *children = NULL;
-	unsigned int nChildren;
+        char *name = NULL;
+        Status ok;
+        Window root, parent, *children = NULL;
+        unsigned int nChildren;
 
 /*        ENTER_XLIB(); */
-	ok = XQueryTree(myDpy, __WindowVal(aWindowId),
-			&root, &parent, &children, &nChildren);
-	if (children) {
-	    XFree(children);
-	}
+        ok = XQueryTree(myDpy, __WindowVal(aWindowId),
+                        &root, &parent, &children, &nChildren);
+        if (children) {
+            XFree(children);
+        }
 /*        LEAVE_XLIB();   */
-	if (ok) {
-	    RETURN (true);
-	}
-	RETURN (false);
+        if (ok) {
+            RETURN (true);
+        }
+        RETURN (false);
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -11641,17 +11609,17 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	ENTER_XLIB();
-	XLowerWindow(myDpy, __WindowVal(aWindowId));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XLowerWindow(myDpy, __WindowVal(aWindowId));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
 !
 
 mapView:aView id:aWindowId iconified:aBoolean atX:xPos y:yPos
-	      width:w height:h minExtent:minExt maxExtent:maxExt
+              width:w height:h minExtent:minExt maxExtent:maxExt
 
     <context: #return>
 
@@ -11663,26 +11631,26 @@
     |wicon wiconId iconMaskId wiconView wiconViewId wlabel minW minH maxW maxH|
 
     aBoolean ifTrue:[
-	wicon := aView icon.
-	wicon notNil ifTrue:[
-	    wiconId := wicon id.
-	    wicon mask notNil ifTrue:[
-		iconMaskId := wicon mask id.
-	    ].
-	].
-	wiconView := aView iconView.
-	wiconView notNil ifTrue:[
-	    wiconViewId := wiconView id
-	].
-	wlabel := aView label.
+        wicon := aView icon.
+        wicon notNil ifTrue:[
+            wiconId := wicon id.
+            wicon mask notNil ifTrue:[
+                iconMaskId := wicon mask id.
+            ].
+        ].
+        wiconView := aView iconView.
+        wiconView notNil ifTrue:[
+            wiconViewId := wiconView id
+        ].
+        wlabel := aView label.
     ].
     minExt notNil ifTrue:[
-	minW := minExt x.
-	minH := minExt y.
+        minW := minExt x.
+        minH := minExt y.
     ].
     maxExt notNil ifTrue:[
-	maxW := maxExt x.
-	maxH := maxExt y.
+        maxW := maxExt x.
+        maxH := maxExt y.
     ].
 %{
 
@@ -11692,91 +11660,91 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	Display *dpy = myDpy;
-
-	win = __WindowVal(aWindowId);
-
-	szhints.flags = 0;
-	if (__bothSmallInteger(xPos, yPos)) {
-	    szhints.x = __intVal(xPos);
-	    szhints.y = __intVal(yPos);
-	    szhints.flags |= USPosition;
-	}
-	if (__bothSmallInteger(w, h)) {
-	    szhints.width = __intVal(w);
-	    szhints.height = __intVal(h);
-	    szhints.flags |= USSize;
-	}
-	if (__bothSmallInteger(minW, minH)) {
-	    szhints.flags |= PMinSize;
-	    szhints.min_width = __intVal(minW);
-	    szhints.min_height = __intVal(minH);
-	}
-	if (__bothSmallInteger(maxW, maxH)) {
-	    szhints.flags |= PMaxSize;
-	    szhints.max_width = __intVal(maxW);
-	    szhints.max_height = __intVal(maxH);
-	}
-
-	if (aBoolean == true) {
-	    char *windowName = "";
-	    Pixmap iconBitmap = (Pixmap)0;
-	    Pixmap iconMask = (Pixmap)0;
-	    Window iconWindow = (Window)0;
-
-	    if (__isExternalAddress(wiconId))
-		iconBitmap = __PixmapVal(wiconId);
-
-	    if (__isExternalAddress(iconMaskId)) {
-		iconMask = __PixmapVal(iconMaskId);
-	    }
-
-	    if (__isExternalAddress(wiconViewId))
-		iconWindow = __WindowVal(wiconViewId);
-
-	    if (__isStringLike(wlabel))
-		windowName = (char *) __stringVal(wlabel);
-
-	    if (iconBitmap || windowName) {
-		ENTER_XLIB();
-		XSetStandardProperties(dpy, win,
-					windowName, windowName,
-					iconBitmap,
-					0, 0, &szhints);
-		LEAVE_XLIB();
-	    }
-
-	    wmhints.flags = 0;
-	    if (iconBitmap) {
-		wmhints.flags |= IconPixmapHint;
-		wmhints.icon_pixmap = iconBitmap;
-	    }
-	    if (iconMask) {
-		wmhints.flags |= IconMaskHint;
-		wmhints.icon_mask = iconMask;
-	    }
-	    if (iconWindow) {
-		wmhints.flags |= IconWindowHint;
-		wmhints.icon_window = iconWindow;
-	    }
-
-	    wmhints.initial_state = IconicState;
-	    wmhints.flags |= StateHint;
-	    ENTER_XLIB();
-	    XSetWMHints(dpy, win, &wmhints);
-	    LEAVE_XLIB();
-	}
-
-	if (szhints.flags) {
-	    ENTER_XLIB();
-	    XSetNormalHints(dpy, win, &szhints);
-	    LEAVE_XLIB();
-	}
-
-	ENTER_XLIB();
-	XMapWindow(dpy, win);
-	LEAVE_XLIB();
-	RETURN ( self );
+        Display *dpy = myDpy;
+
+        win = __WindowVal(aWindowId);
+
+        szhints.flags = 0;
+        if (__bothSmallInteger(xPos, yPos)) {
+            szhints.x = __intVal(xPos);
+            szhints.y = __intVal(yPos);
+            szhints.flags |= USPosition;
+        }
+        if (__bothSmallInteger(w, h)) {
+            szhints.width = __intVal(w);
+            szhints.height = __intVal(h);
+            szhints.flags |= USSize;
+        }
+        if (__bothSmallInteger(minW, minH)) {
+            szhints.flags |= PMinSize;
+            szhints.min_width = __intVal(minW);
+            szhints.min_height = __intVal(minH);
+        }
+        if (__bothSmallInteger(maxW, maxH)) {
+            szhints.flags |= PMaxSize;
+            szhints.max_width = __intVal(maxW);
+            szhints.max_height = __intVal(maxH);
+        }
+
+        if (aBoolean == true) {
+            char *windowName = "";
+            Pixmap iconBitmap = (Pixmap)0;
+            Pixmap iconMask = (Pixmap)0;
+            Window iconWindow = (Window)0;
+
+            if (__isExternalAddress(wiconId))
+                iconBitmap = __PixmapVal(wiconId);
+
+            if (__isExternalAddress(iconMaskId)) {
+                iconMask = __PixmapVal(iconMaskId);
+            }
+
+            if (__isExternalAddress(wiconViewId))
+                iconWindow = __WindowVal(wiconViewId);
+
+            if (__isStringLike(wlabel))
+                windowName = (char *) __stringVal(wlabel);
+
+            if (iconBitmap || windowName) {
+                ENTER_XLIB();
+                XSetStandardProperties(dpy, win,
+                                        windowName, windowName,
+                                        iconBitmap,
+                                        0, 0, &szhints);
+                LEAVE_XLIB();
+            }
+
+            wmhints.flags = 0;
+            if (iconBitmap) {
+                wmhints.flags |= IconPixmapHint;
+                wmhints.icon_pixmap = iconBitmap;
+            }
+            if (iconMask) {
+                wmhints.flags |= IconMaskHint;
+                wmhints.icon_mask = iconMask;
+            }
+            if (iconWindow) {
+                wmhints.flags |= IconWindowHint;
+                wmhints.icon_window = iconWindow;
+            }
+
+            wmhints.initial_state = IconicState;
+            wmhints.flags |= StateHint;
+            ENTER_XLIB();
+            XSetWMHints(dpy, win, &wmhints);
+            LEAVE_XLIB();
+        }
+
+        if (szhints.flags) {
+            ENTER_XLIB();
+            XSetNormalHints(dpy, win, &szhints);
+            LEAVE_XLIB();
+        }
+
+        ENTER_XLIB();
+        XMapWindow(dpy, win);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11790,10 +11758,10 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	ENTER_XLIB();
-	XMapWindow(myDpy, __WindowVal(aWindowId));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XMapWindow(myDpy, __WindowVal(aWindowId));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11811,16 +11779,16 @@
      && __isExternalAddress(aWindowId)
      && __bothSmallInteger(w, h)
      && __bothSmallInteger(x, y)) {
-	newWidth = __intVal(w);
-	newHeight = __intVal(h);
-	if (newWidth < 1) newWidth = 1;
-	if (newHeight < 1) newHeight = 1;
-	ENTER_XLIB();
-	XMoveResizeWindow(myDpy, __WindowVal(aWindowId),
-			      __intVal(x), __intVal(y),
-			      newWidth, newHeight);
-	LEAVE_XLIB();
-	RETURN ( self );
+        newWidth = __intVal(w);
+        newHeight = __intVal(h);
+        if (newWidth < 1) newWidth = 1;
+        if (newHeight < 1) newHeight = 1;
+        ENTER_XLIB();
+        XMoveResizeWindow(myDpy, __WindowVal(aWindowId),
+                              __intVal(x), __intVal(y),
+                              newWidth, newHeight);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11834,10 +11802,10 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId) && __bothSmallInteger(x, y)) {
-	ENTER_XLIB();
-	XMoveWindow(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XMoveWindow(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11851,21 +11819,21 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	Status ok;
-	Window root, parent, *children = NULL;
-	unsigned int nChildren;
+        Status ok;
+        Window root, parent, *children = NULL;
+        unsigned int nChildren;
 
 /*        ENTER_XLIB(); */
-	ok = XQueryTree(myDpy, __WindowVal(aWindowId),
-			&root, &parent, &children, &nChildren);
-	if (children) {
-	    XFree(children);
-	}
+        ok = XQueryTree(myDpy, __WindowVal(aWindowId),
+                        &root, &parent, &children, &nChildren);
+        if (children) {
+            XFree(children);
+        }
 /*        LEAVE_XLIB();   */
-	if (! ok) {
-	    RETURN ( nil );
-	}
-	RETURN ( __MKEXTERNALADDRESS(parent) );
+        if (! ok) {
+            RETURN ( nil );
+        }
+        RETURN ( __MKEXTERNALADDRESS(parent) );
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -11887,10 +11855,10 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	ENTER_XLIB();
-	XRaiseWindow(myDpy, __WindowVal(aWindowId));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XRaiseWindow(myDpy, __WindowVal(aWindowId));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11904,32 +11872,32 @@
     if (ISCONNECTED
      && __isExternalAddress(windowId)
      && __isExternalAddress(newParentWindowId)) {
-	Display *dpy = myDpy;
-	Window _child, _newParent;
-	int i;
-
-	_child = __WindowVal(windowId);
-	_newParent = __WindowVal(newParentWindowId);
-	ENTER_XLIB();
+        Display *dpy = myDpy;
+        Window _child, _newParent;
+        int i;
+
+        _child = __WindowVal(windowId);
+        _newParent = __WindowVal(newParentWindowId);
+        ENTER_XLIB();
 
 #if 0
-	XWithdrawWindow (dpy, _child, DefaultScreen(dpy));
-	XSync (dpy, 0);
-#endif
-	/*
-	 * Code 'stolen' from xswallow source ...
-	 * ... mhmh - what is this loop for ?
-	 */
-	for (i=0; i<5; i++) {
-	    XReparentWindow (dpy, _child, _newParent, 0, 0);
-	    XSync (dpy, 0);
-	}
+        XWithdrawWindow (dpy, _child, DefaultScreen(dpy));
+        XSync (dpy, 0);
+#endif
+        /*
+         * Code 'stolen' from xswallow source ...
+         * ... mhmh - what is this loop for ?
+         */
+        for (i=0; i<5; i++) {
+            XReparentWindow (dpy, _child, _newParent, 0, 0);
+            XSync (dpy, 0);
+        }
 #if 0
-	XMapWindow (dpy, _child);
-	XSync (dpy, 0);
-#endif
-	LEAVE_XLIB();
-	RETURN ( true );
+        XMapWindow (dpy, _child);
+        XSync (dpy, 0);
+#endif
+        LEAVE_XLIB();
+        RETURN ( true );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11945,14 +11913,14 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId) && __bothSmallInteger(w, h)) {
-	newWidth = __intVal(w);
-	newHeight = __intVal(h);
-	if (newWidth < 1) newWidth = 1;
-	if (newHeight < 1) newHeight = 1;
-	ENTER_XLIB();
-	XResizeWindow(myDpy, __WindowVal(aWindowId), newWidth, newHeight);
-	LEAVE_XLIB();
-	RETURN ( self );
+        newWidth = __intVal(w);
+        newHeight = __intVal(h);
+        if (newWidth < 1) newWidth = 1;
+        if (newHeight < 1) newHeight = 1;
+        ENTER_XLIB();
+        XResizeWindow(myDpy, __WindowVal(aWindowId), newWidth, newHeight);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11968,18 +11936,18 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	if (__INST(ignoreBackingStore) != true) {
-	    if (how == @symbol(always)) wa.backing_store = Always;
-	    else if (how == @symbol(whenMapped)) wa.backing_store = WhenMapped;
-	    else if (how == true) wa.backing_store = Always;
-	    else wa.backing_store = 0;
-
-	    ENTER_XLIB();
-	    XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBackingStore, &wa);
-	    LEAVE_XLIB();
-
-	}
-	RETURN ( self );
+        if (__INST(ignoreBackingStore) != true) {
+            if (how == @symbol(always)) wa.backing_store = Always;
+            else if (how == @symbol(whenMapped)) wa.backing_store = WhenMapped;
+            else if (how == true) wa.backing_store = Always;
+            else wa.backing_store = 0;
+
+            ENTER_XLIB();
+            XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBackingStore, &wa);
+            LEAVE_XLIB();
+
+        }
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -11995,34 +11963,34 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	if (how == @symbol(NorthWest)) {
-	    wa.bit_gravity = NorthWestGravity;
-	} else if (how == @symbol(NorthEast)) {
-	    wa.bit_gravity = NorthEastGravity;
-	} else if (how == @symbol(SouthWest)) {
-	    wa.bit_gravity = SouthWestGravity;
-	} else if (how == @symbol(SouthEast)) {
-	    wa.bit_gravity = SouthEastGravity;
-	} else if (how == @symbol(Center)) {
-	    wa.bit_gravity = CenterGravity;
-	} else if (how == @symbol(North)) {
-	    wa.bit_gravity = NorthGravity;
-	} else if (how == @symbol(South)) {
-	    wa.bit_gravity = SouthGravity;
-	} else if (how == @symbol(West)) {
-	    wa.bit_gravity = WestGravity;
-	} else if (how == @symbol(East)) {
-	    wa.bit_gravity = EastGravity;
-	} else {
-	    wa.bit_gravity = NorthWestGravity;
-	}
-
-
-	ENTER_XLIB();
-	XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBitGravity, &wa);
-	LEAVE_XLIB();
-
-	RETURN ( self );
+        if (how == @symbol(NorthWest)) {
+            wa.bit_gravity = NorthWestGravity;
+        } else if (how == @symbol(NorthEast)) {
+            wa.bit_gravity = NorthEastGravity;
+        } else if (how == @symbol(SouthWest)) {
+            wa.bit_gravity = SouthWestGravity;
+        } else if (how == @symbol(SouthEast)) {
+            wa.bit_gravity = SouthEastGravity;
+        } else if (how == @symbol(Center)) {
+            wa.bit_gravity = CenterGravity;
+        } else if (how == @symbol(North)) {
+            wa.bit_gravity = NorthGravity;
+        } else if (how == @symbol(South)) {
+            wa.bit_gravity = SouthGravity;
+        } else if (how == @symbol(West)) {
+            wa.bit_gravity = WestGravity;
+        } else if (how == @symbol(East)) {
+            wa.bit_gravity = EastGravity;
+        } else {
+            wa.bit_gravity = NorthWestGravity;
+        }
+
+
+        ENTER_XLIB();
+        XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBitGravity, &wa);
+        LEAVE_XLIB();
+
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12037,16 +12005,16 @@
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)
      && __isExternalAddress(aCursorId)) {
-	Display *dpy = myDpy;
-	Window w = __WindowVal(aWindowId);
-	Cursor c = __CursorVal(aCursorId);
-
-	if (w && c) {
-	    ENTER_XLIB();
-	    XDefineCursor(dpy, w, c);
-	    LEAVE_XLIB();
-	}
-	RETURN ( self );
+        Display *dpy = myDpy;
+        Window w = __WindowVal(aWindowId);
+        Cursor c = __CursorVal(aCursorId);
+
+        if (w && c) {
+            ENTER_XLIB();
+            XDefineCursor(dpy, w, c);
+            LEAVE_XLIB();
+        }
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12062,18 +12030,18 @@
 
     activeWindowAtom := self atomIDOf:#'_NET_ACTIVE_WINDOW' create:false.
     activeWindowAtom notNil ifTrue:[
-	self
-	    sendClientEvent:activeWindowAtom
-	    format:32
-	    to:(self rootWindowId)
-	    propagate:false
-	    eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
-	    window:aWindowId
-	    data1:2                 "activate request from pager. This is a trick: kwm ignores requests from applications (1)"
-	    data2:nil
-	    data3:nil
-	    data4:nil
-	    data5:nil.
+        self
+            sendClientEvent:activeWindowAtom
+            format:32
+            to:(self rootWindowId)
+            propagate:false
+            eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
+            window:aWindowId
+            data1:2                 "activate request from pager. This is a trick: kwm ignores requests from applications (1)"
+            data2:nil
+            data3:nil
+            data4:nil
+            data5:nil.
     ].
 
     "
@@ -12092,10 +12060,10 @@
 
     utf8String := aString utf8Encoded.
     aString isWideString ifTrue:[
-	"/ X does not like 2-byte labels ...
-	simpleString := aString asSingleByteStringReplaceInvalidWith:$?
+        "/ X does not like 2-byte labels ...
+        simpleString := aString asSingleByteStringReplaceInvalidWith:$?
     ] ifFalse:[
-	simpleString := aString.
+        simpleString := aString.
     ].
 
 %{
@@ -12106,17 +12074,17 @@
      && __isStringLike(simpleString)
      && __isExternalAddress(aWindowId)) {
 
-	titleProperty.value =  __stringVal(utf8String);
-	titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
-	titleProperty.format = 8;
-	titleProperty.nitems = __stringSize(utf8String);
-
-	ENTER_XLIB();
-	XSetIconName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
-	/* alternative settings for UTF8-Strings */
-	XSetWMIconName(myDpy, __WindowVal(aWindowId), &titleProperty);
-	LEAVE_XLIB();
-	RETURN ( self );
+        titleProperty.value =  __stringVal(utf8String);
+        titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
+        titleProperty.format = 8;
+        titleProperty.nitems = __stringSize(utf8String);
+
+        ENTER_XLIB();
+        XSetIconName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
+        /* alternative settings for UTF8-Strings */
+        XSetWMIconName(myDpy, __WindowVal(aWindowId), &titleProperty);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12132,13 +12100,13 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	if (__INST(hasSaveUnder) == true) {
-	    wa.save_under = (yesOrNo == true) ? 1 : 0;
-	    ENTER_XLIB();
-	    XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWSaveUnder, &wa);
-	    LEAVE_XLIB();
-	}
-	RETURN ( self );
+        if (__INST(hasSaveUnder) == true) {
+            wa.save_under = (yesOrNo == true) ? 1 : 0;
+            ENTER_XLIB();
+            XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWSaveUnder, &wa);
+            LEAVE_XLIB();
+        }
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12152,21 +12120,21 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	Window w;
-
-	if ((aMainWindowId == nil) || (aMainWindowId == __MKSMALLINT(0))) {
-	    w = (Window) 0;
-	} else {
-	    if (__isExternalAddress(aMainWindowId)) {
-		w = __WindowVal(aMainWindowId);
-	    } else {
-		goto getOutOfHere;
-	    }
-	}
-	ENTER_XLIB();
-	XSetTransientForHint(myDpy, __WindowVal(aWindowId), w);
-	LEAVE_XLIB();
-	RETURN ( self );
+        Window w;
+
+        if ((aMainWindowId == nil) || (aMainWindowId == __MKSMALLINT(0))) {
+            w = (Window) 0;
+        } else {
+            if (__isExternalAddress(aMainWindowId)) {
+                w = __WindowVal(aMainWindowId);
+            } else {
+                goto getOutOfHere;
+            }
+        }
+        ENTER_XLIB();
+        XSetTransientForHint(myDpy, __WindowVal(aWindowId), w);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
  getOutOfHere: ;
 %}.
@@ -12184,10 +12152,10 @@
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)
      && __isSmallInteger(aColorIndex)) {
-	ENTER_XLIB();
-	XSetWindowBackground(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XSetWindowBackground(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12205,10 +12173,10 @@
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)
      && __isExternalAddress(aPixmapId)) {
-	ENTER_XLIB();
-	XSetWindowBackgroundPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XSetWindowBackgroundPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12223,10 +12191,10 @@
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)
      && __isSmallInteger(aColorIndex)) {
-	ENTER_XLIB();
-	XSetWindowBorder(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XSetWindowBorder(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12241,10 +12209,10 @@
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)
      && __isExternalAddress(aPixmapId)) {
-	ENTER_XLIB();
-	XSetWindowBorderPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XSetWindowBorderPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12263,17 +12231,17 @@
     Pixmap shapeBitmap;
 
     if (__isExternalAddress(aPixmapId))
-	shapeBitmap = __PixmapVal(aPixmapId);
+        shapeBitmap = __PixmapVal(aPixmapId);
     else
-	shapeBitmap = (Pixmap)0;
+        shapeBitmap = (Pixmap)0;
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	ENTER_XLIB();
-	XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeBounding,
-			  0, 0, shapeBitmap, ShapeSet);
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeBounding,
+                          0, 0, shapeBitmap, ShapeSet);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 #endif
 %}.
@@ -12289,10 +12257,10 @@
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)
      && __isSmallInteger(aNumber)) {
-	ENTER_XLIB();
-	XSetWindowBorderWidth(myDpy, __WindowVal(aWindowId), __intVal(aNumber));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XSetWindowBorderWidth(myDpy, __WindowVal(aWindowId), __intVal(aNumber));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12307,24 +12275,24 @@
 %{
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	XClassHint classhint;
-
-	classhint.res_class = classhint.res_name = 0;
-
-	if (__isStringLike(wClass)) {
-	    classhint.res_class = (char *) __stringVal(wClass);
-	} else if (wClass != nil)
-	    goto error;
-
-	if (__isStringLike(wName)) {
-	    classhint.res_name = (char *) __stringVal(wName);
-	} else if (wName != nil)
-	    goto error;
-
-	ENTER_XLIB();
-	XSetClassHint(myDpy, __WindowVal(aWindowId), &classhint);
-	LEAVE_XLIB();
-	RETURN ( self );
+        XClassHint classhint;
+
+        classhint.res_class = classhint.res_name = 0;
+
+        if (__isStringLike(wClass)) {
+            classhint.res_class = (char *) __stringVal(wClass);
+        } else if (wClass != nil)
+            goto error;
+
+        if (__isStringLike(wName)) {
+            classhint.res_name = (char *) __stringVal(wName);
+        } else if (wName != nil)
+            goto error;
+
+        ENTER_XLIB();
+        XSetClassHint(myDpy, __WindowVal(aWindowId), &classhint);
+        LEAVE_XLIB();
+        RETURN ( self );
 error:;
     }
 %}.
@@ -12341,34 +12309,34 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	if (how == @symbol(NorthWest)) {
-	    wa.win_gravity = NorthWestGravity;
-	} else if (how == @symbol(NorthEast)) {
-	    wa.win_gravity = NorthEastGravity;
-	} else if (how == @symbol(SouthWest)) {
-	    wa.win_gravity = SouthWestGravity;
-	} else if (how == @symbol(SouthEast)) {
-	    wa.win_gravity = SouthEastGravity;
-	} else if (how == @symbol(Center)) {
-	    wa.win_gravity = CenterGravity;
-	} else if (how == @symbol(North)) {
-	    wa.win_gravity = NorthGravity;
-	} else if (how == @symbol(South)) {
-	    wa.win_gravity = SouthGravity;
-	} else if (how == @symbol(West)) {
-	    wa.win_gravity = WestGravity;
-	} else if (how == @symbol(East)) {
-	    wa.win_gravity = EastGravity;
-	} else {
-	    wa.win_gravity = NorthWestGravity;
-	}
-
-
-	ENTER_XLIB();
-	XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWWinGravity, &wa);
-	LEAVE_XLIB();
-
-	RETURN ( self );
+        if (how == @symbol(NorthWest)) {
+            wa.win_gravity = NorthWestGravity;
+        } else if (how == @symbol(NorthEast)) {
+            wa.win_gravity = NorthEastGravity;
+        } else if (how == @symbol(SouthWest)) {
+            wa.win_gravity = SouthWestGravity;
+        } else if (how == @symbol(SouthEast)) {
+            wa.win_gravity = SouthEastGravity;
+        } else if (how == @symbol(Center)) {
+            wa.win_gravity = CenterGravity;
+        } else if (how == @symbol(North)) {
+            wa.win_gravity = NorthGravity;
+        } else if (how == @symbol(South)) {
+            wa.win_gravity = SouthGravity;
+        } else if (how == @symbol(West)) {
+            wa.win_gravity = WestGravity;
+        } else if (how == @symbol(East)) {
+            wa.win_gravity = EastGravity;
+        } else {
+            wa.win_gravity = NorthWestGravity;
+        }
+
+
+        ENTER_XLIB();
+        XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWWinGravity, &wa);
+        LEAVE_XLIB();
+
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12382,20 +12350,20 @@
     |iconId|
 
     aForm notNil ifTrue:[
-	iconId := aForm id
+        iconId := aForm id
     ].
 %{
     if (ISCONNECTED
      && __isExternalAddress(iconId)
      && __isExternalAddress(aWindowId)) {
-	XWMHints hints;
-
-	hints.icon_pixmap = __PixmapVal(iconId);
-	hints.flags = IconPixmapHint;
-	ENTER_XLIB();
-	XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
-	LEAVE_XLIB();
-	RETURN ( self );
+        XWMHints hints;
+
+        hints.icon_pixmap = __PixmapVal(iconId);
+        hints.flags = IconPixmapHint;
+        ENTER_XLIB();
+        XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12409,28 +12377,28 @@
     |iconId maskId|
 
     aForm notNil ifTrue:[
-	iconId := aForm id
+        iconId := aForm id
     ].
     aMaskForm notNil ifTrue:[
-	maskId := aMaskForm id.
+        maskId := aMaskForm id.
     ].
 %{
     if (ISCONNECTED
      && __isExternalAddress(iconId)
      && __isExternalAddress(aWindowId)) {
-	XWMHints hints;
-
-	hints.icon_pixmap = __PixmapVal(iconId);
-	hints.flags = IconPixmapHint;
-	if ((maskId != nil)
-	 && __isExternalAddress(maskId)) {
-	    hints.icon_mask = __PixmapVal(maskId);
-	    hints.flags |= IconMaskHint;
-	}
-	ENTER_XLIB();
-	XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
-	LEAVE_XLIB();
-	RETURN ( self );
+        XWMHints hints;
+
+        hints.icon_pixmap = __PixmapVal(iconId);
+        hints.flags = IconPixmapHint;
+        if ((maskId != nil)
+         && __isExternalAddress(maskId)) {
+            hints.icon_mask = __PixmapVal(maskId);
+            hints.flags |= IconMaskHint;
+        }
+        ENTER_XLIB();
+        XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12445,20 +12413,20 @@
     |iconWindowId|
 
     aView notNil ifTrue:[
-	iconWindowId := aView id
+        iconWindowId := aView id
     ].
 %{
     if (ISCONNECTED
      && __isExternalAddress(iconWindowId)
      && __isExternalAddress(aWindowId)) {
-	XWMHints wmhints;
-
-	wmhints.icon_window = __WindowVal(iconWindowId);
-	wmhints.flags = IconWindowHint;
-	ENTER_XLIB();
-	XSetWMHints(myDpy, __WindowVal(aWindowId), &wmhints);
-	LEAVE_XLIB();
-	RETURN ( self );
+        XWMHints wmhints;
+
+        wmhints.icon_window = __WindowVal(iconWindowId);
+        wmhints.flags = IconWindowHint;
+        ENTER_XLIB();
+        XSetWMHints(myDpy, __WindowVal(aWindowId), &wmhints);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12472,29 +12440,29 @@
 %{
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	Display *dpy = myDpy;
-	XSizeHints szhints;
-	Window win;
-
-	win = __WindowVal(aWindowId);
-
-	szhints.flags = 0;
-	if (__bothSmallInteger(minW, minH)) {
-	    szhints.flags |= PMinSize;
-	    szhints.min_width = __intVal(minW);
-	    szhints.min_height = __intVal(minH);
-	}
-	if (__bothSmallInteger(maxW, maxH)) {
-	    szhints.flags |= PMaxSize;
-	    szhints.max_width = __intVal(maxW);
-	    szhints.max_height = __intVal(maxH);
-	}
-
-	if (szhints.flags) {
-	    ENTER_XLIB();
-	    XSetNormalHints(dpy, win, &szhints);
-	    LEAVE_XLIB();
-	}
+        Display *dpy = myDpy;
+        XSizeHints szhints;
+        Window win;
+
+        win = __WindowVal(aWindowId);
+
+        szhints.flags = 0;
+        if (__bothSmallInteger(minW, minH)) {
+            szhints.flags |= PMinSize;
+            szhints.min_width = __intVal(minW);
+            szhints.min_height = __intVal(minH);
+        }
+        if (__bothSmallInteger(maxW, maxH)) {
+            szhints.flags |= PMaxSize;
+            szhints.max_width = __intVal(maxW);
+            szhints.max_height = __intVal(maxH);
+        }
+
+        if (szhints.flags) {
+            ENTER_XLIB();
+            XSetNormalHints(dpy, win, &szhints);
+            LEAVE_XLIB();
+        }
     }
 %}.
 !
@@ -12510,10 +12478,10 @@
 
     utf8String := aString utf8Encoded.
     aString isWideString ifTrue:[
-	"/ X does not like 2-byte labels ...
-	simpleString := aString asSingleByteStringReplaceInvalidWith:$?
+        "/ X does not like 2-byte labels ...
+        simpleString := aString asSingleByteStringReplaceInvalidWith:$?
     ] ifFalse:[
-	simpleString := aString.
+        simpleString := aString.
     ].
 
 %{
@@ -12525,17 +12493,17 @@
      && __isStringLike(simpleString)
      && __isExternalAddress(aWindowId)) {
 
-	titleProperty.value =  __stringVal(utf8String);
-	titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
-	titleProperty.format = 8;
-	titleProperty.nitems = __stringSize(utf8String);
-
-	ENTER_XLIB();
-	XStoreName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
-	/* alternative settings for UTF8-Strings */
-	XSetWMName(myDpy, __WindowVal(aWindowId), &titleProperty);
-	LEAVE_XLIB();
-	RETURN ( self );
+        titleProperty.value =  __stringVal(utf8String);
+        titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
+        titleProperty.format = 8;
+        titleProperty.nitems = __stringSize(utf8String);
+
+        ENTER_XLIB();
+        XStoreName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
+        /* alternative settings for UTF8-Strings */
+        XSetWMName(myDpy, __WindowVal(aWindowId), &titleProperty);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailedOrClosedConnection
@@ -12574,18 +12542,18 @@
     Pixmap shapeBitmap;
 
     if (__isExternalAddress(aPixmapId))
-	shapeBitmap = __PixmapVal(aPixmapId);
+        shapeBitmap = __PixmapVal(aPixmapId);
     else
-	shapeBitmap = (Pixmap)0;
+        shapeBitmap = (Pixmap)0;
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	ENTER_XLIB();
-	XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeClip,
-			  0, 0,
-			  shapeBitmap, ShapeSet);
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeClip,
+                          0, 0,
+                          shapeBitmap, ShapeSet);
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 #endif
 %}.
@@ -12602,18 +12570,18 @@
     stateAtom := self atomIDOf:aSymbol create:false.
 
     (netWmWindowStateAtom notNil and:[stateAtom notNil]) ifTrue:[
-	self
-	    sendClientEvent:netWmWindowStateAtom
-	    format:32
-	    to:(self rootWindowId)
-	    propagate:true
-	    eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
-	    window:aWindowId
-	    data1:(self atomIDOf:#'_NET_WM_STATE_ADD' create:false)
-	    data2:stateAtom
-	    data3:nil
-	    data4:1
-	    data5:nil.
+        self
+            sendClientEvent:netWmWindowStateAtom
+            format:32
+            to:(self rootWindowId)
+            propagate:true
+            eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
+            window:aWindowId
+            data1:(self atomIDOf:#'_NET_WM_STATE_ADD' create:false)
+            data2:stateAtom
+            data3:nil
+            data4:1
+            data5:nil.
     ] ifFalse:[self halt.].
 
     "
@@ -12646,30 +12614,30 @@
     | nameAtom typeAtom valueAtom |
 
     self assert:(#(_NET_WM_WINDOW_TYPE_DESKTOP
-		  _NET_WM_WINDOW_TYPE_DOCK
-		  _NET_WM_WINDOW_TYPE_TOOLBAR
-		  _NET_WM_WINDOW_TYPE_MENU
-		  _NET_WM_WINDOW_TYPE_UTILITY
-		  _NET_WM_WINDOW_TYPE_SPLASH
-		  _NET_WM_WINDOW_TYPE_DIALOG
-		  _NET_WM_WINDOW_TYPE_NORMAL) includes: aSymbol).
+                  _NET_WM_WINDOW_TYPE_DOCK
+                  _NET_WM_WINDOW_TYPE_TOOLBAR
+                  _NET_WM_WINDOW_TYPE_MENU
+                  _NET_WM_WINDOW_TYPE_UTILITY
+                  _NET_WM_WINDOW_TYPE_SPLASH
+                  _NET_WM_WINDOW_TYPE_DIALOG
+                  _NET_WM_WINDOW_TYPE_NORMAL) includes: aSymbol).
 
     nameAtom := self atomIDOf:#'_NET_WM_WINDOW_TYPE' create:false.
     nameAtom isNil ifTrue:[
-	"/Hmm, no such property, not running under EWMH compliant WM?
-	self breakPoint: #jv.
-	^self
+        "/Hmm, no such property, not running under EWMH compliant WM?
+        self breakPoint: #jv.
+        ^self
     ].
     "/ Hmm, hmm, no access to XA_ATOM, XA_INTEGER and so on...
     typeAtom := self atomIDOf:#'ATOM' create:false.
     typeAtom isNil ifTrue:[
-	self error:'Oops, no ATOM atom'.
+        self error:'Oops, no ATOM atom'.
     ].
     valueAtom := self atomIDOf: aSymbol create:false.
     valueAtom isNil ifTrue:[
-	"/Hmm, no such property, not running under EWMH compliant WM?
-	self breakPoint: #jv.
-	^self
+        "/Hmm, no such property, not running under EWMH compliant WM?
+        self breakPoint: #jv.
+        ^self
     ].
 
     self setProperty: nameAtom type: typeAtom value: valueAtom for: aWindowId.
@@ -12723,14 +12691,14 @@
      * ignore closed connection
      */
     if (! ISCONNECTED) {
-	RETURN ( self );
+        RETURN ( self );
     }
 
     if (__isExternalAddress(aWindowId)) {
-	ENTER_XLIB();
-	XUnmapWindow(myDpy, __WindowVal(aWindowId));
-	LEAVE_XLIB();
-	RETURN ( self );
+        ENTER_XLIB();
+        XUnmapWindow(myDpy, __WindowVal(aWindowId));
+        LEAVE_XLIB();
+        RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -12745,28 +12713,28 @@
 
     if (ISCONNECTED
      && __isExternalAddress(aWindowId)) {
-	Atom JunkAtom;
-	int JunkInt;
-	unsigned long WinState,JunkLong;
-	unsigned char *Property;
-	Atom WM_STATE_Atom;
-
-	if (__INST(wmStateAtom) != nil) {
-	    WM_STATE_Atom = __AtomVal(__INST(wmStateAtom));
-
-	    ENTER_XLIB();
-	    XGetWindowProperty(myDpy, __WindowVal(aWindowId),
-			       WM_STATE_Atom,
-			       0L, 2L, False, AnyPropertyType,
-			       &JunkAtom,&JunkInt,&WinState,&JunkLong,
-			       &Property);
-	    LEAVE_XLIB();
-	    WinState=(unsigned long)(*((long*)Property));
-	    if (WinState==3) {
-		RETURN (true);
-	    }
-	}
-	RETURN (false);
+        Atom JunkAtom;
+        int JunkInt;
+        unsigned long WinState,JunkLong;
+        unsigned char *Property;
+        Atom WM_STATE_Atom;
+
+        if (__INST(wmStateAtom) != nil) {
+            WM_STATE_Atom = __AtomVal(__INST(wmStateAtom));
+
+            ENTER_XLIB();
+            XGetWindowProperty(myDpy, __WindowVal(aWindowId),
+                               WM_STATE_Atom,
+                               0L, 2L, False, AnyPropertyType,
+                               &JunkAtom,&JunkInt,&WinState,&JunkLong,
+                               &Property);
+            LEAVE_XLIB();
+            WinState=(unsigned long)(*((long*)Property));
+            if (WinState==3) {
+                RETURN (true);
+            }
+        }
+        RETURN (false);
     }
 %}.
     self primitiveFailedOrClosedConnection.
@@ -12785,7 +12753,7 @@
     process that requests the clipboard.
 
     [author:]
-	Stefan Vogel (stefan@zwerg)
+        Stefan Vogel (stefan@zwerg)
 
     [instance variables:]
 
@@ -12814,47 +12782,47 @@
     |selection|
 
     buffer isNil ifTrue:[
-	^ nil.
+        ^ nil.
     ].
 
     targetID == (display atomIDOf:#STRING) ifTrue:[
-	display clipboardEncoding notNil ifTrue:[
-	    selection := buffer decodeFrom:display clipboardEncoding
-	].
-	selection := buffer.
+        display clipboardEncoding notNil ifTrue:[
+            selection := buffer decodeFrom:display clipboardEncoding
+        ].
+        selection := buffer.
     ] ifFalse:[targetID == (display atomIDOf:#'UTF8_STRING') ifTrue:[
 "/ Transcript show:'UTF8: '; showCR:buffer storeString.
-	selection := CharacterArray fromUTF8Bytes:buffer
+        selection := CharacterArray fromUTF8Bytes:buffer
     ] ifFalse:[targetID == (display atomIDOf:#TEXT) ifTrue:[
 "/ Transcript show:'TEXT: '; showCR:buffer storeString.
-	selection := buffer asString
+        selection := buffer asString
     ] ifFalse:[targetID == (display atomIDOf:#'COMPOUND_TEXT') ifTrue:[
 "/ Transcript show:'COMPOUND_TEXT: '; showCR:buffer storeString.
-	selection := buffer asString
+        selection := buffer asString
     ]]]].
 
     selection notNil ifTrue:[
-	(selection endsWith:Character cr) ifTrue:[
-	    selection := selection asStringCollection copyWith:''
-	].
-	^ selection.
+        (selection endsWith:Character cr) ifTrue:[
+            selection := selection asStringCollection copyWith:''
+        ].
+        ^ selection.
     ].
 
     targetID == (display atomIDOf:#'TARGETS') ifTrue:[
-	^ buffer
+        ^ buffer
     ].
     targetID == (display atomIDOf:#'ST_OBJECT') ifTrue:[
-	"require libboss to be loaded"
-	(Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
-	    'SelectionFetch: cannot decode object (libboss library missing)' errorPrintCR.
-	    ^ nil
-	].
-	^ (Object
-	    readBinaryFrom:(ReadStream on:buffer)
-	    onError:[:ex |
-		('SelectionFetch: error while decoding binary object: ',ex description) errorPrintCR.
-		nil
-	    ])
+        "require libboss to be loaded"
+        (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
+            'SelectionFetch: cannot decode object (libboss library missing)' errorPrintCR.
+            ^ nil
+        ].
+        ^ (Object
+            readBinaryFrom:(ReadStream on:buffer)
+            onError:[:ex |
+                ('SelectionFetch: error while decoding binary object: ',ex description) errorPrintCR.
+                nil
+            ])
     ].
 
     'XWorkstation: unimplemented property targetID: ' infoPrint. (display atomName:targetID) infoPrint.
@@ -12871,16 +12839,16 @@
      Save and wake up waiters"
 
     aMessage selector == #propertyChange:property:state:time: ifTrue:[
-	(aMessage arguments at:2) ~~ propertyID ifTrue:[
-	    "I am only interested in changes of the property used to
-	     store the selection"
-	    ^ self.
-	].
-	message notNil ifTrue:[
-	    "this should not happen - bad selection holder?"
-	    'XWorkstation(error): message overflow: ' errorPrint. display errorPrintCR.
-	    ^ self.
-	].
+        (aMessage arguments at:2) ~~ propertyID ifTrue:[
+            "I am only interested in changes of the property used to
+             store the selection"
+            ^ self.
+        ].
+        message notNil ifTrue:[
+            "this should not happen - bad selection holder?"
+            'XWorkstation(error): message overflow: ' errorPrint. display errorPrintCR.
+            ^ self.
+        ].
     ].
 
     "we get a propertyChange before the selectionNotify.
@@ -12897,26 +12865,26 @@
     |property propertyValue|
 
     incremental ifFalse:[
-	"ignore property changes until we are in incremental mode"
-	^ self.
+        "ignore property changes until we are in incremental mode"
+        ^ self.
     ].
 
     property := display getProperty:propertyID from:drawableID delete:true.
     propertyValue := property value.
 
     propertyValue size == 0 ifTrue:[
-	"property with size 0 signals end of transfer"
-	done := true.
+        "property with size 0 signals end of transfer"
+        done := true.
     ] ifFalse:[
-	buffer isNil ifTrue:[
-	    targetID := property key.
-	    buffer := propertyValue.
-	] ifFalse:[
-	    targetID ~= property key ifTrue:[
-		'XWorkstation(warning): targetID change in incremental select: ' errorPrint. display errorPrintCR.
-	    ].
-	    buffer := buffer, propertyValue.
-	].
+        buffer isNil ifTrue:[
+            targetID := property key.
+            buffer := propertyValue.
+        ] ifFalse:[
+            targetID ~= property key ifTrue:[
+                'XWorkstation(warning): targetID change in incremental select: ' errorPrint. display errorPrintCR.
+            ].
+            buffer := buffer, propertyValue.
+        ].
     ].
 !
 
@@ -12931,39 +12899,39 @@
     |property propertyKey atomName|
 
     aSelectionID ~~ selectionID ifTrue:[
-	"ignore notification that is not for our selection"
-	^ self.
+        "ignore notification that is not for our selection"
+        ^ self.
     ].
 
     aPropertyID == 0 ifTrue:[
-	"the selection owner could not convert the selection to our target type"
-	done := true.
-	^ self.
+        "the selection owner could not convert the selection to our target type"
+        done := true.
+        ^ self.
     ].
 
     property := display getProperty:aPropertyID from:drawableID delete:true.
     property isNil ifTrue:[
-	"the property does not exist in the specified window"
-	done := true.
-	^ self
+        "the property does not exist in the specified window"
+        done := true.
+        ^ self
     ].
 
     propertyKey := property key.
     propertyKey == aTargetID ifTrue:[
-	"good, the property is consistent with our request.
-	 The whole selection is in the property"
-	buffer := property value.
-	done := true.
+        "good, the property is consistent with our request.
+         The whole selection is in the property"
+        buffer := property value.
+        done := true.
     ] ifFalse:[propertyKey == (display atomIDOf:#INCR) ifTrue:[
-	"this is an incremental transfer. Wait for property change"
-	incremental := true.
+        "this is an incremental transfer. Wait for property change"
+        incremental := true.
     ] ifFalse:[
-	atomName := (display atomName:propertyKey) ? propertyKey.
-	'XWorkstation(error): unexpected targetID (' errorPrint.
-	atomName errorPrint.
-	') in selectionNotify: ' errorPrint.
-	display errorPrintCR.
-	done := true.
+        atomName := (display atomName:propertyKey) ? propertyKey.
+        'XWorkstation(error): unexpected targetID (' errorPrint.
+        atomName errorPrint.
+        ') in selectionNotify: ' errorPrint.
+        display errorPrintCR.
+        done := true.
     ]].
 ! !
 
@@ -12984,31 +12952,31 @@
     incremental := false.
 
     [
-	|timeout|
-
-	display registerSelectionFetcher:self.
-
-	display
-	    requestSelection:aSelectionId
-	    type:aTargetId
-	    for:drawableID
-	    intoProperty:propertyID.
-
-	timeout := display xlibTimeout.
-	[
-	    |currentMessage|
-
-	    (sema waitWithTimeout:timeout) isNil ifTrue:[
-		"the selection owner didn't respond within reasonable time"
-		'XWorkstation(error): selection owner does not respond:' infoPrint. display infoPrintCR.
-		^ nil.
-	    ].
-	    currentMessage := message.
-	    message := nil.
-	    currentMessage notNil ifTrue:[currentMessage sendTo:self].
-	] doUntil:[done].
+        |timeout|
+
+        display registerSelectionFetcher:self.
+
+        display
+            requestSelection:aSelectionId
+            type:aTargetId
+            for:drawableID
+            intoProperty:propertyID.
+
+        timeout := display xlibTimeout.
+        [
+            |currentMessage|
+
+            (sema waitWithTimeout:timeout) isNil ifTrue:[
+                "the selection owner didn't respond within reasonable time"
+                'XWorkstation(error): selection owner does not respond:' infoPrint. display infoPrintCR.
+                ^ nil.
+            ].
+            currentMessage := message.
+            message := nil.
+            currentMessage notNil ifTrue:[currentMessage sendTo:self].
+        ] doUntil:[done].
     ] ensure:[
-	display unregisterSelectionFetcher:self.
+        display unregisterSelectionFetcher:self.
     ].
 
     ^ self getSelection
@@ -13030,14 +12998,14 @@
     is newer mapped.
 
     [author:]
-	Jan Vrany <jan.vrany@fit.cvut.cz>
+        Jan Vrany <jan.vrany@fit.cvut.cz>
 
     [instance variables:]
 
     [class variables:]
 
     [see also:]
-	Inter-Client Communication Conventions Manual [http://tronche.com/gui/x/icccm/]
+        Inter-Client Communication Conventions Manual [http://tronche.com/gui/x/icccm/]
 
 
 "
@@ -13046,11 +13014,11 @@
 !XWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.575 2013-11-25 10:51:46 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.576 2013-11-25 11:00:04 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.575 2013-11-25 10:51:46 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.576 2013-11-25 11:00:04 stefan Exp $'
 !
 
 version_SVN