diff -r 5508a0ac6319 -r d5687a021b55 XWorkstation.st --- a/XWorkstation.st Thu Nov 05 15:36:21 2009 +0100 +++ b/XWorkstation.st Thu Nov 05 15:37:06 2009 +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,31 +12,31 @@ "{ Package: 'stx:libview' }" DeviceWorkstation subclass:#XWorkstation - instanceVariableNames:'hasShapeExtension hasShmExtension hasDPSExtension - hasMbufExtension hasXVideoExtension hasSaveUnder hasPEXExtension - hasImageExtension hasInputExtension ignoreBackingStore blackpixel - whitepixel atoms protocolsAtom deleteWindowAtom saveYourselfAtom - quitAppAtom primaryAtom clipboardAtom stringAtom wmStateAtom - motifWMHintsAtom listOfXFonts buttonsPressed eventRootX - eventRootY displayName eventTrace dispatchingExpose rgbVisual - virtualRootId rootId altModifierMask metaModifierMask - lastEventTime lastButtonPressTime deviceIOTimeoutErrorSignal - activateOnClick rawKeySymTranslation selectionOwner selectionTime - selectionFetchers selectionHandlers preWaitAction xlibTimeout - xlibTimeoutForWindowCreation hasConnectionBroken uniqueDeviceID - stxDeviceAtom uuidAtom' - classVariableNames:'RawKeySymTranslation ConservativeSync MaxStringLength - DefaultXLibTimeout DefaultXLibTimeoutForWindowCreation' - poolDictionaries:'' - category:'Interface-Graphics' + instanceVariableNames:'hasShapeExtension hasShmExtension hasDPSExtension + hasMbufExtension hasXVideoExtension hasSaveUnder hasPEXExtension + hasImageExtension hasInputExtension ignoreBackingStore blackpixel + whitepixel atoms protocolsAtom deleteWindowAtom saveYourselfAtom + quitAppAtom primaryAtom clipboardAtom stringAtom wmStateAtom + motifWMHintsAtom listOfXFonts buttonsPressed eventRootX + eventRootY displayName eventTrace dispatchingExpose rgbVisual + virtualRootId rootId altModifierMask metaModifierMask + lastEventTime lastButtonPressTime deviceIOTimeoutErrorSignal + activateOnClick rawKeySymTranslation selectionOwner selectionTime + selectionFetchers selectionHandlers preWaitAction xlibTimeout + xlibTimeoutForWindowCreation hasConnectionBroken uniqueDeviceID + stxDeviceAtom uuidAtom' + 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 ! !XWorkstation primitiveDefinitions! @@ -215,16 +215,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) @@ -318,18 +318,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 @@ -354,26 +354,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=%x\n", - event->request_code, event->request_code, - event->minor_code, event->minor_code, 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=%x\n", + event->request_code, event->request_code, + event->minor_code, event->minor_code, event->resourceid); + console_fprintf(stderr, "XWorkstation [error]: x-error message is [%d] '%s'\n", + event->error_code, lastErrorMsg); } __errorInterruptWithIDAndParameter__(@symbol(DisplayError), __MKEXTERNALADDRESS(dpy)); @@ -393,10 +393,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 /* @@ -428,12 +428,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=%x\n", displayDeviceInst); + console_fprintf(stderr, "XWorkstation [error]: X11 request timeout dpy=%x\n", displayDeviceInst); } __OINST(displayDeviceInst, hasConnectionBroken) = true; @@ -445,14 +445,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 */ } } @@ -479,29 +479,29 @@ */ # if !defined(IRIS) || defined(IRIX5) if (root) { - vRootAtom = XInternAtom(dpy, "__SWM_VROOT", True); - if (vRootAtom != None) { - if (XQueryTree(dpy, root, &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) { - root = *newRoot; - XFree(newRoot); /* XXX */ - break; - } - } - } - } - if (children) XFree( children ); - } + vRootAtom = XInternAtom(dpy, "__SWM_VROOT", True); + if (vRootAtom != None) { + if (XQueryTree(dpy, root, &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) { + root = *newRoot; + XFree(newRoot); /* XXX */ + break; + } + } + } + } + if (children) XFree( children ); + } } # endif return root; @@ -515,7 +515,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 @@ -541,21 +541,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 " ! ! @@ -573,18 +573,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" @@ -603,8 +603,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 %} @@ -646,13 +646,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 ! @@ -675,7 +675,7 @@ %{ /* NOCONTEXT */ if (lastResource != 0) { - RETURN ( __MKEXTERNALADDRESS(lastResource) ); + RETURN ( __MKEXTERNALADDRESS(lastResource) ); } %}. @@ -683,7 +683,7 @@ " - Screen resourceIdOfLastError + Screen resourceIdOfLastError " ! @@ -735,7 +735,7 @@ prev := activateOnClick ? false. aBoolean notNil ifTrue:[ - activateOnClick := aBoolean. + activateOnClick := aBoolean. ]. ^ prev @@ -798,13 +798,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 @@ -825,7 +825,7 @@ %{ /* NOCONTEXT */ #ifndef WIN32 if (ISCONNECTED) { - RETURN ( __MKSMALLINT(ConnectionNumber(myDpy)) ); + RETURN ( __MKSMALLINT(ConnectionNumber(myDpy)) ); } #endif RETURN (nil); @@ -852,7 +852,7 @@ %{ /* NOCONTEXT */ if (ISCONNECTED) { - RETURN ( __MKSMALLINT(XProtocolVersion(myDpy)) ); + RETURN ( __MKSMALLINT(XProtocolVersion(myDpy)) ); } RETURN (nil); %} @@ -868,7 +868,7 @@ (to avoid bugs in certain implementations)" %{ if (ISCONNECTED) { - RETURN ( __MKSTRING(XServerVendor(myDpy)) ); + RETURN ( __MKSTRING(XServerVendor(myDpy)) ); } RETURN (nil); %} @@ -906,34 +906,34 @@ && __isExternalAddress(windowId1) && __isExternalAddress(windowId2) && __bothSmallInteger(x1, y1)) { - Display *dpy = myDpy; - Window rootWin; - - w1 = __WindowVal(windowId1); - w2 = __WindowVal(windowId2); + Display *dpy = myDpy; + Window rootWin; + + w1 = __WindowVal(windowId1); + w2 = __WindowVal(windowId2); #ifdef VIRTUAL_ROOT - rootWin = RootWindow(dpy, screen); - if (w1 == rootWin) { - ENTER_XLIB(); - w1 = getRootWindow(dpy, screen); - LEAVE_XLIB(); - } - if (w2 == rootWin) { - ENTER_XLIB(); - w2 = getRootWindow(dpy, screen); - LEAVE_XLIB(); - } -#endif - - ENTER_XLIB(); - XTranslateCoordinates(dpy, w1, w2, - __intVal(x1), __intVal(y1), - &xpos, &ypos, &child_ret); - LEAVE_XLIB(); - - x2 = __MKSMALLINT(xpos); - y2 = __MKSMALLINT(ypos); + rootWin = RootWindow(dpy, screen); + if (w1 == rootWin) { + ENTER_XLIB(); + w1 = getRootWindow(dpy, screen); + LEAVE_XLIB(); + } + if (w2 == rootWin) { + ENTER_XLIB(); + w2 = getRootWindow(dpy, screen); + LEAVE_XLIB(); + } +#endif + + ENTER_XLIB(); + XTranslateCoordinates(dpy, w1, w2, + __intVal(x1), __intVal(y1), + &xpos, &ypos, &child_ret); + LEAVE_XLIB(); + + x2 = __MKSMALLINT(xpos); + y2 = __MKSMALLINT(ypos); } %}. @@ -947,7 +947,7 @@ %{ /* NOCONTEXT */ if (ISCONNECTED) { - RETURN ( __MKSMALLINT(XVendorRelease(myDpy)) ); + RETURN ( __MKSMALLINT(XVendorRelease(myDpy)) ); } RETURN (nil); %} @@ -974,31 +974,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 @@ -1018,21 +1018,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 @@ -1087,11 +1087,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); %} @@ -1194,44 +1194,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. @@ -1255,7 +1255,7 @@ Redefined to return a special value on SGI servers." self serverVendor = 'Silicon Graphics' ifTrue:[ - ^ 86@68 + ^ 86@68 ]. ^ super preferredIconSize @@ -1281,7 +1281,7 @@ Display *dpy; if (! ISCONNECTED) { - RETURN (nil); + RETURN (nil); } dpy = myDpy; @@ -1293,30 +1293,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 @@ -1400,7 +1400,7 @@ bitmapId := self primCreateBitmapFromArray:anArray width:w height:h. bitmapId isNil ifTrue:[ - self primitiveFailedOrClosedConnection + self primitiveFailedOrClosedConnection ]. ^ bitmapId ! @@ -1415,35 +1415,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 ! @@ -1459,19 +1459,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. @@ -1489,19 +1489,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. @@ -1509,18 +1509,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 @@ -1530,43 +1530,43 @@ vBgForm deepForm preferredVisual preferredDepth| 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 ]. wicon notNil ifTrue:[ - wiconId := wicon id. - wiconMask notNil ifTrue:[ - wiconMaskId := wiconMask id - ] + wiconId := wicon id. + wiconMask notNil ifTrue:[ + wiconMaskId := wiconMask id + ] ]. wiconView notNil ifTrue:[ - wiconViewId := wiconView id + wiconViewId := wiconView id ]. weventMask := aView eventMask. @@ -1586,8 +1586,8 @@ char *windowName; XFontStruct *f; Pixmap backPixmap = (Pixmap)0, - iconBitmap = (Pixmap)0, - iconMask = (Pixmap)0; + iconBitmap = (Pixmap)0, + iconMask = (Pixmap)0; int flags = 0, depth, ioClass; Window iconWindow; Atom WmDeleteWindowAtom, WmSaveYourselfAtom, WmProtocolsAtom; @@ -1603,123 +1603,123 @@ 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); - isTopWindow = 1; + parentWindow = RootWindow(dpy, screen); + isTopWindow = 1; } 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 @@ -1731,187 +1731,187 @@ * (only makes sense for topWindows) */ if (isTopWindow) { - if (__isExternalAddress(wiconId)) - iconBitmap = __PixmapVal(wiconId); - else - iconBitmap = (Pixmap)0; - - if (__isExternalAddress(wiconMaskId)) - iconMask = __PixmapVal(wiconMaskId); - else - iconMask = (Pixmap)0; - - if (__isExternalAddress(wiconViewId)) - iconWindow = __WindowVal(wiconViewId); - else - iconWindow = (Window)0; - - if (__isStringLike(wlabel)) - windowName = (char *) __stringVal(wlabel); - else - windowName = ""; - - if (iconBitmap || windowName) { - ENTER_XLIB(); - XSetStandardProperties(dpy, newWindow, - windowName, windowName, - iconBitmap, - 0, 0, &sizehints); - 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; - } + if (__isExternalAddress(wiconId)) + iconBitmap = __PixmapVal(wiconId); + else + iconBitmap = (Pixmap)0; + + if (__isExternalAddress(wiconMaskId)) + iconMask = __PixmapVal(wiconMaskId); + else + iconMask = (Pixmap)0; + + if (__isExternalAddress(wiconViewId)) + iconWindow = __WindowVal(wiconViewId); + else + iconWindow = (Window)0; + + if (__isStringLike(wlabel)) + windowName = (char *) __stringVal(wlabel); + else + windowName = ""; + + if (iconBitmap || windowName) { + ENTER_XLIB(); + XSetStandardProperties(dpy, newWindow, + windowName, windowName, + iconBitmap, + 0, 0, &sizehints); + 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.flags |= InputHint; - wmhints.input = True; + wmhints.flags |= InputHint; + wmhints.input = True; */ - ENTER_XLIB(); - XSetWMHints(dpy, newWindow, &wmhints); - 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); + 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(); - } - } - - /* - * less decoration - */ - if ((wStyle == @symbol(undecorated)) - || (wStyle == @symbol(dialog2)) - || (wStyle == @symbol(notitle)) - ) { + 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(); + } + } + + /* + * less decoration + */ + if ((wStyle == @symbol(undecorated)) + || (wStyle == @symbol(dialog2)) + || (wStyle == @symbol(notitle)) + ) { #ifdef SUPPORT_MOTIF_WM_HINTS - 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(); - } + 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 */ - } + } } windowId = __MKEXTERNALADDRESS(newWindow); @@ -1928,28 +1928,28 @@ * ignore closed connection */ if (! ISCONNECTED) { - RETURN ( self ); + RETURN ( self ); } if (__isExternalAddress(aGCId)) { - GC gc = __GCVal(aGCId); - - if (gc == NULL) { - console_fprintf(stderr, "XWorkstation [warning]: trying to destroy GC twice\n"); - RETURN( self ); - } - - if (gc) { - __ExternalAddressInstPtr(aGCId)->e_address = NULL; - - ENTER_XLIB(); - XFreeGC(myDpy, gc); - LEAVE_XLIB(); + GC gc = __GCVal(aGCId); + + if (gc == NULL) { + console_fprintf(stderr, "XWorkstation [warning]: trying to destroy GC twice\n"); + RETURN( self ); + } + + if (gc) { + __ExternalAddressInstPtr(aGCId)->e_address = NULL; + + ENTER_XLIB(); + XFreeGC(myDpy, gc); + LEAVE_XLIB(); #ifdef COUNT_RESOURCES - __cnt_gc--; -#endif - } - RETURN ( self ); + __cnt_gc--; +#endif + } + RETURN ( self ); } %}. self primitiveFailed @@ -1963,23 +1963,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 @@ -2004,16 +2004,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 %}. @@ -2030,16 +2030,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. @@ -2076,86 +2076,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 @@ -2172,22 +2172,22 @@ %{ 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 + + } } %} ! ! @@ -2207,20 +2207,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 @@ -2241,35 +2241,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 @@ -2289,30 +2289,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 @@ -2343,8 +2343,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 @@ -2352,21 +2352,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 @@ -2385,29 +2385,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<>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<>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 @@ -2426,39 +2426,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<>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<>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' " ! @@ -2473,22 +2473,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 @@ -2508,10 +2508,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 @@ -2531,33 +2531,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 @@ -2574,30 +2574,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" @@ -2626,18 +2626,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 @@ -2659,10 +2659,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 @@ -2674,22 +2674,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 @@ -2709,17 +2709,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. @@ -2738,28 +2738,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. @@ -2814,128 +2814,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 @@ -2948,14 +2948,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" @@ -2970,11 +2970,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. @@ -3005,22 +3005,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 @@ -3049,20 +3049,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 @@ -3091,16 +3091,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 @@ -3130,20 +3130,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 @@ -3165,23 +3165,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 @@ -3189,20 +3189,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: ; %}. @@ -3226,35 +3226,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" @@ -3271,7 +3271,7 @@ |noY| (noY := yValues size) < 2 ifTrue:[ - ^ self + ^ self ]. %{ @@ -3288,110 +3288,110 @@ 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 @@ -3411,23 +3411,23 @@ && __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" @@ -3457,53 +3457,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 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 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 @@ -3524,31 +3524,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" @@ -3577,174 +3577,174 @@ && __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 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 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 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 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" @@ -3773,98 +3773,98 @@ && __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 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. + ] ]. " @@ -3922,28 +3922,28 @@ 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." @@ -3956,23 +3956,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 @@ -3980,20 +3980,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: ; %}. @@ -4025,41 +4025,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 100) { + points = (XPoint *) malloc(sizeof(XPoint) * num); + if (! points) goto fail; + mustFree = 1; + } else + points = qPoints; + for (i=0; i= 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" @@ -4099,10 +4099,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 @@ -4145,58 +4145,58 @@ && __isSmallInteger(bitPadding) && __bothSmallInteger(rm, gm) && __isSmallInteger(bm) - && __isByteArray(imageBits)) { - Display *dpy = myDpy; - int pad = __intVal(bitPadding); - - gc = __GCVal(aGCId); - win = __WindowVal(aDrawableId); - if (! gc || !win) - goto fail; + && __isByteArrayLike(imageBits)) { + 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"); @@ -4211,7 +4211,7 @@ if (!! __isSmallInteger(imageHeight)) console_printf("imageHeight\n"); if (!! __isSmallInteger(imageDepth)) console_printf("imageDepth\n"); if (!! __isSmallInteger(bitsPerPixel)) console_printf("bitsPerPixel\n"); - if (!! __isByteArray(imageBits)) console_printf("imageBits\n"); + if (!! __isByteArrayLike(imageBits)) console_printf("imageBits\n"); #endif fail: ; @@ -4221,12 +4221,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 @@ -4253,62 +4253,62 @@ && __bothSmallInteger(imageWidth, imageHeight) && __bothSmallInteger(imageDepth, bitsPerPixel) && __isSmallInteger(bitPadding) - && __isByteArray(imageBits)) { - Display *dpy = myDpy; - int pad = __intVal(bitPadding); - - gc = __GCVal(aGCId); - win = __WindowVal(aDrawableId); - if (! gc || !win) - goto fail; + && __isByteArrayLike(imageBits)) { + 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"); @@ -4323,7 +4323,7 @@ if (!! __isSmallInteger(imageHeight)) console_printf("imageHeight\n"); if (!! __isSmallInteger(imageDepth)) console_printf("imageDepth\n"); if (!! __isSmallInteger(bitsPerPixel)) console_printf("bitsPerPixel\n"); - if (!! __isByteArray(imageBits)) console_printf("imageBits\n"); + if (!! __isByteArrayLike(imageBits)) console_printf("imageBits\n"); #endif fail: ; @@ -4365,29 +4365,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 ! @@ -4415,7 +4415,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 ! @@ -4424,20 +4424,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" @@ -4448,12 +4448,12 @@ 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. + ]. ]. ! @@ -4468,9 +4468,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. @@ -4484,70 +4484,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" @@ -4567,8 +4567,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 ]. ! @@ -4576,8 +4576,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 ]. ! @@ -4602,9 +4602,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. @@ -4627,9 +4627,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. @@ -4645,9 +4645,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. ]. ! @@ -4688,20 +4688,20 @@ 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. "/ aView propertyChange:atom state:aSymbol. 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. ]. ! @@ -4712,9 +4712,9 @@ lastEventTime := time. selectionHandlers notNil ifTrue:[ - selectionHandlers do:[:eachHandler | - eachHandler selectionClear:selectionID - ] + selectionHandlers do:[:eachHandler | + eachHandler selectionClear:selectionID + ] ]. ! @@ -4736,12 +4736,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. ]. ! @@ -4762,33 +4762,33 @@ property := propertyID. selection isNil ifTrue:[ - "sending property None tells the client, - that I could not convert" + "sending property None tells the client, + that I could not convert" "/ ('XWorkstation: unsupported selection target ', (self atomName:targetID)) errorPrintCR. - property := nil. + property := nil. ] ifFalse:[ - property == 0 ifTrue:[ - "Support old (obsolete) clients requesting a None property. - Set the propertyID to the targetID" - property := targetID. - ]. - self setProperty:property - type:targetID - value:selection - for:requestorID. + property == 0 ifTrue:[ + "Support old (obsolete) clients requesting a None property. + Set the propertyID to the targetID" + property := targetID. + ]. + self setProperty:property + type:targetID + value:selection + for:requestorID. ]. self sendNotifySelection:selectionID - property:property - target:targetID - time:time - to:requestorID. + property:property + target:targetID + time:time + to:requestorID. ! visibilityNotify:aView state:how aView notNil ifTrue:[ - aView visibilityChange:how + aView visibilityChange:how ] ! ! @@ -4810,8 +4810,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 @@ -4865,11 +4865,11 @@ %{ /* NOCONTEXT */ RETURN (__MKSMALLINT( ExposureMask | StructureNotifyMask | - KeyPressMask | KeyReleaseMask | - PointerMotionMask | - EnterWindowMask | LeaveWindowMask | - ButtonPressMask | ButtonMotionMask | ButtonReleaseMask | - PropertyChangeMask )); + KeyPressMask | KeyReleaseMask | + PointerMotionMask | + EnterWindowMask | LeaveWindowMask | + ButtonPressMask | ButtonMotionMask | ButtonReleaseMask | + PropertyChangeMask )); %} ! @@ -4878,21 +4878,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. @@ -4908,18 +4908,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" @@ -4930,7 +4930,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) @@ -4941,10 +4941,10 @@ preWaitAction := [self flush]. Processor addPreWaitAction:preWaitAction. [ - super dispatchLoop + super dispatchLoop ] ensure:[ - Processor removePreWaitAction:preWaitAction. - preWaitAction := nil. + Processor removePreWaitAction:preWaitAction. + preWaitAction := nil. ]. ! @@ -4962,24 +4962,24 @@ |eventArray| dispatchingExpose notNil ifTrue:[ - [self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[ - self dispatchExposeEventFor:dispatchingExpose - ]. - ^ self + [self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[ + self dispatchExposeEventFor:dispatchingExpose + ]. + ^ self ]. eventArray := Array new:13. [self eventPendingWithSync:false] whileTrue:[ - (self getEventFor:nil withMask:nil into:eventArray) ifTrue:[ - 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. - ] - ]. + (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" @@ -4999,17 +4999,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 @@ -5055,7 +5055,7 @@ ConservativeSync == true ifTrue:[self sync]. dispatchingExpose notNil ifTrue:[ - ^ self exposeEventPendingFor:dispatchingExpose withSync:false + ^ self exposeEventPendingFor:dispatchingExpose withSync:false ]. ^ self eventPendingWithSync:false @@ -5080,23 +5080,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 ); %} @@ -5112,20 +5112,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 ); %} @@ -5135,7 +5135,7 @@ "return true, if any event is queued" dispatchingExpose notNil ifTrue:[ - ^ self exposeEventPendingFor:dispatchingExpose withSync:false + ^ self exposeEventPendingFor:dispatchingExpose withSync:false ]. ^ self eventQueuedAlready @@ -5152,12 +5152,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 ); %} @@ -5178,23 +5178,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 ); %} @@ -5210,11 +5210,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. @@ -5237,7 +5237,7 @@ OBJ arg, sym, t, windowID; if (! ISCONNECTED) { - RETURN (false); + RETURN (false); } dpy = myDpy; @@ -5245,39 +5245,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) @@ -5303,366 +5303,366 @@ # define cme ((XColormapEvent *)&ev) if (((t = __INST(lastId)) != nil) - && __isExternalAddress(t) - && (__WindowVal(t) == ae->window)) { - windowID = t; + && __isExternalAddress(t) + && (__WindowVal(t) == ae->window)) { + windowID = t; } else { - windowID = __MKEXTERNALADDRESS(ae->window); + windowID = __MKEXTERNALADDRESS(ae->window); } __ArrayInstPtr(anEventArray)->a_element[0] = windowID; __STORE(anEventArray, windowID); __ArrayInstPtr(anEventArray)->a_element[1] = __MKSMALLINT(ev.type); switch (ev.type) { - case KeyRelease: - sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:); - goto keyPressAndRelease; - - case KeyPress: - sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:); - /* FALL INTO */ - - keyPressAndRelease: - arg = nil; - nchars = XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL); - if (nchars - && (((buffer[0] >= ' ') && (buffer[0] <= '~')) - || (buffer[0] >= 0x80))) { - arg = __MKCHARACTER(buffer[0])/* *_CharacterTable[buffer[0]] */; - keySymString = NULL; - } else { - keySymString = XKeysymToString(keySym); - if (keySymString) { - arg = __MKSYMBOL(keySymString, 0); - } else { - arg = nil; - } - } + case KeyRelease: + sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:); + goto keyPressAndRelease; + + case KeyPress: + sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:); + /* FALL INTO */ + + keyPressAndRelease: + arg = nil; + nchars = XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL); + if (nchars + && (((buffer[0] >= ' ') && (buffer[0] <= '~')) + || (buffer[0] >= 0x80))) { + arg = __MKCHARACTER(buffer[0])/* *_CharacterTable[buffer[0]] */; + keySymString = NULL; + } else { + keySymString = XKeysymToString(keySym); + if (keySymString) { + arg = __MKSYMBOL(keySymString, 0); + } else { + arg = nil; + } + } #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:); - 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:); + break; + + default: + __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event); + break; } #undef ae #undef ee @@ -5716,20 +5716,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 @@ -5749,19 +5749,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 @@ -5804,89 +5804,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. @@ -5909,106 +5909,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= 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 @@ -6127,35 +6127,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 @@ -6191,47 +6191,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:[ @@ -6257,37 +6257,37 @@ 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); - } - avgDescent = __MKSMALLINT(f->descent); - 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, " ", 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); + } + avgDescent = __MKSMALLINT(f->descent); + 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, " ", 1); + LEAVE_XLIB(); + + avgWidth = __MKSMALLINT( len ); + } + } } %}. avgAscent == nil ifTrue:[ - self primitiveFailedOrClosedConnection. - ^ nil + self primitiveFailedOrClosedConnection. + ^ nil ]. "DingBats font returns 0 for maxAscent/maxDescent" @@ -6330,8 +6330,8 @@ " Screen current - fontProperties:#(#'PIXEL_SIZE' #'POINT_SIZE' #'RESOLUTION' notExistant) - of:Screen current getDefaultFont + fontProperties:#(#'PIXEL_SIZE' #'POINT_SIZE' #'RESOLUTION' notExistant) + of:Screen current getDefaultFont " ! @@ -6352,20 +6352,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 @@ -6376,7 +6376,7 @@ |d| d := Dictionary new. (Screen current fontPropertiesOf:Screen current getDefaultFont) pairWiseDo:[:name :value| - d at:((Screen current atomName:name) ? name) put:value + d at:((Screen current atomName:name) ? name) put:value ]. d " @@ -6393,11 +6393,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 @@ -6415,15 +6415,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. @@ -6447,36 +6447,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; ia_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; ia_element[i] = str; __STORE(arr, str); + } + } + XFreeFontNames(fonts); + RETURN (arr); + } } %}. ^ nil @@ -6498,7 +6498,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 @@ -6512,32 +6512,32 @@ 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 isNil ifTrue:[ - " - mhmh - fall back to the default font - " - theName := 'fixed' - ]. - theId := self createFontFor:theName. - theId isNil ifTrue:[ - theId := self getDefaultFont - ]. - ^ theId + roundedSize notNil ifTrue:[ + theName := familyString , '-' , roundedSize printString + ] ifFalse:[ + theName := familyString + ]. + theName isNil ifTrue:[ + " + mhmh - fall back to the default font + " + theName := 'fixed' + ]. + theId := self createFontFor:theName. + theId isNil ifTrue:[ + theId := self getDefaultFont + ]. + ^ theId ]. "/ spacing other than 'normal' is contained as last component @@ -6545,67 +6545,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 @@ -6614,8 +6614,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 @@ -6638,64 +6638,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. @@ -6704,14 +6704,14 @@ " Display - getFontWithFoundry:'*' - family:'courier' - weight:'medium' - slant:'r' - spacing:nil - pixelSize:nil - size:13 - encoding:'iso8859-*' + getFontWithFoundry:'*' + family:'courier' + weight:'medium' + slant:'r' + spacing:nil + pixelSize:nil + size:13 + encoding:'iso8859-*' " "Modified: 10.4.1997 / 19:15:44 / cg" @@ -6726,12 +6726,12 @@ |names| listOfXFonts isNil ifTrue:[ - names := self getAvailableFontsMatching:'*'. - names isNil ifTrue:[ - "no names returned ..." - ^ nil - ]. - listOfXFonts := names collect:[:aName | self fontDescriptionFromXFontName:aName]. + names := self getAvailableFontsMatching:'*'. + names isNil ifTrue:[ + "no names returned ..." + ^ nil + ]. + listOfXFonts := names collect:[:aName | self fontDescriptionFromXFontName:aName]. ]. ^ listOfXFonts @@ -6757,10 +6757,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 @@ -6781,21 +6781,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 @@ -6810,10 +6810,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 @@ -6840,168 +6840,168 @@ 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 0 - ENTER_XLIB(); - len = XQueryTextExtents(myDpy, f->fid, cp, l, - &directionReturn, &fontAscentReturn, &fontDescentReturn, - &overAllReturn); - LEAVE_XLIB(); - console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width); -#endif - ENTER_XLIB(); - len = XTextWidth(f, cp, l); - LEAVE_XLIB(); - - RETURN ( __MKSMALLINT(len) ); - } - } - - 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) ); - } - } - - /* 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 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 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(); - - - if (mustFree) { - free(cp2); - } - - RETURN ( __MKSMALLINT(len) ); - } - } - } - } + ENTER_XLIB(); + len = XQueryTextExtents(myDpy, f->fid, cp, l, + &directionReturn, &fontAscentReturn, &fontDescentReturn, + &overAllReturn); + LEAVE_XLIB(); + console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width); +#endif + ENTER_XLIB(); + len = XTextWidth(f, cp, l); + LEAVE_XLIB(); + + RETURN ( __MKSMALLINT(len) ); + } + } + + 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) ); + } + } + + /* 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 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 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(); + + + if (mustFree) { + free(cp2); + } + + RETURN ( __MKSMALLINT(len) ); + } + } + } + } } #undef NLOCALBUFFER fail: ; @@ -7027,96 +7027,96 @@ XCharStruct overAllReturn; if (ISCONNECTED) { - if (__isExternalAddress(aFontId) - && __isNonNilObject(aString)) { - int lMax = __intVal(@global(MaxStringLength)); - f = __FontVal(aFontId); - if (! f) goto fail; - - cp = (char *) __stringVal(aString); - - if (__isStringLike(aString)) { - n = __stringSize(aString); + if (__isExternalAddress(aFontId) + && __isNonNilObject(aString)) { + int lMax = __intVal(@global(MaxStringLength)); + f = __FontVal(aFontId); + if (! f) goto fail; + + cp = (char *) __stringVal(aString); + + if (__isStringLike(aString)) { + n = __stringSize(aString); #if 0 - ENTER_XLIB(); - len = XQueryTextExtents(myDpy, f->fid, cp, n, - &directionReturn, &fontAscentReturn, &fontDescentReturn, - &overAllReturn); - LEAVE_XLIB(); - console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width); -#endif - - ENTER_XLIB(); - len = XTextWidth(f, cp, n); - LEAVE_XLIB(); - - RETURN ( __MKSMALLINT(len) ); - } - - cls = __qClass(aString); - nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars)); - cp += nInstBytes; - - if (__isBytes(aString)) { - n = __byteArraySize(aString) - nInstBytes; - - - ENTER_XLIB(); - len = XTextWidth(f, cp, n); - LEAVE_XLIB(); - - RETURN ( __MKSMALLINT(len) ); - } - - /* 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; - - /* - * 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 (n <= NLOCALBUFFER) { - cp2 = xlatebuffer; - } else { - cp2 = (XChar2b *)(malloc(n * 2)); - mustFree = 1; - } - - for (i=0; ifid, cp, n, + &directionReturn, &fontAscentReturn, &fontDescentReturn, + &overAllReturn); + LEAVE_XLIB(); + console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width); +#endif + + ENTER_XLIB(); + len = XTextWidth(f, cp, n); + LEAVE_XLIB(); + + RETURN ( __MKSMALLINT(len) ); + } + + cls = __qClass(aString); + nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars)); + cp += nInstBytes; + + if (__isBytes(aString)) { + n = __byteArraySize(aString) - nInstBytes; + + + ENTER_XLIB(); + len = XTextWidth(f, cp, n); + LEAVE_XLIB(); + + RETURN ( __MKSMALLINT(len) ); + } + + /* 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; + + /* + * 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 (n <= NLOCALBUFFER) { + cp2 = xlatebuffer; + } else { + cp2 = (XChar2b *)(malloc(n * 2)); + mustFree = 1; + } + + for (i=0; iba_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: ; %}. @@ -7560,14 +7560,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 ); + } } %}. " @@ -7585,17 +7585,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 @@ -7608,13 +7608,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 @@ -7630,30 +7630,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 ); + } + } } %}. " @@ -7671,12 +7671,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 @@ -7700,56 +7700,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: ; %}. @@ -7770,12 +7770,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 @@ -7791,25 +7791,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 @@ -7827,13 +7827,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(); } %} ! @@ -7844,10 +7844,10 @@ %{ if (ISCONNECTED) { - Display *dpy = myDpy; - - __INST(displayId) = nil; - close(ConnectionNumber(dpy)); + Display *dpy = myDpy; + + __INST(displayId) = nil; + close(ConnectionNumber(dpy)); } %} ! @@ -7881,15 +7881,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. @@ -7939,52 +7939,52 @@ 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 stringFromKeyCode nonNilOnes | - - altModifierMask := 0. - metaModifierMask := 0. - - stringFromKeyCode := [:key | - |s| - s := self stringFromKeycode:key. - s notNil - ifTrue:[s asSymbol] - ifFalse:[nil] - ]. - nonNilOnes := [:str | str notNil]. - - mod := map at:1. - mod notNil ifTrue:[ - shiftModifiers := (mod collect:stringFromKeyCode thenSelect:nonNilOnes) asArray. - ]. - mod := map at:3. - mod notNil ifTrue:[ - ctrlModifiers := (mod collect:stringFromKeyCode thenSelect:nonNilOnes) asArray. - ]. - mod := map at:4. - mod notNil ifTrue:[ - mod := (mod collect:stringFromKeyCode thenSelect:nonNilOnes) asArray. - (mod includes:'Num_Lock') ifFalse:[ - metaModifiers := mod. - metaModifierMask := 1 bitShift:(4-1). - ]. - ]. - mod := map at:5. - mod notNil ifTrue:[ - mod := (mod collect:stringFromKeyCode thenSelect:nonNilOnes) asArray. - (mod includes:'Num_Lock') ifFalse:[ - altModifiers := mod. - altModifierMask := 1 bitShift:(5-1). - ]. - ] + | mod stringFromKeyCode nonNilOnes | + + altModifierMask := 0. + metaModifierMask := 0. + + stringFromKeyCode := [:key | + |s| + s := self stringFromKeycode:key. + s notNil + ifTrue:[s asSymbol] + ifFalse:[nil] + ]. + nonNilOnes := [:str | str notNil]. + + mod := map at:1. + mod notNil ifTrue:[ + shiftModifiers := (mod collect:stringFromKeyCode thenSelect:nonNilOnes) asArray. + ]. + mod := map at:3. + mod notNil ifTrue:[ + ctrlModifiers := (mod collect:stringFromKeyCode thenSelect:nonNilOnes) asArray. + ]. + mod := map at:4. + mod notNil ifTrue:[ + mod := (mod collect:stringFromKeyCode thenSelect:nonNilOnes) asArray. + (mod includes:'Num_Lock') ifFalse:[ + metaModifiers := mod. + metaModifierMask := 1 bitShift:(4-1). + ]. + ]. + mod := map at:5. + mod notNil ifTrue:[ + mod := (mod collect:stringFromKeyCode thenSelect:nonNilOnes) asArray. + (mod includes:'Num_Lock') ifFalse:[ + altModifiers := mod. + altModifierMask := 1 bitShift:(5-1). + ]. + ] ]. " @@ -8031,12 +8031,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. @@ -8046,13 +8046,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. ]. %{ @@ -8070,33 +8070,33 @@ int dummy; if (ISCONNECTED) { - dpy = myDpy; - - /* - * look for RGB visual - */ - nvi = 0; - viproto.screen = scr; - vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi); - maxRGBDepth = 0; - for (i = 0; i < nvi; i++) { - switch (vip[i].class) { - case TrueColor: - if (vip[i].depth > maxRGBDepth) { - maxRGBDepth = vip[i].depth; - rgbRedMask = vip[i].red_mask; - rgbGreenMask = vip[i].green_mask; - rgbBlueMask = vip[i].blue_mask; - rgbVisualID = vip[i].visualid; - } - break; - } - } - if (vip) XFree ((char *) vip); - - if (maxRGBDepth) { - __INST(rgbVisual) = __MKEXTERNALADDRESS(rgbVisualID); __STORESELF(rgbVisual); - } + dpy = myDpy; + + /* + * look for RGB visual + */ + nvi = 0; + viproto.screen = scr; + vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi); + maxRGBDepth = 0; + for (i = 0; i < nvi; i++) { + switch (vip[i].class) { + case TrueColor: + if (vip[i].depth > maxRGBDepth) { + maxRGBDepth = vip[i].depth; + rgbRedMask = vip[i].red_mask; + rgbGreenMask = vip[i].green_mask; + rgbBlueMask = vip[i].blue_mask; + rgbVisualID = vip[i].visualid; + } + break; + } + } + if (vip) XFree ((char *) vip); + + if (maxRGBDepth) { + __INST(rgbVisual) = __MKEXTERNALADDRESS(rgbVisualID); __STORESELF(rgbVisual); + } } %}. ! @@ -8111,17 +8111,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. ] ! @@ -8135,24 +8135,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 @@ -8162,12 +8162,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 @@ -8181,12 +8181,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 @@ -8201,14 +8201,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 %}. @@ -8223,10 +8223,10 @@ %{ /* NOCONTEXT */ if (ISCONNECTED) { - Display *dpy; - - dpy = myDpy; - RETURN ( __MKSMALLINT(DefaultScreen(dpy))); + Display *dpy; + + dpy = myDpy; + RETURN ( __MKSMALLINT(DefaultScreen(dpy))); } %}. ^ nil @@ -8240,25 +8240,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 @@ -8272,12 +8272,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 @@ -8291,12 +8291,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 @@ -8310,12 +8310,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 @@ -8330,14 +8330,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 %}. @@ -8353,14 +8353,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 %}. @@ -8375,17 +8375,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 @@ -8400,14 +8400,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 %}. @@ -8423,14 +8423,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 %}. @@ -8445,12 +8445,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 @@ -8464,12 +8464,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 @@ -8483,12 +8483,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 @@ -8503,14 +8503,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 %}. @@ -8526,14 +8526,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 %}. @@ -8549,14 +8549,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 %}. @@ -8569,8 +8569,8 @@ reinitialize preWaitAction notNil ifTrue:[ - Processor removePreWaitAction:preWaitAction. - preWaitAction := nil. + Processor removePreWaitAction:preWaitAction. + preWaitAction := nil. ]. virtualRootId := rootId := nil. selectionFetchers := nil. @@ -8580,8 +8580,8 @@ releaseDeviceResources preWaitAction notNil ifTrue:[ - Processor removePreWaitAction:preWaitAction. - preWaitAction := nil. + Processor removePreWaitAction:preWaitAction. + preWaitAction := nil. ]. selectionFetchers := nil. super releaseDeviceResources. @@ -8605,7 +8605,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. " @@ -8637,7 +8637,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 @@ -8711,18 +8711,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. - ]. - 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. + ]. + nextKey := nextKey+maxKeyPerMod. ]. ^ ret @@ -8736,12 +8736,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 + ] + ]. " ! @@ -8766,23 +8766,23 @@ XModifierKeymap *modmap; if (ISCONNECTED) { - Display *dpy = myDpy; - - if ((modmap = XGetModifierMapping(dpy)) != 0) { - maxKeyPerMod = __MKSMALLINT(modmap->max_keypermod); - 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) { + maxKeyPerMod = __MKSMALLINT(modmap->max_keypermod); + 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 " ! @@ -8805,17 +8805,17 @@ if (ISCONNECTED && __isSmallInteger(code)) { - Display *dpy = myDpy; - - if ((keysym = XKeycodeToKeysym(dpy, __intVal(code), 0)) != NoSymbol && - (keystring = XKeysymToString(keysym)) != 0) - str = __MKSTRING(keystring); + Display *dpy = myDpy; + + if ((keysym = XKeycodeToKeysym(dpy, __intVal(code), 0)) != NoSymbol && + (keystring = XKeysymToString(keysym)) != 0) + str = __MKSTRING(keystring); } %}. ^ str " - Display stringFromKeycode:28 + Display stringFromKeycode:28 " ! @@ -8831,7 +8831,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" @@ -8847,14 +8847,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(); } %} ! @@ -8867,9 +8867,9 @@ %{ if (ISCONNECTED) { - ENTER_XLIB(); - XSynchronize(myDpy, 0); - LEAVE_XLIB(); + ENTER_XLIB(); + XSynchronize(myDpy, 0); + LEAVE_XLIB(); } %} " @@ -8888,9 +8888,9 @@ %{ if (ISCONNECTED) { - ENTER_XLIB(); - XFlush(myDpy); - LEAVE_XLIB(); + ENTER_XLIB(); + XFlush(myDpy); + LEAVE_XLIB(); } %} ! @@ -8900,12 +8900,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 %}. @@ -8924,9 +8924,9 @@ if (ISCONNECTED) { - ENTER_XLIB(); - XSync(myDpy, 0); - LEAVE_XLIB(); + ENTER_XLIB(); + XSync(myDpy, 0); + LEAVE_XLIB(); } %} @@ -8937,13 +8937,12 @@ %{ XMappingEvent *ev; - if (ISCONNECTED - && __isByteArray(eB)) { - ev = (XMappingEvent *)(__ByteArrayInstPtr(eB)->ba_element); - ENTER_XLIB(); - XRefreshKeyboardMapping(ev); - LEAVE_XLIB(); - RETURN ( self ); + if (ISCONNECTED && __isByteArrayLike(eB)) { + ev = (XMappingEvent *)(__ByteArrayInstPtr(eB)->ba_element); + ENTER_XLIB(); + XRefreshKeyboardMapping(ev); + LEAVE_XLIB(); + RETURN ( self ); } %}. self primitiveFailedOrClosedConnection @@ -8983,25 +8982,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:; %}. @@ -9034,9 +9033,9 @@ if (ISCONNECTED) { - ENTER_XLIB(); - XSynchronize(myDpy, 1); - LEAVE_XLIB(); + ENTER_XLIB(); + XSynchronize(myDpy, 1); + LEAVE_XLIB(); } %} @@ -9074,28 +9073,28 @@ unsigned int mask; if (ISCONNECTED) { - Display *dpy = myDpy; + Display *dpy = myDpy; #ifdef VIRTUAL_ROOT - ENTER_XLIB(); - w = getRootWindow(dpy, screen); - LEAVE_XLIB(); + ENTER_XLIB(); + w = getRootWindow(dpy, screen); + LEAVE_XLIB(); #else - w = RootWindow(dpy, screen); -#endif - - if (w) { - - ENTER_XLIB(); - XQueryPointer(dpy, w, &rootRet, &childRet, - &rootX, &rootY, - &winX, &winY, - &mask); - LEAVE_XLIB(); - - RETURN (__MKSMALLINT(mask)); - } + w = RootWindow(dpy, screen); +#endif + + if (w) { + + ENTER_XLIB(); + XQueryPointer(dpy, w, &rootRet, &childRet, + &rootX, &rootY, + &winX, &winY, + &mask); + LEAVE_XLIB(); + + RETURN (__MKSMALLINT(mask)); + } } %}. self primitiveFailedOrClosedConnection. @@ -9154,30 +9153,30 @@ unsigned int mask; if (ISCONNECTED) { - Display *dpy = myDpy; + Display *dpy = myDpy; #ifdef VIRTUAL_ROOT - ENTER_XLIB(); - w = getRootWindow(dpy, screen); - LEAVE_XLIB(); + ENTER_XLIB(); + w = getRootWindow(dpy, screen); + LEAVE_XLIB(); #else - w = RootWindow(dpy, screen); -#endif - ENTER_XLIB(); - XQueryPointer(dpy, w, &rootRet, &childRet, - &rootX, &rootY, - &winX, &winY, - &mask); - LEAVE_XLIB(); - xpos = __MKSMALLINT(rootX); - ypos = __MKSMALLINT(rootY); + w = RootWindow(dpy, screen); +#endif + 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 ! @@ -9219,21 +9218,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 @@ -9250,11 +9249,11 @@ Answer nil, if there is none" selectionFetchers isNil ifTrue:[ - ^ nil. + ^ nil. ]. ^ selectionFetchers detect:[:eachFetcher| - eachFetcher matchesDrawableId:aDrawableId + eachFetcher matchesDrawableId:aDrawableId ] ifNone:[]. ! @@ -9262,7 +9261,7 @@ "register a SelectionFetcher that receives selection events for aDrawableId" selectionFetchers isNil ifTrue:[ - selectionFetchers := OrderedCollection new. + selectionFetchers := OrderedCollection new. ]. selectionFetchers add:aSelectionFetcher. @@ -9283,26 +9282,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:; %}. @@ -9317,15 +9316,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. ]. %{ @@ -9340,97 +9339,97 @@ # 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, "- \n", nitems, bytes_after); -#endif - } while (bytes_after > 0); - - if (ok) { - switch (actual_format) { - case 32: - val = __stArrayFromCUIntArray(cp, nread/4); - break; - case 16: - val = __stArrayFromCUShortArray(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, "- \n", nitems, bytes_after); +#endif + } while (bytes_after > 0); + + if (ok) { + switch (actual_format) { + case 32: + val = __stArrayFromCUIntArray(cp, nread/4); + break; + case 16: + val = __stArrayFromCUShortArray(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 ifTrue:[ - ^ nil + ^ nil ]. ^ typeID->val " Display - getProperty:#'_NET_WM_ICON_GEOMETRY' - from:nil - delete:false + getProperty:#'_NET_WM_ICON_GEOMETRY' + from:nil + delete:false " ! @@ -9443,9 +9442,9 @@ |windowID atoms| aWindowOrWindowIDOrNil isView ifTrue:[ - windowID := aWindowOrWindowIDOrNil id. + windowID := aWindowOrWindowIDOrNil id. ] ifFalse:[ - windowID := aWindowOrWindowIDOrNil. + windowID := aWindowOrWindowIDOrNil. ]. %{ @@ -9454,41 +9453,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; ia_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; ia_element[i] = atm; __STORE(atoms, atm); + } + XFree(atomListPtr); + RETURN (atoms); } fail: ; %}. @@ -9500,12 +9499,12 @@ " " (Display propertiesOf:nil) do:[:atm | - |v| - - Transcript show:((Display atomName:atm) printStringLeftPaddedTo:5). - Transcript show:': '. - Display getProperty:atm from:nil delete:false into:[:type :val | v := (Display atomName:type)->val]. - Transcript showCR:v. + |v| + + Transcript show:((Display atomName:atm) printStringLeftPaddedTo:5). + Transcript show:': '. + Display getProperty:atm from:nil delete:false into:[:type :val | v := (Display atomName:type)->val]. + Transcript showCR:v. ] " ! @@ -9521,59 +9520,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 (__isByteArray(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=%x prop=%x type=%x\n", window, prop, 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=%x prop=%x type=%x\n", window, prop, type)); } %}. ^ retval @@ -9626,15 +9625,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 @@ -9659,15 +9658,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. @@ -9691,11 +9690,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 @@ -9708,27 +9707,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:'' " ! @@ -9744,14 +9743,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. @@ -9777,35 +9776,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 @@ -9830,20 +9829,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 @@ -9867,80 +9866,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, __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, __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 @@ -9952,7 +9951,7 @@ "register someone to be notified when the selection changes" selectionHandlers isNil ifTrue:[ - selectionHandlers := IdentitySet new. + selectionHandlers := IdentitySet new. ]. selectionHandlers add:someone ! @@ -9967,30 +9966,30 @@ 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 now drawableId. - Should I borrow a drawableId from another window?" - - selection := SelectionFetcher - requestSelection:clipboardAtom - type:(self atomIDOf:#'ST_OBJECT') - onDevice:self for:drawableId. - - selection isNil ifTrue:[ - selection := SelectionFetcher - requestSelection:clipboardAtom - type:(self atomIDOf:#'UTF8_STRING') - onDevice:self for:drawableId. - ]. + "sorry, cannot fetch a selection, if there is now drawableId. + Should I borrow a drawableId from another window?" + + selection := SelectionFetcher + requestSelection:clipboardAtom + type:(self atomIDOf:#'ST_OBJECT') + onDevice:self for:drawableId. + + selection isNil ifTrue:[ + selection := SelectionFetcher + requestSelection:clipboardAtom + type:(self atomIDOf:#'UTF8_STRING') + onDevice:self for:drawableId. + ]. ]. ^ selection. @@ -10007,38 +10006,38 @@ |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" - ^ self copyBufferAsString. + "I still hold the selection, so return my locally buffered data" + ^ self copyBufferAsString. ]. drawableId notNil ifTrue:[ - "sorry, cannot fetch a selection, if there is now 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 now 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 @@ -10053,10 +10052,10 @@ "no longer tell someone about selection changes" selectionHandlers notNil ifTrue:[ - selectionHandlers remove:someone ifAbsent:nil. - selectionHandlers isEmpty ifTrue:[ - selectionHandlers := nil - ] + selectionHandlers remove:someone ifAbsent:nil. + selectionHandlers isEmpty ifTrue:[ + selectionHandlers := nil + ] ]. ! ! @@ -10067,38 +10066,38 @@ Answer the converted selection" (aTargetAtom == (self atomIDOf:#STRING)) ifTrue:[ - "the other view wants the selection as string" - ^ self copyBufferAsString. + "the other view wants the selection as string" + ^ self copyBufferAsString. ]. (aTargetAtom == (self atomIDOf:#UTF8_STRING)) ifTrue:[ - "the other view wants the selection as utf8 string" - ^ self copyBufferAsString utf8Encoded. + "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. + "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. + "the other view wants to know which targets we support" + ^ self supportedTargetAtoms. ]. (aTargetAtom == (self atomIDOf:#'ST_OBJECT')) ifTrue:[ - "send the selection in binaryStore format" - "require libboss to be loaded" - (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[^ nil]. - ^ self getCopyBuffer binaryStoreBytes. + "send the selection in binaryStore format" + "require libboss to be loaded" + (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[^ nil]. + ^ self getCopyBuffer binaryStoreBytes. ]. 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 + "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 ]. "we do not support the requestet target type" @@ -10141,7 +10140,7 @@ numericTargetArray := IntegerArray new:supportedTargets size. supportedTargets keysAndValuesDo:[:index :targetSymbol| - numericTargetArray at:index put:(self atomIDOf:targetSymbol) + numericTargetArray at:index put:(self atomIDOf:targetSymbol) ]. ^ numericTargetArray @@ -10158,21 +10157,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. @@ -10196,34 +10195,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:; } %}. @@ -10232,17 +10231,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 " ! @@ -10256,72 +10255,72 @@ %{ 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=%x prop=%x target=%x requestor=%x to %x\n", - ev.xselection.selection, - ev.xselection.property, - ev.xselection.target, - ev.xselection.requestor, - 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=%x prop=%x target=%x requestor=%x to %x\n", + ev.xselection.selection, + ev.xselection.property, + ev.xselection.target, + ev.xselection.requestor, + 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. @@ -10344,9 +10343,9 @@ selectionOwner := aWindowId. selectionAtomSymbolOrID isString ifTrue:[ - selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false. + selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false. ] ifFalse:[ - selectionAtomID := selectionAtomSymbolOrID. + selectionAtomID := selectionAtomSymbolOrID. ]. %{ @@ -10355,27 +10354,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=%x win=%x\n", __AtomVal(selectionAtomID), 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=%x win=%x\n", __AtomVal(selectionAtomID), win)); + ENTER_XLIB(); + XSetSelectionOwner(dpy, __AtomVal(selectionAtomID), win, time); + RETURN (self); + LEAVE_XLIB(); } err:; %}. @@ -10393,10 +10392,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 @@ -10410,20 +10409,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. + ] " ! @@ -10437,35 +10436,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. @@ -10488,17 +10487,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. @@ -10518,92 +10517,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); @@ -10626,21 +10625,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. @@ -10653,12 +10652,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 @@ -10674,29 +10673,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: ; %}. @@ -10719,30 +10718,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). @@ -10753,15 +10752,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| @@ -10782,22 +10781,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. @@ -10827,17 +10826,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 @@ -10849,26 +10848,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. ]. %{ @@ -10878,91 +10877,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 @@ -10976,10 +10975,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 @@ -10997,16 +10996,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 @@ -11020,10 +11019,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 @@ -11037,21 +11036,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. @@ -11074,10 +11073,10 @@ if (ISCONNECTED && __isStringLike(aString) && __isExternalAddress(aWindowId)) { - ENTER_XLIB(); - XSetIconName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(aString)); - LEAVE_XLIB(); - RETURN ( self ); + ENTER_XLIB(); + XSetIconName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(aString)); + LEAVE_XLIB(); + RETURN ( self ); } %}. self primitiveFailedOrClosedConnection @@ -11092,10 +11091,10 @@ if (ISCONNECTED && __isStringLike(aString) && __isExternalAddress(aWindowId)) { - ENTER_XLIB(); - XStoreName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(aString)); - LEAVE_XLIB(); - RETURN ( self ); + ENTER_XLIB(); + XStoreName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(aString)); + LEAVE_XLIB(); + RETURN ( self ); } %}. self primitiveFailedOrClosedConnection @@ -11109,10 +11108,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 @@ -11126,32 +11125,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 @@ -11167,14 +11166,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 @@ -11190,18 +11189,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 @@ -11217,34 +11216,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 @@ -11259,16 +11258,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 @@ -11284,18 +11283,18 @@ activeWindowAtom := self atomIDOf:#'_NET_ACTIVE_WINDOW'. 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. ]. ! @@ -11306,12 +11305,12 @@ stringUsed := aString. self supportsUTF8WindowLabels ifTrue:[ - stringUsed := aString utf8Encoded. + stringUsed := aString utf8Encoded. ] ifFalse:[ - aString bitsPerCharacter > 8 ifTrue:[ - "/ X does not like 2-byte labels ... - stringUsed := aString asSingleByteStringReplaceInvalidWith:$? - ]. + aString bitsPerCharacter > 8 ifTrue:[ + "/ X does not like 2-byte labels ... + stringUsed := aString asSingleByteStringReplaceInvalidWith:$? + ]. ]. self primSetIconName:stringUsed in:aWindowId ! @@ -11326,13 +11325,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 @@ -11346,21 +11345,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: ; %}. @@ -11378,10 +11377,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 @@ -11399,10 +11398,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 @@ -11417,10 +11416,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 @@ -11435,10 +11434,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 @@ -11457,17 +11456,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 %}. @@ -11483,10 +11482,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 @@ -11501,24 +11500,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:; } %}. @@ -11535,34 +11534,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 @@ -11576,20 +11575,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 @@ -11603,28 +11602,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 @@ -11639,20 +11638,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 @@ -11666,29 +11665,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(); + } } %}. ! @@ -11700,12 +11699,12 @@ stringUsed := aString. self supportsUTF8WindowLabels ifTrue:[ - stringUsed := aString utf8Encoded. + stringUsed := aString utf8Encoded. ] ifFalse:[ - aString bitsPerCharacter > 8 ifTrue:[ - "/ X does not like 2-byte labels ... - stringUsed := aString asSingleByteStringReplaceInvalidWith:$? - ]. + aString bitsPerCharacter > 8 ifTrue:[ + "/ X does not like 2-byte labels ... + stringUsed := aString asSingleByteStringReplaceInvalidWith:$? + ]. ]. self primSetWindowName:stringUsed in:aWindowId @@ -11726,18 +11725,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 %}. @@ -11753,14 +11752,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 @@ -11775,28 +11774,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. @@ -11815,7 +11814,7 @@ process that requests the clipboard. [author:] - Stefan Vogel (stefan@zwerg) + Stefan Vogel (stefan@zwerg) [instance variables:] @@ -11840,39 +11839,39 @@ |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:[^ nil]. - ^ (Object readBinaryFrom:(ReadStream on:buffer) onError:[nil]) + "require libboss to be loaded" + (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[^ nil]. + ^ (Object readBinaryFrom:(ReadStream on:buffer) onError:[nil]) ]. 'XWorkstation: unimplemented property targetID: ' infoPrint. (display atomName:targetID) infoPrint. @@ -11889,16 +11888,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. @@ -11915,26 +11914,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. + ]. ]. ! @@ -11944,30 +11943,30 @@ |property propertyKey| 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. 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:[ - 'XWorkstation(error): unexpected targetID in selectionNotify: ' errorPrint. - display errorPrintCR. - done := true. + 'XWorkstation(error): unexpected targetID in selectionNotify: ' errorPrint. + display errorPrintCR. + done := true. ]]. ! ! @@ -11988,31 +11987,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 @@ -12029,7 +12028,11 @@ !XWorkstation class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.509 2009-11-05 13:51:09 cg Exp $' + ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.510 2009-11-05 14:37:06 stefan Exp $' +! + +version_CVS + ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.510 2009-11-05 14:37:06 stefan Exp $' ! ! XWorkstation initialize!