--- 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
<context: #return>
@@ -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 @@
<context: #return>
%{
if (! ISCONNECTED) {
- RETURN ( self );
+ RETURN ( self );
}
if (__isExternalAddress(aWindowId)) {
- Window win = __WindowVal(aWindowId);
-
- if (win) {
-
- ENTER_XLIB();
- XDestroyWindow(myDpy, win);
- LEAVE_XLIB();
+ Window win = __WindowVal(aWindowId);
+
+ if (win) {
+
+ ENTER_XLIB();
+ XDestroyWindow(myDpy, win);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- __cnt_view--;
-#endif
-
- }
+ __cnt_view--;
+#endif
+
+ }
}
%}
! !
@@ -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<<bits) - 1;
- shift = 16 - bits;
-
- sr = ((double)(color.red>>shift) / scale) * 0xFFFF;
- sg = ((double)(color.green>>shift) / scale) * 0xFFFF;
- sb = ((double)(color.blue>>shift) / scale) * 0xFFFF;
- RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
+ Display *dpy = myDpy;
+
+ color.pixel = __intVal(index);
+
+ ENTER_XLIB();
+ XQueryColor(dpy, DefaultColormap(dpy, screen), &color);
+ LEAVE_XLIB();
+
+
+ /*
+ * have to compensate for an error in X ?, which does not scale
+ * colors correctly if lesser than 16bits are valid in a color,
+ * (for example, color white on a 4bitsPerRGB server will Return
+ * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
+ */
+ bits = __intVal(__INST(bitsPerRGB));
+ scale = (1<<bits) - 1;
+ shift = 16 - bits;
+
+ sr = ((double)(color.red>>shift) / scale) * 0xFFFF;
+ sg = ((double)(color.green>>shift) / scale) * 0xFFFF;
+ sb = ((double)(color.blue>>shift) / scale) * 0xFFFF;
+ RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
}
%}.
^ super getScaledRGBFrom:index
@@ -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<<bits) - 1;
- shift = 16 - bits;
-
- /* do assignment to doubles (no cast) - avoid alignment problems in HPPA */
- dr = color.red>>shift;
- dg = color.green>>shift;
- db = color.blue>>shift;
-
- sr = (dr / scale) * 0xFFFF;
- sg = (dg / scale) * 0xFFFF;
- sb = (db / scale) * 0xFFFF;
- RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
- }
+ Display *dpy = myDpy;
+
+
+ if (XParseColor(dpy, DefaultColormap(dpy, screen),
+ (char *) __stringVal(colorName), &color)) {
+ /*
+ * have to compensate for an error in X ?, which does not scale
+ * colors correctly if lesser than 16bits are valid in a color,
+ * (for example, color white on a 4bitsPerRGB server will Return
+ * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
+ */
+ bits = __intVal(__INST(bitsPerRGB));
+ scale = (1<<bits) - 1;
+ shift = 16 - bits;
+
+ /* do assignment to doubles (no cast) - avoid alignment problems in HPPA */
+ dr = color.red>>shift;
+ dg = color.green>>shift;
+ db = color.blue>>shift;
+
+ sr = (dr / scale) * 0xFFFF;
+ sg = (dg / scale) * 0xFFFF;
+ sb = (db / scale) * 0xFFFF;
+ RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
+ }
}
%}.
^ super getScaledRGBFromName:colorName
"
- Screen current getScaledRGBFromName:'red'
- Screen current getScaledRGBFromName:'orange'
+ Screen current getScaledRGBFromName:'red'
+ Screen current getScaledRGBFromName:'orange'
"
!
@@ -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<num; i++) {
- int px, py;
-
- point = __AT_(aPolygon, __MKSMALLINT(i+1));
- if (! __isPoint(point)) goto fail;
- x = _point_X(point);
- y = _point_Y(point);
- if (! __bothSmallInteger(x, y))
- goto fail;
-
- px = __intVal(x);
- py = __intVal(y);
-
- /* attention: coordinates in X are shorts and wrap; clamp here. */
- if (px > 0x7FFF) px = 0x7FFF;
- else if (px < -0x8000) px = -0x8000;
- if (py > 0x7FFF) py = 0x7FFF;
- else if (py < -0x8000) py = -0x8000;
-
- points[i].x = px;
- points[i].y = py;
- }
-
- ENTER_XLIB();
- XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
- LEAVE_XLIB();
-
- if (mustFree)
- free(points);
- RETURN ( self );
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ num = __intVal(numberOfPoints);
+ /*
+ * avoid a (slow) malloc, if the number of points is small
+ */
+ if (num > 100) {
+ points = (XPoint *)malloc(sizeof(XPoint) * num);
+ if (! points) goto fail;
+ mustFree = 1;
+ } else
+ points = qPoints;
+
+ for (i=0; i<num; i++) {
+ int px, py;
+
+ point = __AT_(aPolygon, __MKSMALLINT(i+1));
+ if (! __isPoint(point)) goto fail;
+ x = _point_X(point);
+ y = _point_Y(point);
+ if (! __bothSmallInteger(x, y))
+ goto fail;
+
+ px = __intVal(x);
+ py = __intVal(y);
+
+ /* attention: coordinates in X are shorts and wrap; clamp here. */
+ if (px > 0x7FFF) px = 0x7FFF;
+ else if (px < -0x8000) px = -0x8000;
+ if (py > 0x7FFF) py = 0x7FFF;
+ else if (py < -0x8000) py = -0x8000;
+
+ points[i].x = px;
+ points[i].y = py;
+ }
+
+ ENTER_XLIB();
+ XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
+ LEAVE_XLIB();
+
+ if (mustFree)
+ free(points);
+ RETURN ( self );
}
fail: ;
if (mustFree)
- free(points);
+ free(points);
%}.
"badGC, badDrawable or coordinates not integer"
self primitiveFailedOrClosedConnection
@@ -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<l; i++) {
- cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
- cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
- }
- cp = (char *) cp2;
- }
-#endif
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
- else
- XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
- LEAVE_XLIB();
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( self );
- }
- }
-
- /* FOURBYTESTRINGS */
- if (__isLongs(aString)) {
- n = (__byteArraySize(aString) - nInstBytes) / 4;
- if (i2 < n) {
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2 = (XChar2b *)0;
- int32 *ip;
- int mustFree = 0;
-
- cp += (i1 * 4);
- if (l > lMax) l = lMax;
-
- /*
- * all codePoints <= 16rFFFF are draw; above 16bit range are drawn as 16rFFFF.
- */
- if (l <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(l * 2));
- mustFree = 1;
- }
- for (i=0; i<l; i++) {
- int32 codePoint = ((int32 *)cp)[i];
-
- if (codePoint > 0xFFFF) {
- codePoint = 0xFFFF;
- }
- cp2[i].byte1 = (codePoint >> 8) & 0xFF;
- cp2[i].byte2 = codePoint & 0xFF;
- }
- cp = (char *) cp2;
-
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
- else
- XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
- LEAVE_XLIB();
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( self );
- }
- }
- }
+ {
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+ cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+ }
+ cp = (char *) cp2;
+ }
+#endif
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+ else
+ XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+ LEAVE_XLIB();
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( self );
+ }
+ }
+
+ /* FOURBYTESTRINGS */
+ if (__isLongs(aString)) {
+ n = (__byteArraySize(aString) - nInstBytes) / 4;
+ if (i2 < n) {
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2 = (XChar2b *)0;
+ int32 *ip;
+ int mustFree = 0;
+
+ cp += (i1 * 4);
+ if (l > lMax) l = lMax;
+
+ /*
+ * all codePoints <= 16rFFFF are draw; above 16bit range are drawn as 16rFFFF.
+ */
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ int32 codePoint = ((int32 *)cp)[i];
+
+ if (codePoint > 0xFFFF) {
+ codePoint = 0xFFFF;
+ }
+ cp2[i].byte1 = (codePoint >> 8) & 0xFF;
+ cp2[i].byte2 = codePoint & 0xFF;
+ }
+ cp = (char *) cp2;
+
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+ else
+ XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+ LEAVE_XLIB();
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( self );
+ }
+ }
+ }
}
#undef NLOCALBUFFER
%}.
(aString isString and:[aString bitsPerCharacter > 16]) ifTrue:[
- self displayString:(TwoByteString new:aString size withAll:16rFFFF asCharacter)
- from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId opaque:opaque.
- ^ self.
+ self displayString:(TwoByteString new:aString size withAll:16rFFFF asCharacter)
+ from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId opaque:opaque.
+ ^ self.
].
"x/y not integer, badGC or drawable, or not a string"
@@ -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<n; i++) {
- cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
- cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
- }
- cp = (char *) cp2;
- }
-#endif
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
- else
- XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
- LEAVE_XLIB();
-
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( self );
- }
+ {
+ if (n <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(n * 2));
+ mustFree = 1;
+ }
+
+ for (i=0; i<n; i++) {
+ cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+ cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+ }
+ cp = (char *) cp2;
+ }
+#endif
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
+ else
+ XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
+ LEAVE_XLIB();
+
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( self );
+ }
}
#undef NLOCALBUFFER
%}.
@@ -3872,12 +3872,12 @@
!
drawBits:givenBits bitsPerPixel:bitsPerPixel depth:imageDepth padding:givenPadding
- width:imageWidth height:imageHeight
- x:srcx y:srcy
- into:aDrawableId
- x:dstx y:dsty
- width:w height:h
- with:aGCId
+ width:imageWidth height:imageHeight
+ x:srcx y:srcy
+ into:aDrawableId
+ x:dstx y:dsty
+ width:w height:h
+ with:aGCId
"draw a bitImage which has depth id, width iw and height ih into
the drawable. draw a region of w/h pixels from srcx/srcy to dstx/dsty.
@@ -3899,22 +3899,22 @@
"/ care for that.
((imageDepth == 4) and:[depth == 4]) ifTrue:[
- fmt := self supportedImageFormatForDepth:4.
- fmt isNil ifTrue:[
- self primitiveFailed. "/ cannot represent this image
- ^ nil
- ].
- wantedPadding := fmt at:#padding.
- wantedPadding > givenPadding ifTrue:[
- bits := self
- repadBits:givenBits
- width:imageWidth
- height:imageHeight
- depth:imageDepth
- from:givenPadding
- to:wantedPadding.
- padding := wantedPadding.
- ]
+ fmt := self supportedImageFormatForDepth:4.
+ fmt isNil ifTrue:[
+ self primitiveFailed. "/ cannot represent this image
+ ^ nil
+ ].
+ wantedPadding := fmt at:#padding.
+ wantedPadding > givenPadding ifTrue:[
+ bits := self
+ repadBits:givenBits
+ width:imageWidth
+ height:imageHeight
+ depth:imageDepth
+ from:givenPadding
+ to:wantedPadding.
+ padding := wantedPadding.
+ ]
].
"
@@ -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<num; i++) {
- point = __AT_(aPolygon, __MKSMALLINT(i+1));
- if (! __isPoint(point)) goto fail;
- x = _point_X(point);
- y = _point_Y(point);
- if (! __bothSmallInteger(x, y))
- goto fail;
- points[i].x = __intVal(x);
- points[i].y = __intVal(y);
- }
- ENTER_XLIB();
- XFillPolygon(myDpy, win, gc, points, num, Complex, CoordModeOrigin);
- LEAVE_XLIB();
- if (mustFree)
- free(points);
- RETURN ( self );
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ num = __intVal(numberOfPoints);
+ if (num < 3) {
+ RETURN ( self );
+ }
+ /*
+ * avoid (slow) malloc, if not many points
+ */
+ if (num > 100) {
+ points = (XPoint *) malloc(sizeof(XPoint) * num);
+ if (! points) goto fail;
+ mustFree = 1;
+ } else
+ points = qPoints;
+ for (i=0; i<num; i++) {
+ point = __AT_(aPolygon, __MKSMALLINT(i+1));
+ if (! __isPoint(point)) goto fail;
+ x = _point_X(point);
+ y = _point_Y(point);
+ if (! __bothSmallInteger(x, y))
+ goto fail;
+ points[i].x = __intVal(x);
+ points[i].y = __intVal(y);
+ }
+ ENTER_XLIB();
+ XFillPolygon(myDpy, win, gc, points, num, Complex, CoordModeOrigin);
+ LEAVE_XLIB();
+ if (mustFree)
+ free(points);
+ RETURN ( self );
fail: ;
- if (mustFree)
- free(points);
+ if (mustFree)
+ free(points);
}
%}.
"badGC, badDrawable or coordinates not integer"
@@ -4079,19 +4079,19 @@
&& __isExternalAddress(aDrawableId)
&& __bothSmallInteger(x, y)
&& __bothSmallInteger(width, height)) {
- w = __intVal(width);
- h = __intVal(height);
- /*
- * need this check here: some servers simply dump core with bad args
- */
- if ((w >= 0) && (h >= 0)) {
- ENTER_XLIB();
- XFillRectangle(myDpy,
- __DrawableVal(aDrawableId), __GCVal(aGCId),
- __intVal(x), __intVal(y), w, h);
- LEAVE_XLIB();
- }
- RETURN ( self );
+ w = __intVal(width);
+ h = __intVal(height);
+ /*
+ * need this check here: some servers simply dump core with bad args
+ */
+ if ((w >= 0) && (h >= 0)) {
+ ENTER_XLIB();
+ XFillRectangle(myDpy,
+ __DrawableVal(aDrawableId), __GCVal(aGCId),
+ __intVal(x), __intVal(y), w, h);
+ LEAVE_XLIB();
+ }
+ RETURN ( self );
}
%}.
"badGC, badDrawable or coordinates not integer"
@@ -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
<context: #return>
@@ -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
<context: #return>
@@ -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<nSyms; i++) {
- if (syms[i] == keySym) {
+ Display *dpy = myDpy;
+
+ XEvent ev;
+ Window target;
+ Status result;
+ KeySym keySym, *syms;
+ int screen = __intVal(__INST(screen));
+ char s[2];
+ int nSyms;
+
+ if ((typeSymbol == @symbol(keyPress))
+ || (typeSymbol == @symbol(keyRelease))) {
+ if (__isStringLike(keySymCodeOrButtonNr)) {
+ keySym = XStringToKeysym(__stringVal(keySymCodeOrButtonNr));
+ } else {
+ if (__isCharacter(keySymCodeOrButtonNr)) {
+ s[0] = __intVal(__characterVal(keySymCodeOrButtonNr));
+ s[1] = '\0';
+ keySym = XStringToKeysym(s);
+ } else {
+ keySym = (KeySym) __intVal(keySymCodeOrButtonNr);
+ }
+ }
+ ev.xkey.keycode = XKeysymToKeycode(dpy, keySym);
+
+ if (stateMask == nil) {
+ /*
+ * get the modifier from the keySym
+ */
+ nSyms = 0;
+ syms = XGetKeyboardMapping(dpy, ev.xkey.keycode, 1, &nSyms);
+ if (syms) {
+ int i;
+
+ for (i=0; i<nSyms; i++) {
+ if (syms[i] == keySym) {
#ifdef MODIFIERDEBUG
- console_printf("modifier-index is %d\n", i);
-#endif
- if (i) state = (1 << (i-1));
- break;
- }
- }
- XFree(syms);
- }
- }
- } else {
- if ((typeSymbol == @symbol(buttonPress))
- || (typeSymbol == @symbol(buttonRelease))) {
- if (__isSmallInteger(keySymCodeOrButtonNr)) {
- ev.xbutton.button = __intVal(keySymCodeOrButtonNr);
- } else {
- ev.xbutton.button = 1;
- }
- } else {
- DPRINTF(("invalid sendEvent typeSymbol\n"));
- RETURN (false);
- }
- }
-
- if (typeSymbol == @symbol(keyPress))
- ev.xany.type = KeyPress;
- else if (typeSymbol == @symbol(keyRelease))
- ev.xany.type = KeyRelease;
- else if (typeSymbol == @symbol(buttonPress))
- ev.xany.type = ButtonPress;
- else if (typeSymbol == @symbol(buttonRelease))
- ev.xany.type = ButtonRelease;
-
- if (__isExternalAddress(targetId)) {
- target = __WindowVal(targetId);
- } else {
- target = (Window) __longIntVal(targetId);
- }
- ev.xkey.window = target;
- ev.xkey.same_screen = 1;
- ev.xkey.subwindow = 0;
- ev.xkey.root = RootWindow(dpy, screen);
- ev.xkey.x = __intVal(xPos);
- ev.xkey.y = __intVal(yPos);
- ev.xkey.state = state;
- ev.xkey.time = CurrentTime;
-
- ENTER_XLIB();
- result = XSendEvent(dpy, target, False, 0 , &ev);
- LEAVE_XLIB();
- if ((result == BadValue) || (result == BadWindow)) {
- DPRINTF(("bad status\n"));
- RETURN ( false )
- }
- RETURN (true)
+ console_printf("modifier-index is %d\n", i);
+#endif
+ if (i) state = (1 << (i-1));
+ break;
+ }
+ }
+ XFree(syms);
+ }
+ }
+ } else {
+ if ((typeSymbol == @symbol(buttonPress))
+ || (typeSymbol == @symbol(buttonRelease))) {
+ if (__isSmallInteger(keySymCodeOrButtonNr)) {
+ ev.xbutton.button = __intVal(keySymCodeOrButtonNr);
+ } else {
+ ev.xbutton.button = 1;
+ }
+ } else {
+ DPRINTF(("invalid sendEvent typeSymbol\n"));
+ RETURN (false);
+ }
+ }
+
+ if (typeSymbol == @symbol(keyPress))
+ ev.xany.type = KeyPress;
+ else if (typeSymbol == @symbol(keyRelease))
+ ev.xany.type = KeyRelease;
+ else if (typeSymbol == @symbol(buttonPress))
+ ev.xany.type = ButtonPress;
+ else if (typeSymbol == @symbol(buttonRelease))
+ ev.xany.type = ButtonRelease;
+
+ if (__isExternalAddress(targetId)) {
+ target = __WindowVal(targetId);
+ } else {
+ target = (Window) __longIntVal(targetId);
+ }
+ ev.xkey.window = target;
+ ev.xkey.same_screen = 1;
+ ev.xkey.subwindow = 0;
+ ev.xkey.root = RootWindow(dpy, screen);
+ ev.xkey.x = __intVal(xPos);
+ ev.xkey.y = __intVal(yPos);
+ ev.xkey.state = state;
+ ev.xkey.time = CurrentTime;
+
+ ENTER_XLIB();
+ result = XSendEvent(dpy, target, False, 0 , &ev);
+ LEAVE_XLIB();
+ if ((result == BadValue) || (result == BadWindow)) {
+ DPRINTF(("bad status\n"));
+ RETURN ( false )
+ }
+ RETURN (true)
}
%}.
self primitiveFailedOrClosedConnection.
@@ -6031,15 +6031,15 @@
if (ISCONNECTED
&& __isStringLike(aFontName)) {
- ENTER_XLIB();
- newFont = XLoadQueryFont(myDpy, (char *)__stringVal(aFontName));
- LEAVE_XLIB();
+ ENTER_XLIB();
+ newFont = XLoadQueryFont(myDpy, (char *)__stringVal(aFontName));
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- if (newFont)
- __cnt_font++;
-#endif
-
- RETURN ( newFont ? __MKEXTERNALADDRESS(newFont) : nil );
+ if (newFont)
+ __cnt_font++;
+#endif
+
+ RETURN ( newFont ? __MKEXTERNALADDRESS(newFont) : nil );
}
%}.
"/ --- disabled due to UNLIMITEDSTACK -- self primitiveFailedOrClosedConnection.
@@ -6059,38 +6059,38 @@
aString isNil ifTrue:[^ false].
fields := aString asCollectionOfSubstringsSeparatedBy:$-.
fields size == 3 ifTrue:[
- "take care of old font names: family-style-size"
- family := fields at:1.
- style := fields at:2.
- size := Number readFromString:(fields at:3) onError:[^ false].
+ "take care of old font names: family-style-size"
+ family := fields at:1.
+ style := fields at:2.
+ size := Number readFromString:(fields at:3) onError:[^ false].
] ifFalse:[fields size == 2 ifTrue:[
- "take care of old font names: family-size"
- family := fields at:1.
- size := Number readFromString:(fields at:2) onError:[^ false].
+ "take care of old font names: family-size"
+ family := fields at:1.
+ size := Number readFromString:(fields at:2) onError:[^ false].
] ifFalse:[fields size >= 15 ifTrue:[
- family := fields at:3.
- face := fields at:4.
- style := fields at:5.
- style = 'o' ifTrue:[
- style := 'oblique'
- ] ifFalse:[style = 'i' ifTrue:[
- style := 'italic'
- ] ifFalse:[style = 'r' ifTrue:[
- style := 'roman'
- ]]].
- moreStyle := fields at:6.
- (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
- style := style, '-', moreStyle.
- ].
- fheight := fields at:8.
- size := (Number readFromString:(fields at:9) onError:[^ false]) / 10.
- resX := fields at:10.
- resY := fields at:11.
- registry := fields at:14.
- encoding := fields at:15.
- coding := registry , '-' , encoding.
+ family := fields at:3.
+ face := fields at:4.
+ style := fields at:5.
+ style = 'o' ifTrue:[
+ style := 'oblique'
+ ] ifFalse:[style = 'i' ifTrue:[
+ style := 'italic'
+ ] ifFalse:[style = 'r' ifTrue:[
+ style := 'roman'
+ ]]].
+ moreStyle := fields at:6.
+ (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
+ style := style, '-', moreStyle.
+ ].
+ fheight := fields at:8.
+ size := (Number readFromString:(fields at:9) onError:[^ false]) / 10.
+ resX := fields at:10.
+ resY := fields at:11.
+ registry := fields at:14.
+ encoding := fields at:15.
+ coding := registry , '-' , encoding.
] ifFalse:[
- ^ false
+ ^ false
]]].
aBlock value:family value:face value:style value:size value:coding.
^ true
@@ -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; i<available; i++) {
- __PROTECT__(arr);
- str = __MKSTRING(fonts[i]);
- __UNPROTECT__(arr);
- __ArrayInstPtr(arr)->a_element[i] = str; __STORE(arr, str);
- }
- }
- XFreeFontNames(fonts);
- RETURN (arr);
- }
+ if (__isStringLike(pattern)) {
+ for (;;) {
+ ENTER_XLIB();
+ fonts = XListFonts(myDpy, __stringVal(pattern), nnames, &available);
+ LEAVE_XLIB();
+ if (fonts == 0) RETURN(nil);
+ if (available < nnames) break;
+ XFreeFontNames(fonts);
+ nnames = available * 2;
+ }
+
+ /*
+ * now, that we know the number of font names,
+ * create the array ...
+ */
+ arr = __ARRAY_NEW_INT(available);
+ if (arr != nil) {
+ /*
+ * ... and fill it
+ */
+ for (i=0; i<available; i++) {
+ __PROTECT__(arr);
+ str = __MKSTRING(fonts[i]);
+ __UNPROTECT__(arr);
+ __ArrayInstPtr(arr)->a_element[i] = str; __STORE(arr, str);
+ }
+ }
+ XFreeFontNames(fonts);
+ RETURN (arr);
+ }
}
%}.
^ nil
@@ -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<l; i++) {
- cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
- cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
- }
- cp = (char *) cp2;
- }
-
- ENTER_XLIB();
- len = XTextWidth16(f, (XChar2b *)cp, l);
- LEAVE_XLIB();
-
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( __MKSMALLINT(len) );
- }
- }
- /* FOURBYTESTRINGS */
- if (__isLongs(aString)) {
- int i;
- XChar2b *cp2;
- int mustFree = 0;
-
- n = (__byteArraySize(aString) - nInstBytes) / 4;
- if (i2 < n) {
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2 = (XChar2b *)0;
- int mustFree = 0;
-
- cp += (i1 * 4);
- if (l > lMax) l = lMax;
-
- /*
- * For now: X does not support 32bit characters without the new 32Unicode extensions.
- * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
- */
- if (l <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(l * 2));
- mustFree = 1;
- }
- for (i=0; i<l; i++) {
- int codePoint;
-
- codePoint = ((unsigned int32 *)cp)[i];
- if (codePoint > 0xFFFF) {
- codePoint = 0xFFFF;
- }
- cp2[i].byte1 = codePoint & 0xFF;
- cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
- }
- cp = (char *) cp2;
-
- ENTER_XLIB();
- len = XTextWidth16(f, (XChar2b *)cp, l);
- LEAVE_XLIB();
-
-
- 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<l; i++) {
+ cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+ cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+ }
+ cp = (char *) cp2;
+ }
+
+ ENTER_XLIB();
+ len = XTextWidth16(f, (XChar2b *)cp, l);
+ LEAVE_XLIB();
+
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( __MKSMALLINT(len) );
+ }
+ }
+ /* FOURBYTESTRINGS */
+ if (__isLongs(aString)) {
+ int i;
+ XChar2b *cp2;
+ int mustFree = 0;
+
+ n = (__byteArraySize(aString) - nInstBytes) / 4;
+ if (i2 < n) {
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2 = (XChar2b *)0;
+ int mustFree = 0;
+
+ cp += (i1 * 4);
+ if (l > lMax) l = lMax;
+
+ /*
+ * For now: X does not support 32bit characters without the new 32Unicode extensions.
+ * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
+ */
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ int codePoint;
+
+ codePoint = ((unsigned int32 *)cp)[i];
+ if (codePoint > 0xFFFF) {
+ codePoint = 0xFFFF;
+ }
+ cp2[i].byte1 = codePoint & 0xFF;
+ cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
+ }
+ cp = (char *) cp2;
+
+ ENTER_XLIB();
+ len = XTextWidth16(f, (XChar2b *)cp, l);
+ LEAVE_XLIB();
+
+
+ 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; i<n; i++) {
- cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
- cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
- }
- cp = (char *) cp2;
- }
-
-
- ENTER_XLIB();
- len = XTextWidth16(f, (XChar2b *)cp, n);
- LEAVE_XLIB();
-
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( __MKSMALLINT(len) );
- }
- }
+ 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; i<n; i++) {
+ cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+ cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+ }
+ cp = (char *) cp2;
+ }
+
+
+ ENTER_XLIB();
+ len = XTextWidth16(f, (XChar2b *)cp, n);
+ LEAVE_XLIB();
+
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( __MKSMALLINT(len) );
+ }
+ }
}
#undef NLOCALBUFFER
fail: ;
@@ -7133,31 +7133,31 @@
int _mode, ok = 1;
if (mode == @symbol(asyncPointer))
- _mode = AsyncPointer;
+ _mode = AsyncPointer;
else if (mode == @symbol(syncPointer))
- _mode = SyncPointer;
+ _mode = SyncPointer;
else if (mode == @symbol(asyncKeyboard))
- _mode = AsyncKeyboard;
+ _mode = AsyncKeyboard;
else if (mode == @symbol(syncKeyboard))
- _mode = SyncKeyboard;
+ _mode = SyncKeyboard;
else if (mode == @symbol(syncBoth))
- _mode = SyncBoth;
+ _mode = SyncBoth;
else if (mode == @symbol(asyncBoth))
- _mode = AsyncBoth;
+ _mode = AsyncBoth;
else if (mode == @symbol(replayPointer))
- _mode = ReplayPointer;
+ _mode = ReplayPointer;
else if (mode == @symbol(replayKeyboard))
- _mode = ReplayKeyboard;
+ _mode = ReplayKeyboard;
else
- ok = 0;
+ ok = 0;
if (ok
&& ISCONNECTED) {
- ENTER_XLIB();
- XAllowEvents(myDpy, _mode, CurrentTime);
- LEAVE_XLIB();
-
- RETURN (self);
+ ENTER_XLIB();
+ XAllowEvents(myDpy, _mode, CurrentTime);
+ LEAVE_XLIB();
+
+ RETURN (self);
}
%}.
self primitiveFailedOrClosedConnection
@@ -7171,52 +7171,52 @@
int result, ok;
if (ISCONNECTED) {
- if (__isExternalAddress(aWindowId)) {
-
- ENTER_XLIB();
- result = XGrabKeyboard(myDpy,
- __WindowVal(aWindowId),
- True /* False */,
- GrabModeAsync,
- GrabModeAsync,
- CurrentTime);
- LEAVE_XLIB();
-
- ok = 0;
- switch(result) {
- case AlreadyGrabbed:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: AlreadyGrabbed\n");
- }
- break;
- case GrabNotViewable:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: GrabNotViewable\n");
- }
- break;
- case GrabInvalidTime:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: InvalidTime\n");
- }
- break;
- case GrabFrozen:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: Frozen\n");
- }
- break;
- default:
- ok = 1;
- break;
- }
- if (! ok) {
- ENTER_XLIB();
- XUngrabKeyboard(myDpy, CurrentTime);
- LEAVE_XLIB();
- RETURN (false);
- }
-
- RETURN ( true );
- }
+ if (__isExternalAddress(aWindowId)) {
+
+ ENTER_XLIB();
+ result = XGrabKeyboard(myDpy,
+ __WindowVal(aWindowId),
+ True /* False */,
+ GrabModeAsync,
+ GrabModeAsync,
+ CurrentTime);
+ LEAVE_XLIB();
+
+ ok = 0;
+ switch(result) {
+ case AlreadyGrabbed:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: AlreadyGrabbed\n");
+ }
+ break;
+ case GrabNotViewable:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: GrabNotViewable\n");
+ }
+ break;
+ case GrabInvalidTime:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: InvalidTime\n");
+ }
+ break;
+ case GrabFrozen:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: Frozen\n");
+ }
+ break;
+ default:
+ ok = 1;
+ break;
+ }
+ if (! ok) {
+ ENTER_XLIB();
+ XUngrabKeyboard(myDpy, CurrentTime);
+ LEAVE_XLIB();
+ RETURN (false);
+ }
+
+ RETURN ( true );
+ }
}
%}.
self primitiveFailedOrClosedConnection.
@@ -7235,88 +7235,88 @@
int pointer_mode, keyboard_mode;
if (ISCONNECTED) {
- if (__isExternalAddress(aWindowId)) {
- if (__isExternalAddress(confineId))
- confineWin = __WindowVal(confineId);
- else
- confineWin = (Window) None;
-
- if (__isExternalAddress(aCursorId))
- curs = __CursorVal(aCursorId);
- else
- curs = (Cursor) None;
-
- if (pMode == @symbol(sync))
- pointer_mode = GrabModeSync;
- else
- pointer_mode = GrabModeAsync;
-
- if (kMode == @symbol(sync))
- keyboard_mode = GrabModeSync;
- else
- keyboard_mode = GrabModeAsync;
-
- if (__isSmallInteger(eventMask))
- evMask = __intVal(eventMask);
- else
- evMask = ButtonPressMask | ButtonMotionMask | PointerMotionMask | ButtonReleaseMask;
+ if (__isExternalAddress(aWindowId)) {
+ if (__isExternalAddress(confineId))
+ confineWin = __WindowVal(confineId);
+ else
+ confineWin = (Window) None;
+
+ if (__isExternalAddress(aCursorId))
+ curs = __CursorVal(aCursorId);
+ else
+ curs = (Cursor) None;
+
+ if (pMode == @symbol(sync))
+ pointer_mode = GrabModeSync;
+ else
+ pointer_mode = GrabModeAsync;
+
+ if (kMode == @symbol(sync))
+ keyboard_mode = GrabModeSync;
+ else
+ keyboard_mode = GrabModeAsync;
+
+ if (__isSmallInteger(eventMask))
+ evMask = __intVal(eventMask);
+ else
+ evMask = ButtonPressMask | ButtonMotionMask | PointerMotionMask | ButtonReleaseMask;
/*
- ENTER_XLIB();
+ ENTER_XLIB();
*/
- result = XGrabPointer(myDpy,
- __WindowVal(aWindowId),
- False,
- evMask,
- pointer_mode, keyboard_mode,
- confineWin,
- curs,
- CurrentTime);
+ result = XGrabPointer(myDpy,
+ __WindowVal(aWindowId),
+ False,
+ evMask,
+ pointer_mode, keyboard_mode,
+ confineWin,
+ curs,
+ CurrentTime);
/*
- LEAVE_XLIB();
+ LEAVE_XLIB();
*/
- ok = 0;
- switch (result) {
- case AlreadyGrabbed:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab pointer: AlreadyGrabbed\n");
- }
- break;
- case GrabNotViewable:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab pointer: GrabNotViewable\n");
- }
- break;
- case GrabInvalidTime:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab pointer: InvalidTime\n");
- }
- break;
- case GrabFrozen:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab pointer: Frozen\n");
- }
- break;
- default:
- ok = 1;
- break;
- }
-
- if (! ok) {
+ ok = 0;
+ switch (result) {
+ case AlreadyGrabbed:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab pointer: AlreadyGrabbed\n");
+ }
+ break;
+ case GrabNotViewable:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab pointer: GrabNotViewable\n");
+ }
+ break;
+ case GrabInvalidTime:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab pointer: InvalidTime\n");
+ }
+ break;
+ case GrabFrozen:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab pointer: Frozen\n");
+ }
+ break;
+ default:
+ ok = 1;
+ break;
+ }
+
+ if (! ok) {
/*
- ENTER_XLIB();
+ ENTER_XLIB();
*/
- XUngrabPointer(myDpy, CurrentTime);
+ XUngrabPointer(myDpy, CurrentTime);
/*
- LEAVE_XLIB();
+ LEAVE_XLIB();
*/
- RETURN (false);
- }
- RETURN ( true );
- }
+ RETURN (false);
+ }
+ RETURN ( true );
+ }
}
%}.
self primitiveFailedOrClosedConnection.
@@ -7327,12 +7327,12 @@
"grap the pointer - return true if ok"
^ self
- grabPointerIn:aWindowId
- withCursor:aCursorId
- eventMask:nil
- pointerMode:pMode
- keyboardMode:kMode
- confineTo:confineId
+ grabPointerIn:aWindowId
+ withCursor:aCursorId
+ eventMask:nil
+ pointerMode:pMode
+ keyboardMode:kMode
+ confineTo:confineId
"Modified: / 28.7.1998 / 02:47:51 / cg"
!
@@ -7344,12 +7344,12 @@
%{
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- ENTER_XLIB();
- XUngrabKeyboard(dpy, CurrentTime);
- XSync(dpy, 0);
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+ ENTER_XLIB();
+ XUngrabKeyboard(dpy, CurrentTime);
+ XSync(dpy, 0);
+ LEAVE_XLIB();
}
%}.
@@ -7362,12 +7362,12 @@
%{
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- ENTER_XLIB();
- XUngrabPointer(dpy, CurrentTime);
- XSync(dpy, 0);
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+ ENTER_XLIB();
+ XUngrabPointer(dpy, CurrentTime);
+ XSync(dpy, 0);
+ LEAVE_XLIB();
}
%}.
@@ -7377,8 +7377,8 @@
"release the keyboard"
activeKeyboardGrab notNil ifTrue:[
- activeKeyboardGrab := nil.
- self primUngrabKeyboard.
+ activeKeyboardGrab := nil.
+ self primUngrabKeyboard.
]
!
@@ -7386,8 +7386,8 @@
"release the pointer"
activePointerGrab notNil ifTrue:[
- activePointerGrab := nil.
- self primUngrabPointer.
+ activePointerGrab := nil.
+ self primUngrabPointer.
]
! !
@@ -7403,14 +7403,14 @@
GC gc;
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
- gcv.clip_mask = None;
- ENTER_XLIB();
- XChangeGC(myDpy, gc, GCClipMask, &gcv);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+ gcv.clip_mask = None;
+ ENTER_XLIB();
+ XChangeGC(myDpy, gc, GCClipMask, &gcv);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -7423,13 +7423,13 @@
%{
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)
- && __isSmallInteger(bgColorIndex)) {
- ENTER_XLIB();
- XSetBackground(myDpy, __GCVal(aGCId), __intVal(bgColorIndex));
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)
+ && __isSmallInteger(bgColorIndex)) {
+ ENTER_XLIB();
+ XSetBackground(myDpy, __GCVal(aGCId), __intVal(bgColorIndex));
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -7445,25 +7445,25 @@
Pixmap bitmap;
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- if (__isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
- if (__isExternalAddress(aBitmapId)) {
- bitmap = __PixmapVal(aBitmapId);
- ENTER_XLIB();
- XSetStipple(dpy, gc, bitmap);
- XSetFillStyle(dpy, gc, FillOpaqueStippled);
- LEAVE_XLIB();
- RETURN ( self );
- }
- if (aBitmapId == nil) {
- ENTER_XLIB();
- XSetFillStyle(dpy, gc, FillSolid);
- LEAVE_XLIB();
- RETURN ( self );
- }
- }
+ Display *dpy = myDpy;
+
+ if (__isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+ if (__isExternalAddress(aBitmapId)) {
+ bitmap = __PixmapVal(aBitmapId);
+ ENTER_XLIB();
+ XSetStipple(dpy, gc, bitmap);
+ XSetFillStyle(dpy, gc, FillOpaqueStippled);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ if (aBitmapId == nil) {
+ ENTER_XLIB();
+ XSetFillStyle(dpy, gc, FillSolid);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -7479,18 +7479,18 @@
GC gc;
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
- if (aBool == true)
- gcv.subwindow_mode = ClipByChildren;
- else
- gcv.subwindow_mode = IncludeInferiors;
-
- ENTER_XLIB();
- XChangeGC(myDpy, gc, GCSubwindowMode, &gcv);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+ if (aBool == true)
+ gcv.subwindow_mode = ClipByChildren;
+ else
+ gcv.subwindow_mode = IncludeInferiors;
+
+ ENTER_XLIB();
+ XChangeGC(myDpy, gc, GCSubwindowMode, &gcv);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -7505,18 +7505,18 @@
XRectangle r;
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)
- && __bothSmallInteger(clipX, clipY)
- && __bothSmallInteger(clipWidth, clipHeight)) {
- r.x = __intVal(clipX);
- r.y = __intVal(clipY);
- r.width = __intVal(clipWidth);
- r.height = __intVal(clipHeight);
- ENTER_XLIB();
- XSetClipRectangles(myDpy, __GCVal(aGCId), 0, 0, &r, 1, Unsorted);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)
+ && __bothSmallInteger(clipX, clipY)
+ && __bothSmallInteger(clipWidth, clipHeight)) {
+ r.x = __intVal(clipX);
+ r.y = __intVal(clipY);
+ r.width = __intVal(clipWidth);
+ r.height = __intVal(clipHeight);
+ ENTER_XLIB();
+ XSetClipRectangles(myDpy, __GCVal(aGCId), 0, 0, &r, 1, Unsorted);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -7529,17 +7529,17 @@
%{
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)
- && __isSmallInteger(offset)
- && __isByteArray(dashList)) {
- ENTER_XLIB();
- XSetDashes(myDpy, __GCVal(aGCId),
- __intVal(offset),
- __ByteArrayInstPtr(dashList)->ba_element,
- __byteArraySize(dashList));
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)
+ && __isSmallInteger(offset)
+ && __isByteArrayLike(dashList)) {
+ ENTER_XLIB();
+ XSetDashes(myDpy, __GCVal(aGCId),
+ __intVal(offset),
+ __ByteArrayInstPtr(dashList)->ba_element,
+ __byteArraySize(dashList));
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
bad: ;
%}.
@@ -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 @@
<context: #return>
%{
if (ISCONNECTED) {
- ENTER_XLIB();
- XSynchronize(myDpy, 0);
- LEAVE_XLIB();
+ ENTER_XLIB();
+ XSynchronize(myDpy, 0);
+ LEAVE_XLIB();
}
%}
"
@@ -8888,9 +8888,9 @@
<context: #return>
%{
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, "- <nitems:%d bytes_after:%d>\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, "- <nitems:%d bytes_after:%d>\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; i<numProps; i++) {
- OBJ atm;
-
- atm = __MKATOMOBJ(atomListPtr[i]);
- __ArrayInstPtr(atoms)->a_element[i] = atm; __STORE(atoms, atm);
- }
- XFree(atomListPtr);
- RETURN (atoms);
+ Display *dpy = myDpy;
+ int numProps = 0;
+
+ if (__isExternalAddress(windowID)) {
+ window = __WindowVal(windowID);
+ } else if (windowID == nil) {
+ window = DefaultRootWindow(dpy);
+ } else if (__isInteger(windowID)) {
+ window = (Window)__unsignedLongIntVal(windowID);
+ } else {
+ goto fail;
+ }
+
+ ENTER_XLIB();
+ atomListPtr = XListProperties(dpy, window, &numProps);
+ LEAVE_XLIB();
+
+ if (atomListPtr == NULL) {
+ RETURN (nil);
+ }
+
+ atoms = __ARRAY_NEW_INT(numProps);
+
+ if (atoms == nil) {
+ goto fail;
+ }
+
+ for (i=0; i<numProps; i++) {
+ OBJ atm;
+
+ atm = __MKATOMOBJ(atomListPtr[i]);
+ __ArrayInstPtr(atoms)->a_element[i] = atm; __STORE(atoms, atm);
+ }
+ XFree(atomListPtr);
+ RETURN (atoms);
}
fail: ;
%}.
@@ -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 @@
<context: #return>
%{
if (ISCONNECTED
- && (__isAtomID(propertyID) || propertyID == nil)
- && __isAtomID(targetID) && __isAtomID(selectionID)) {
- Display *dpy = myDpy;
- XEvent ev;
- Window requestor;
- Status result;
-
- if (__isExternalAddress(requestorID)) {
- requestor = __WindowVal(requestorID);
- } else if (__isSmallInteger(requestorID)) {
- requestor = (Window)__smallIntegerVal(requestorID);
- } else if (requestorID == nil) {
- requestor = DefaultRootWindow(dpy);
- } else {
- requestor = (Window)__unsignedLongIntVal(requestorID);
- }
-
- ev.xselection.type = SelectionNotify;
- ev.xselection.display = dpy;
- ev.xselection.selection = __AtomVal(selectionID);
- ev.xselection.target = __AtomVal(targetID);
- ev.xselection.requestor = requestor;
-
- if (__isExternalAddress(aTime)) {
- ev.xselection.time = (INT)(__externalAddressVal(aTime));
- } else if (__isSmallInteger(aTime)) {
- ev.xselection.time = __smallIntegerVal(aTime);
- } else if (aTime == nil) {
- ev.xselection.time = CurrentTime;
- } else {
- ev.xselection.time = (INT)__unsignedLongIntVal(aTime);
- }
+ && (__isAtomID(propertyID) || propertyID == nil)
+ && __isAtomID(targetID) && __isAtomID(selectionID)) {
+ Display *dpy = myDpy;
+ XEvent ev;
+ Window requestor;
+ Status result;
+
+ if (__isExternalAddress(requestorID)) {
+ requestor = __WindowVal(requestorID);
+ } else if (__isSmallInteger(requestorID)) {
+ requestor = (Window)__smallIntegerVal(requestorID);
+ } else if (requestorID == nil) {
+ requestor = DefaultRootWindow(dpy);
+ } else {
+ requestor = (Window)__unsignedLongIntVal(requestorID);
+ }
+
+ ev.xselection.type = SelectionNotify;
+ ev.xselection.display = dpy;
+ ev.xselection.selection = __AtomVal(selectionID);
+ ev.xselection.target = __AtomVal(targetID);
+ ev.xselection.requestor = requestor;
+
+ if (__isExternalAddress(aTime)) {
+ ev.xselection.time = (INT)(__externalAddressVal(aTime));
+ } else if (__isSmallInteger(aTime)) {
+ ev.xselection.time = __smallIntegerVal(aTime);
+ } else if (aTime == nil) {
+ ev.xselection.time = CurrentTime;
+ } else {
+ ev.xselection.time = (INT)__unsignedLongIntVal(aTime);
+ }
#if 0
- console_printf("ev.xselection.selection: %x\n", ev.xselection.selection);
- console_printf("ev.xselection.target: %x\n", ev.xselection.target);
- console_printf("ev.xselection.requestor: %x\n", ev.xselection.requestor);
- console_printf("ev.xselection.time: %x\n", ev.xselection.time);
- console_printf("requestor: %x\n", requestor);
-#endif
-
- /* send nil property if selection cannot be converted */
- if (propertyID == nil)
- ev.xselection.property = None;
- else
- ev.xselection.property = __AtomVal(propertyID);
-
-
- DPRINTF(("sending SelectionNotify sel=%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
<context: #return>
@@ -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!