--- a/XWorkstation.st Mon Nov 25 11:51:46 2013 +0100
+++ b/XWorkstation.st Mon Nov 25 12:00:04 2013 +0100
@@ -1,6 +1,6 @@
"
COPYRIGHT (c) 1989 by Claus Gittinger
- All Rights Reserved
+ All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
@@ -12,41 +12,41 @@
"{ Package: 'stx:libview' }"
DeviceWorkstation subclass:#XWorkstation
- instanceVariableNames:'hasShapeExtension hasShmExtension hasDPSExtension
- hasMbufExtension hasXVideoExtension hasSaveUnder hasPEXExtension
- hasImageExtension hasInputExtension hasXineramaExtension
- hasRenderExtension hasXftLibrary ignoreBackingStore blackpixel whitepixel atoms protocolsAtom
- deleteWindowAtom saveYourselfAtom quitAppAtom primaryAtom
- clipboardAtom stringAtom wmStateAtom motifWMHintsAtom
- listOfXFonts buttonsPressed eventRootX eventRootY displayName
- eventTrace dispatchingExpose rgbVisual rgbaVisual virtualRootId
- rootId altModifierMask metaModifierMask lastEventTime
- rawMonitorBounds monitorBounds lastButtonPressTime
- deviceIOTimeoutErrorSignal activateOnClick rawKeySymTranslation
- selectionOwner selectionTime selectionFetchers selectionHandlers
- preWaitAction xlibTimeout xlibTimeoutForWindowCreation
- hasConnectionBroken uniqueDeviceID stxDeviceAtom uuidAtom
- primaryBuffer windowGroupWindow maxOperationsUntilFlush
- operationsUntilFlush'
- classVariableNames:'RawKeySymTranslation ConservativeSync MaxStringLength
- DefaultXLibTimeout DefaultXLibTimeoutForWindowCreation'
- poolDictionaries:''
- category:'Interface-Graphics'
+ instanceVariableNames:'hasShapeExtension hasShmExtension hasDPSExtension
+ hasMbufExtension hasXVideoExtension hasSaveUnder hasPEXExtension
+ hasImageExtension hasInputExtension hasXineramaExtension
+ hasRenderExtension hasXftLibrary ignoreBackingStore blackpixel whitepixel atoms protocolsAtom
+ deleteWindowAtom saveYourselfAtom quitAppAtom primaryAtom
+ clipboardAtom stringAtom wmStateAtom motifWMHintsAtom
+ listOfXFonts buttonsPressed eventRootX eventRootY displayName
+ eventTrace dispatchingExpose rgbVisual rgbaVisual virtualRootId
+ rootId altModifierMask metaModifierMask lastEventTime
+ rawMonitorBounds monitorBounds lastButtonPressTime
+ deviceIOTimeoutErrorSignal activateOnClick rawKeySymTranslation
+ selectionOwner clipboardSelectionTime primarySelectionTime
+ selectionFetchers selectionHandlers preWaitAction xlibTimeout
+ xlibTimeoutForWindowCreation hasConnectionBroken uniqueDeviceID
+ stxDeviceAtom uuidAtom primaryBuffer windowGroupWindow
+ maxOperationsUntilFlush operationsUntilFlush'
+ classVariableNames:'RawKeySymTranslation ConservativeSync MaxStringLength
+ DefaultXLibTimeout DefaultXLibTimeoutForWindowCreation'
+ poolDictionaries:''
+ category:'Interface-Graphics'
!
Object subclass:#SelectionFetcher
- instanceVariableNames:'sema message display drawableID selectionID propertyID targetID
- buffer done incremental'
- classVariableNames:''
- poolDictionaries:''
- privateIn:XWorkstation
+ instanceVariableNames:'sema message display drawableID selectionID propertyID targetID
+ buffer done incremental'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:XWorkstation
!
SimpleView subclass:#WindowGroupWindow
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:XWorkstation
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:XWorkstation
!
!XWorkstation primitiveDefinitions!
@@ -244,16 +244,16 @@
*/
#define __ENTER_XLIB(whichTimeout) \
{ \
- __blockingPrimitiveTimoutHandler__ = (VOIDFUNC)__XTimeoutErrorHandler; \
- __blockingPrimitiveTimeoutArg__ = self; \
- __blockingPrimitiveTimeout__ = __intVal(__INST(whichTimeout)) * 1000; \
+ __blockingPrimitiveTimoutHandler__ = (VOIDFUNC)__XTimeoutErrorHandler; \
+ __blockingPrimitiveTimeoutArg__ = self; \
+ __blockingPrimitiveTimeout__ = __intVal(__INST(whichTimeout)) * 1000; \
} {
#define LEAVE_XLIB() \
{ \
- __blockingPrimitiveTimoutHandler__ = (VOIDFUNC)0; \
- __blockingPrimitiveTimeoutArg__ = nil; \
- __blockingPrimitiveTimeout__ = 0; \
+ __blockingPrimitiveTimoutHandler__ = (VOIDFUNC)0; \
+ __blockingPrimitiveTimeoutArg__ = nil; \
+ __blockingPrimitiveTimeout__ = 0; \
} }
#define ENTER_XLIB() __ENTER_XLIB(xlibTimeout)
@@ -347,18 +347,18 @@
# endif
static
dummyToForceLoading() {
- XCreateSimpleWindow(0, 0, 0, 0, 0, 0, 0, 0, 0);
- XCloseDisplay(0);
- XCreateImage(0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0);
- XSetWindowColormap(0, 0, 0);
- XQueryColors(0,0,0,0);
+ XCreateSimpleWindow(0, 0, 0, 0, 0, 0, 0, 0, 0);
+ XCloseDisplay(0);
+ XCreateImage(0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0);
+ XSetWindowColormap(0, 0, 0);
+ XQueryColors(0,0,0,0);
# ifdef SHM
- XShmAttach(0, 0);
- XShmCreateImage(0, 0, 0, 0, 0, 0, 0 ,0);
- XShmDetach(0, 0);
- XShmPutImage(0, 0, 0, 0 , 0,0,0,0,0,0,0);
- shmctl(0,0,0);
- fgetc(0);
+ XShmAttach(0, 0);
+ XShmCreateImage(0, 0, 0, 0, 0, 0, 0 ,0);
+ XShmDetach(0, 0);
+ XShmPutImage(0, 0, 0, 0 , 0,0,0,0,0,0,0);
+ shmctl(0,0,0);
+ fgetc(0);
# endif
}
#endif
@@ -383,26 +383,26 @@
lastErrorMsg[127] = '\0';
if (lastErrorMsg[0] == '\0') {
- sprintf(lastErrorMsg, "code: %d", event->error_code);
+ sprintf(lastErrorMsg, "code: %d", event->error_code);
}
lastRequestCode = event->request_code;
lastMinorCode = event->minor_code;
lastResource = event->resourceid;
if ((event->error_code == BadWindow) && (lastRequestCode == 4) && (lastMinorCode == 0)) {
- /*
- * this is a BadWindow error for X_DestroyWindow.
- * ignore it here, since it results from the GC freeing windows
- * in non bottom-up window order.
- */
- return 0;
+ /*
+ * this is a BadWindow error for X_DestroyWindow.
+ * ignore it here, since it results from the GC freeing windows
+ * in non bottom-up window order.
+ */
+ return 0;
}
if (@global(DeviceWorkstation:ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [error]: x-error caught maj=%d (0x%x) min=%d (0x%x) resource=%"_lx_"\n",
- event->request_code, event->request_code,
- event->minor_code, event->minor_code, (INT)(event->resourceid));
- console_fprintf(stderr, "XWorkstation [error]: x-error message is [%d] '%s'\n",
- event->error_code, lastErrorMsg);
+ console_fprintf(stderr, "XWorkstation [error]: x-error caught maj=%d (0x%x) min=%d (0x%x) resource=%"_lx_"\n",
+ event->request_code, event->request_code,
+ event->minor_code, event->minor_code, (INT)(event->resourceid));
+ console_fprintf(stderr, "XWorkstation [error]: x-error message is [%d] '%s'\n",
+ event->error_code, lastErrorMsg);
}
__errorInterruptWithIDAndParameter__(@symbol(DisplayError), __MKEXTERNALADDRESS(dpy));
@@ -422,10 +422,10 @@
Display *dpy;
{
if (@global(DeviceWorkstation:ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [error]: I/O error\n");
+ console_fprintf(stderr, "XWorkstation [error]: I/O error\n");
}
__immediateErrorInterruptWithIDAndParameter__(@symbol(DisplayIOError),
- __MKEXTERNALADDRESS(dpy));
+ __MKEXTERNALADDRESS(dpy));
#if 0
/*
@@ -457,12 +457,12 @@
OBJ displayDeviceInst;
{
if ((displayDeviceInst == @global(MainDisplay))
- || (displayDeviceInst == @global(DeviceWorkstation:DefaultScreen))) {
- console_fprintf(stderr, "XWorkstation [error]: keep display connection for master display after X11 timeout (no shutdown)\n");
- return;
+ || (displayDeviceInst == @global(DeviceWorkstation:DefaultScreen))) {
+ console_fprintf(stderr, "XWorkstation [error]: keep display connection for master display after X11 timeout (no shutdown)\n");
+ return;
}
if (@global(DeviceWorkstation:ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [error]: X11 request timeout dpy=%"_lx_"\n", (INT)displayDeviceInst);
+ console_fprintf(stderr, "XWorkstation [error]: X11 request timeout dpy=%"_lx_"\n", (INT)displayDeviceInst);
}
__OINST(displayDeviceInst, hasConnectionBroken) = true;
@@ -474,14 +474,14 @@
* if we return from the error interrupt ...
*/
if (__OINST(displayDeviceInst, displayId) != nil) {
- __internalError("unhandled X11 display timeout error");
-
- /*
- * the current process failed to do an X11 request.
- * Terminate it!
- */
- __terminateProcess(0); /* soft terminate */
- __terminateProcess(1); /* hard terminate */
+ __internalError("unhandled X11 display timeout error");
+
+ /*
+ * the current process failed to do an X11 request.
+ * Terminate it!
+ */
+ __terminateProcess(0); /* soft terminate */
+ __terminateProcess(1); /* hard terminate */
}
}
@@ -493,7 +493,7 @@
copyright
"
COPYRIGHT (c) 1989 by Claus Gittinger
- All Rights Reserved
+ All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
@@ -519,21 +519,21 @@
query is answered by the launcher when opening its applications.
Timeouts:
- sometimes, X-connections are lost and, as the Xlib is blocking and synchronous by
- default, this would lead to a locked ST/X system.
- Therefore, this class defines a timeOut, whenever doing an Xlib call.
- The default for this timeout is 30seconds.
- This may be a problem with windowmanagers which show a rubber-band rectangle
- when creating windows.
- If the user does not specify the rectangle within 30 seconds, the device assumes
- a timeout and closes the connection.
- As a (kludgy) workaround, a second timeout value is used for window-creation.
- This secondary timeout value defaults to 60*5 seconds (5 minutes).
+ sometimes, X-connections are lost and, as the Xlib is blocking and synchronous by
+ default, this would lead to a locked ST/X system.
+ Therefore, this class defines a timeOut, whenever doing an Xlib call.
+ The default for this timeout is 30seconds.
+ This may be a problem with windowmanagers which show a rubber-band rectangle
+ when creating windows.
+ If the user does not specify the rectangle within 30 seconds, the device assumes
+ a timeout and closes the connection.
+ As a (kludgy) workaround, a second timeout value is used for window-creation.
+ This secondary timeout value defaults to 60*5 seconds (5 minutes).
See more documentation in my superclass, DeviceWorkstation.
[author:]
- Claus Gittinger
+ Claus Gittinger
"
! !
@@ -551,18 +551,18 @@
DefaultXLibTimeoutForWindowCreation := 5*60.
RawKeySymTranslation isNil ifTrue:[
- "/ the following table maps X-keyevents to ST/X
- "/ device independend events.
- "/ It is NOT meant as a keyboardMap replacement.
-
- RawKeySymTranslation := Dictionary new:6.
- RawKeySymTranslation
- at:#'Delete_line' put:#DeleteLine;
- at:#'Delete_word' put:#DeleteWord;
- at:#Down put:#CursorDown;
- at:#Up put:#CursorUp;
- at:#Left put:#CursorLeft;
- at:#Right put:#CursorRight.
+ "/ the following table maps X-keyevents to ST/X
+ "/ device independend events.
+ "/ It is NOT meant as a keyboardMap replacement.
+
+ RawKeySymTranslation := Dictionary new:6.
+ RawKeySymTranslation
+ at:#'Delete_line' put:#DeleteLine;
+ at:#'Delete_word' put:#DeleteWord;
+ at:#Down put:#CursorDown;
+ at:#Up put:#CursorUp;
+ at:#Left put:#CursorLeft;
+ at:#Right put:#CursorRight.
]
"Modified: / 27.4.1999 / 17:21:30 / cg"
@@ -581,8 +581,8 @@
%{
#ifdef COUNT_RESOURCES
console_fprintf(stderr, "colors:%d bitmaps:%d views:%d gc:%d cursors:%d fonts:%d\n",
- __cnt_color, __cnt_bitmap,
- __cnt_view, __cnt_gc, __cnt_cursor, __cnt_font);
+ __cnt_color, __cnt_bitmap,
+ __cnt_view, __cnt_gc, __cnt_cursor, __cnt_font);
#endif
%}
@@ -624,13 +624,13 @@
match := 'XRequest.' , self requestCodeOfLastError printString.
s := '/usr/lib/X11/XErrorDB' asFilename readStreamOrNil.
s notNil ifTrue:[
- line := s peekForLineStartingWith:match.
- s close.
+ line := s peekForLineStartingWith:match.
+ s close.
].
line isNil ifTrue:[
- string := string, ' in ', match
+ string := string, ' in ', match
] ifFalse:[
- string := string , ' in ' , (line copyFrom:(line indexOf:$:)+1)
+ string := string , ' in ' , (line copyFrom:(line indexOf:$:)+1)
].
^ string
!
@@ -653,7 +653,7 @@
%{ /* NOCONTEXT */
if (lastResource != 0) {
- RETURN ( __MKEXTERNALADDRESS(lastResource) );
+ RETURN ( __MKEXTERNALADDRESS(lastResource) );
}
%}.
@@ -661,7 +661,7 @@
"
- Screen resourceIdOfLastError
+ Screen resourceIdOfLastError
"
!
@@ -729,7 +729,7 @@
prev := activateOnClick ? false.
aBoolean notNil ifTrue:[
- activateOnClick := aBoolean.
+ activateOnClick := aBoolean.
].
^ prev
@@ -792,13 +792,13 @@
%{ /* NOCONTEXT */
if (aButton == __MKSMALLINT(1)) {
- RETURN (__MKSMALLINT(Button1MotionMask));
+ RETURN (__MKSMALLINT(Button1MotionMask));
}
if (aButton == __MKSMALLINT(2)) {
- RETURN (__MKSMALLINT(Button2MotionMask));
+ RETURN (__MKSMALLINT(Button2MotionMask));
}
if (aButton == __MKSMALLINT(3)) {
- RETURN (__MKSMALLINT(Button3MotionMask));
+ RETURN (__MKSMALLINT(Button3MotionMask));
}
%}.
^ nil
@@ -819,7 +819,7 @@
%{ /* NOCONTEXT */
#ifndef WIN32
if (ISCONNECTED) {
- RETURN ( __MKSMALLINT(ConnectionNumber(myDpy)) );
+ RETURN ( __MKSMALLINT(ConnectionNumber(myDpy)) );
}
#endif
RETURN (nil);
@@ -846,7 +846,7 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- RETURN ( __MKSMALLINT(XProtocolVersion(myDpy)) );
+ RETURN ( __MKSMALLINT(XProtocolVersion(myDpy)) );
}
RETURN (nil);
%}
@@ -862,7 +862,7 @@
(to avoid bugs in certain implementations)"
%{
if (ISCONNECTED) {
- RETURN ( __MKSTRING(XServerVendor(myDpy)) );
+ RETURN ( __MKSTRING(XServerVendor(myDpy)) );
}
RETURN (nil);
%}
@@ -903,28 +903,28 @@
&& __isExternalAddress(windowId1)
&& __isExternalAddress(windowId2)
&& __bothSmallInteger(x1, y1)) {
- Display *dpy = myDpy;
- Window rootWin;
-
- w1 = __WindowVal(windowId1);
- w2 = __WindowVal(windowId2);
-
- rootWin = RootWindow(dpy, screen);
- if (w1 == rootWin) {
- w1 = (Window)__externalAddressVal(rootWindowId);
- }
- if (w2 == rootWin) {
- w2 = (Window)__externalAddressVal(rootWindowId);
- }
-
- ENTER_XLIB();
- XTranslateCoordinates(dpy, w1, w2,
- __intVal(x1), __intVal(y1),
- &xpos, &ypos, &child_ret);
- LEAVE_XLIB();
-
- x2 = __MKSMALLINT(xpos);
- y2 = __MKSMALLINT(ypos);
+ Display *dpy = myDpy;
+ Window rootWin;
+
+ w1 = __WindowVal(windowId1);
+ w2 = __WindowVal(windowId2);
+
+ rootWin = RootWindow(dpy, screen);
+ if (w1 == rootWin) {
+ w1 = (Window)__externalAddressVal(rootWindowId);
+ }
+ if (w2 == rootWin) {
+ w2 = (Window)__externalAddressVal(rootWindowId);
+ }
+
+ ENTER_XLIB();
+ XTranslateCoordinates(dpy, w1, w2,
+ __intVal(x1), __intVal(y1),
+ &xpos, &ypos, &child_ret);
+ LEAVE_XLIB();
+
+ x2 = __MKSMALLINT(xpos);
+ y2 = __MKSMALLINT(ypos);
}
%}.
@@ -938,7 +938,7 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- RETURN ( __MKSMALLINT(XVendorRelease(myDpy)) );
+ RETURN ( __MKSMALLINT(XVendorRelease(myDpy)) );
}
RETURN (nil);
%}
@@ -965,31 +965,31 @@
if (ISCONNECTED
&& __isExternalAddress(windowId)
&& __isPoint(aPoint)) {
- Display *dpy = myDpy;
-
- xp = _point_X(aPoint);
- yp = _point_Y(aPoint);
- if (__bothSmallInteger(xp, yp)) {
-
- ENTER_XLIB();
- XTranslateCoordinates(dpy,
- RootWindow(dpy, screen),
- __WindowVal(windowId),
- __intVal(xp), __intVal(yp),
- &xpos, &ypos, &child_ret);
- LEAVE_XLIB();
-
- if (child_ret) {
- RETURN ( __MKEXTERNALADDRESS(child_ret) );
- }
- RETURN ( nil );
- }
+ Display *dpy = myDpy;
+
+ xp = _point_X(aPoint);
+ yp = _point_Y(aPoint);
+ if (__bothSmallInteger(xp, yp)) {
+
+ ENTER_XLIB();
+ XTranslateCoordinates(dpy,
+ RootWindow(dpy, screen),
+ __WindowVal(windowId),
+ __intVal(xp), __intVal(yp),
+ &xpos, &ypos, &child_ret);
+ LEAVE_XLIB();
+
+ if (child_ret) {
+ RETURN ( __MKEXTERNALADDRESS(child_ret) );
+ }
+ RETURN ( nil );
+ }
}
%}.
windowId notNil ifTrue:[
- aPoint isPoint ifTrue:[
- ^ self viewIdFromPoint:aPoint asPoint truncated in:windowId
- ]
+ aPoint isPoint ifTrue:[
+ ^ self viewIdFromPoint:aPoint asPoint truncated in:windowId
+ ]
].
^ nil
@@ -1009,21 +1009,21 @@
if (ISCONNECTED
&& (__INST(rootId) != __INST(virtualRootId))
&& __isExternalAddress(__INST(virtualRootId))) {
- Window vRootWin;
- Window root;
- int x, y;
- unsigned int width, height;
- unsigned int dummy;
- int ret;
-
- vRootWin = __WindowVal(__INST(virtualRootId));
- ENTER_XLIB();
- ret = XGetGeometry(myDpy, vRootWin, &root, &x, &y, &width, &height,
- &dummy, &dummy);
- LEAVE_XLIB();
- if (ret) {
- RETURN ( __MKPOINT_INT(width, height) );
- }
+ Window vRootWin;
+ Window root;
+ int x, y;
+ unsigned int width, height;
+ unsigned int dummy;
+ int ret;
+
+ vRootWin = __WindowVal(__INST(virtualRootId));
+ ENTER_XLIB();
+ ret = XGetGeometry(myDpy, vRootWin, &root, &x, &y, &width, &height,
+ &dummy, &dummy);
+ LEAVE_XLIB();
+ if (ret) {
+ RETURN ( __MKPOINT_INT(width, height) );
+ }
}
%}.
^ width @ height
@@ -1066,9 +1066,9 @@
This method must be redefined for displays which need it (i.e. X11 on osx)"
OperatingSystem getOSType == #osx ifTrue:[
- "/ should check for local display here - sigh, osx's Xserver does not give
- "/ us a hint through the server vendor...
- ^ 16@16
+ "/ should check for local display here - sigh, osx's Xserver does not give
+ "/ us a hint through the server vendor...
+ ^ 16@16
].
^ 0@0
!
@@ -1098,11 +1098,11 @@
if (ISCONNECTED
&& __isStringLike(extensionString)) {
- ENTER_XLIB();
- if (XQueryExtension(myDpy, __stringVal(extensionString), &dummy, &dummy, &dummy)) {
- rslt = true;
- }
- LEAVE_XLIB();
+ ENTER_XLIB();
+ if (XQueryExtension(myDpy, __stringVal(extensionString), &dummy, &dummy, &dummy)) {
+ rslt = true;
+ }
+ LEAVE_XLIB();
}
RETURN (rslt);
%}
@@ -1205,44 +1205,44 @@
int cnt;
if (ISCONNECTED) {
- Display *dpy = myDpy;
- int status;
-
- ENTER_XLIB();
- status = XGetIconSizes(dpy, RootWindow(dpy, screen), &sizeList, &cnt);
- LEAVE_XLIB();
- if (status > 0) {
- xIconSizes = __MKEXTERNALBYTES(sizeList);
- count = __MKSMALLINT(cnt);
- }
+ Display *dpy = myDpy;
+ int status;
+
+ ENTER_XLIB();
+ status = XGetIconSizes(dpy, RootWindow(dpy, screen), &sizeList, &cnt);
+ LEAVE_XLIB();
+ if (status > 0) {
+ xIconSizes = __MKEXTERNALBYTES(sizeList);
+ count = __MKSMALLINT(cnt);
+ }
}
%}.
xIconSizes isNil ifTrue:[^ nil].
ret := OrderedCollection new:count.
1 to:count do:[ :i |
- |minWidth minHeight maxWidth maxHeight widthStep heightStep d|
-
-%{
- XIconSize *slp;
-
- slp = &((XIconSize *)__externalAddressVal(xIconSizes))[__intVal(i)-1];
- minWidth = __MKSMALLINT(slp->min_width);
- minHeight = __MKSMALLINT(slp->min_height);
- maxWidth = __MKSMALLINT(slp->max_width);
- maxHeight = __MKSMALLINT(slp->max_height);
- widthStep = __MKSMALLINT(slp->width_inc);
- heightStep = __MKSMALLINT(slp->height_inc);
-%}.
- d := IdentityDictionary new.
- d at:#minWidth put:minWidth.
- d at:#maxWidth put:maxWidth.
- d at:#widthStep put:widthStep.
- d at:#minHeight put:minHeight.
- d at:#maxHeight put:maxHeight.
- d at:#heightStep put:heightStep.
-
- ret add:d
+ |minWidth minHeight maxWidth maxHeight widthStep heightStep d|
+
+%{
+ XIconSize *slp;
+
+ slp = &((XIconSize *)__externalAddressVal(xIconSizes))[__intVal(i)-1];
+ minWidth = __MKSMALLINT(slp->min_width);
+ minHeight = __MKSMALLINT(slp->min_height);
+ maxWidth = __MKSMALLINT(slp->max_width);
+ maxHeight = __MKSMALLINT(slp->max_height);
+ widthStep = __MKSMALLINT(slp->width_inc);
+ heightStep = __MKSMALLINT(slp->height_inc);
+%}.
+ d := IdentityDictionary new.
+ d at:#minWidth put:minWidth.
+ d at:#maxWidth put:maxWidth.
+ d at:#widthStep put:widthStep.
+ d at:#minHeight put:minHeight.
+ d at:#maxHeight put:maxHeight.
+ d at:#heightStep put:heightStep.
+
+ ret add:d
].
xIconSizes free.
@@ -1270,52 +1270,52 @@
%{
#ifdef XINERAMA
if (ISCONNECTED && __INST(hasXineramaExtension) == true) {
- Display *dpy = myDpy;
- XineramaScreenInfo *screenInfo;
- int numDisplays;
- OBJ *cResultArray;
- int i, ci;
-
- screenInfo = XineramaQueryScreens (dpy, &numDisplays);
- if (screenInfo == 0) {
- goto out;
- }
-
- numberOfMonitors = __mkSmallInteger(numDisplays);
- resultArray = __ARRAY_NEW_INT(numDisplays * 5);
- cResultArray = __ArrayInstPtr(resultArray)->a_element;
-
- for (i=0, ci=0; i < numDisplays; i++, ci+=5) {
- cResultArray[ci] = __mkSmallInteger(screenInfo[i].screen_number);
- cResultArray[ci+1] = __mkSmallInteger(screenInfo[i].x_org);
- cResultArray[ci+2] = __mkSmallInteger(screenInfo[i].y_org);
- cResultArray[ci+3] = __mkSmallInteger(screenInfo[i].width);
- cResultArray[ci+4] = __mkSmallInteger(screenInfo[i].height);
- }
-
- XFree(screenInfo);
+ Display *dpy = myDpy;
+ XineramaScreenInfo *screenInfo;
+ int numDisplays;
+ OBJ *cResultArray;
+ int i, ci;
+
+ screenInfo = XineramaQueryScreens (dpy, &numDisplays);
+ if (screenInfo == 0) {
+ goto out;
+ }
+
+ numberOfMonitors = __mkSmallInteger(numDisplays);
+ resultArray = __ARRAY_NEW_INT(numDisplays * 5);
+ cResultArray = __ArrayInstPtr(resultArray)->a_element;
+
+ for (i=0, ci=0; i < numDisplays; i++, ci+=5) {
+ cResultArray[ci] = __mkSmallInteger(screenInfo[i].screen_number);
+ cResultArray[ci+1] = __mkSmallInteger(screenInfo[i].x_org);
+ cResultArray[ci+2] = __mkSmallInteger(screenInfo[i].y_org);
+ cResultArray[ci+3] = __mkSmallInteger(screenInfo[i].width);
+ cResultArray[ci+4] = __mkSmallInteger(screenInfo[i].height);
+ }
+
+ XFree(screenInfo);
}
#endif
out:;
%}.
numberOfMonitors isNil ifTrue:[
- "no xinerama - the display is the only monitor"
- ^ Array with:self bounds.
+ "no xinerama - the display is the only monitor"
+ ^ Array with:self bounds.
].
rawMonitorBounds = resultArray ifTrue:[
- ^ monitorBounds.
+ ^ monitorBounds.
].
bounds := Array new:numberOfMonitors.
1 to:numberOfMonitors do:[:idx|
- |rect baseIdx|
- baseIdx := (idx-1) * 5.
- rect := Rectangle
- left:(resultArray at:baseIdx+2)
- top:(resultArray at:baseIdx+3)
- width:(resultArray at:baseIdx+4)
- height:(resultArray at:baseIdx+5).
- bounds at:idx put:rect.
+ |rect baseIdx|
+ baseIdx := (idx-1) * 5.
+ rect := Rectangle
+ left:(resultArray at:baseIdx+2)
+ top:(resultArray at:baseIdx+3)
+ width:(resultArray at:baseIdx+4)
+ height:(resultArray at:baseIdx+5).
+ bounds at:idx put:rect.
].
rawMonitorBounds := resultArray.
@@ -1338,8 +1338,8 @@
bounds := self monitorBounds.
^ bounds
- detect:[:eachRectangle| eachRectangle containsPoint:aPoint]
- ifNone:[super monitorBoundsAt:aPoint].
+ detect:[:eachRectangle| eachRectangle containsPoint:aPoint]
+ ifNone:[super monitorBoundsAt:aPoint].
"
Screen current monitorBoundsAt:(0@0)
@@ -1354,7 +1354,7 @@
^ self monitorBounds size
"
- Display numberOfMonitors
+ Display numberOfMonitors
"
!
@@ -1385,7 +1385,7 @@
Redefined to return a special value on SGI servers."
self serverVendor = 'Silicon Graphics' ifTrue:[
- ^ 86@68
+ ^ 86@68
].
^ super preferredIconSize
@@ -1407,12 +1407,12 @@
minH := self usableHeight.
self monitorBounds do:[:eachBounds |
- minH := minH min: eachBounds height.
+ minH := minH min: eachBounds height.
].
^ minH
"
- Display smallestMonitorHeight
+ Display smallestMonitorHeight
"
!
@@ -1427,7 +1427,7 @@
Display *dpy;
if (! ISCONNECTED) {
- RETURN (nil);
+ RETURN (nil);
}
dpy = myDpy;
@@ -1439,30 +1439,30 @@
%}.
formatArray := Array new:nFormats.
1 to:nFormats do:[:index |
- |info bitsPerPixelInfo depthInfo paddingInfo i|
-
- i := index.
-%{
- ScreenFormat *format;
- Display *dpy = myDpy;
+ |info bitsPerPixelInfo depthInfo paddingInfo i|
+
+ i := index.
+%{
+ ScreenFormat *format;
+ Display *dpy = myDpy;
#ifdef NO_PRIVATE_DISPLAY_ACCESS
- depthInfo = __MKSMALLINT(1);
- bitsPerPixelInfo = __MKSMALLINT(1);
- paddingInfo = __MKSMALLINT(8);
+ depthInfo = __MKSMALLINT(1);
+ bitsPerPixelInfo = __MKSMALLINT(1);
+ paddingInfo = __MKSMALLINT(8);
#else
- format = DISPLAYACCESS(dpy)->pixmap_format;
- format += (__intVal(i)-1);
- bitsPerPixelInfo = __MKSMALLINT(format->bits_per_pixel);
- depthInfo = __MKSMALLINT(format->depth);
- paddingInfo = __MKSMALLINT(format->scanline_pad);
-#endif
-%}.
- info := IdentityDictionary new.
- info at:#depth put:depthInfo.
- info at:#bitsPerPixel put:bitsPerPixelInfo.
- info at:#padding put:paddingInfo.
- formatArray at:index put:info.
+ format = DISPLAYACCESS(dpy)->pixmap_format;
+ format += (__intVal(i)-1);
+ bitsPerPixelInfo = __MKSMALLINT(format->bits_per_pixel);
+ depthInfo = __MKSMALLINT(format->depth);
+ paddingInfo = __MKSMALLINT(format->scanline_pad);
+#endif
+%}.
+ info := IdentityDictionary new.
+ info at:#depth put:depthInfo.
+ info at:#bitsPerPixel put:bitsPerPixelInfo.
+ info at:#padding put:paddingInfo.
+ formatArray at:index put:info.
].
^ formatArray
@@ -1547,8 +1547,8 @@
h := (self monitorBoundsAt:aPoint) height.
OperatingSystem isOSXlike ifTrue:[
- "/ take away some space for the icon-panel at the bottom.
- ^ h - 50
+ "/ take away some space for the icon-panel at the bottom.
+ ^ h - 50
].
^ h
@@ -1571,7 +1571,7 @@
bitmapId := self primCreateBitmapFromArray:anArray width:w height:h.
bitmapId isNil ifTrue:[
- self primitiveFailedOrClosedConnection
+ self primitiveFailedOrClosedConnection
].
^ bitmapId
!
@@ -1586,35 +1586,35 @@
if (ISCONNECTED
&& __isStringLike(aString)) {
- Display *dpy = myDpy;
- char *filename;
- int status;
- Pixmap newBitmap;
- unsigned b_width, b_height;
- int b_x_hot, b_y_hot;
-
- filename = (char *) __stringVal(aString);
-
-
- ENTER_XLIB();
- status = XReadBitmapFile(dpy, RootWindow(dpy, screen),
- filename, &b_width, &b_height, &newBitmap,
- &b_x_hot, &b_y_hot);
- LEAVE_XLIB();
-
-
- if ((status == BitmapSuccess) && newBitmap) {
+ Display *dpy = myDpy;
+ char *filename;
+ int status;
+ Pixmap newBitmap;
+ unsigned b_width, b_height;
+ int b_x_hot, b_y_hot;
+
+ filename = (char *) __stringVal(aString);
+
+
+ ENTER_XLIB();
+ status = XReadBitmapFile(dpy, RootWindow(dpy, screen),
+ filename, &b_width, &b_height, &newBitmap,
+ &b_x_hot, &b_y_hot);
+ LEAVE_XLIB();
+
+
+ if ((status == BitmapSuccess) && newBitmap) {
#ifdef COUNT_RESOURCES
- __cnt_bitmap++;
-#endif
- w = __MKSMALLINT(b_width);
- h = __MKSMALLINT(b_height);
- id = __MKEXTERNALADDRESS(newBitmap);
- }
+ __cnt_bitmap++;
+#endif
+ w = __MKSMALLINT(b_width);
+ h = __MKSMALLINT(b_height);
+ id = __MKEXTERNALADDRESS(newBitmap);
+ }
}
%}.
id notNil ifTrue:[
- aForm setWidth:w height:h
+ aForm setWidth:w height:h
].
^ id
!
@@ -1630,19 +1630,19 @@
Pixmap newBitmap;
if (__bothSmallInteger(w, h) && ISCONNECTED) {
- Display *dpy = myDpy;
-
-
- ENTER_XLIB();
- newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
- __intVal(w), __intVal(h), 1);
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+
+ ENTER_XLIB();
+ newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
+ __intVal(w), __intVal(h), 1);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- if (newBitmap)
- __cnt_bitmap++;
-#endif
-
- RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
+ if (newBitmap)
+ __cnt_bitmap++;
+#endif
+
+ RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
}
%}.
self primitiveFailedOrClosedConnection.
@@ -1660,19 +1660,19 @@
Pixmap newBitmap;
if (__bothSmallInteger(w, h) && ISCONNECTED) {
- Display *dpy = myDpy;
-
-
- ENTER_XLIB();
- newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
- __intVal(w), __intVal(h), __intVal(d));
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+
+ ENTER_XLIB();
+ newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
+ __intVal(w), __intVal(h), __intVal(d));
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- if (newBitmap)
- __cnt_bitmap++;
-#endif
-
- RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
+ if (newBitmap)
+ __cnt_bitmap++;
+#endif
+
+ RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
}
%}.
self primitiveFailedOrClosedConnection.
@@ -1680,18 +1680,18 @@
!
createWindowFor:aView type:typeSymbol
- origin:origin
- extent:extent
- minExtent:minExt
- maxExtent:maxExt
- borderWidth:bWidth
- subViewOf:wsuperView
- style:wStyle
- inputOnly:winputOnly
- label:wlabel
- owner:wowner
- icon:wicon iconMask:wiconMask
- iconView:wiconView
+ origin:origin
+ extent:extent
+ minExtent:minExt
+ maxExtent:maxExt
+ borderWidth:bWidth
+ subViewOf:wsuperView
+ style:wStyle
+ inputOnly:winputOnly
+ label:wlabel
+ owner:wowner
+ icon:wicon iconMask:wiconMask
+ iconView:wiconView
<context: #return>
@@ -1702,50 +1702,50 @@
wiconId wiconMaskId wiconViewId windowGroupWindowId|
displayId isNil ifTrue:[
- self primitiveFailedOrClosedConnection.
- ^ nil
+ self primitiveFailedOrClosedConnection.
+ ^ nil
].
origin notNil ifTrue:[
- xpos := origin x.
- ypos := origin y.
+ xpos := origin x.
+ ypos := origin y.
] ifFalse:[
- xpos := ypos := 0.
+ xpos := ypos := 0.
].
extent notNil ifTrue:[
- wwidth := extent x.
- wheight := extent y.
+ wwidth := extent x.
+ wheight := extent y.
] ifFalse:[
- wwidth := wheight := 100.
+ wwidth := wheight := 100.
].
minExt notNil ifTrue:[
- minWidth := minExt x.
- minHeight := minExt y
+ minWidth := minExt x.
+ minHeight := minExt y
].
maxExt notNil ifTrue:[
- maxWidth := maxExt x.
- maxHeight := maxExt y
+ maxWidth := maxExt x.
+ maxHeight := maxExt y
].
wsuperView notNil ifTrue:[
- wsuperViewId := wsuperView id
+ wsuperViewId := wsuperView id
] ifFalse:[
- isTopWindow := true.
- aView class ~~ WindowGroupWindow ifTrue:[
- windowGroupWindow isNil ifTrue:[
- self getWindowGroupWindow.
- ].
- windowGroupWindowId := windowGroupWindow id.
- ].
- wicon notNil ifTrue:[
- wiconId := wicon id.
- wiconMask notNil ifTrue:[
- wiconMaskId := wiconMask id
- ]
- ].
- wiconView notNil ifTrue:[
- wiconViewId := wiconView id
- ].
+ isTopWindow := true.
+ aView class ~~ WindowGroupWindow ifTrue:[
+ windowGroupWindow isNil ifTrue:[
+ self getWindowGroupWindow.
+ ].
+ windowGroupWindowId := windowGroupWindow id.
+ ].
+ wicon notNil ifTrue:[
+ wiconId := wicon id.
+ wiconMask notNil ifTrue:[
+ wiconMaskId := wiconMask id
+ ]
+ ].
+ wiconView notNil ifTrue:[
+ wiconViewId := wiconView id
+ ].
].
weventMask := aView eventMask.
@@ -1779,122 +1779,122 @@
sizehints.y = 0;
if (__bothSmallInteger(wwidth, wheight)) {
- sizehints.flags |= PSize;
- sizehints.width = __intVal(wwidth);
- sizehints.height = __intVal(wheight);
+ sizehints.flags |= PSize;
+ sizehints.width = __intVal(wwidth);
+ sizehints.height = __intVal(wheight);
}
if (__bothSmallInteger(xpos, ypos)) {
- sizehints.flags |= PPosition;
- sizehints.x = __intVal(xpos);
- sizehints.y = __intVal(ypos);
+ sizehints.flags |= PPosition;
+ sizehints.x = __intVal(xpos);
+ sizehints.y = __intVal(ypos);
}
if (__bothSmallInteger(minWidth, minHeight)) {
- sizehints.flags |= PMinSize;
- sizehints.min_width = __intVal(minWidth);
- sizehints.min_height = __intVal(minHeight);
+ sizehints.flags |= PMinSize;
+ sizehints.min_width = __intVal(minWidth);
+ sizehints.min_height = __intVal(minHeight);
}
if (__bothSmallInteger(maxWidth, maxHeight)) {
- sizehints.flags |= PMaxSize;
- sizehints.max_width = __intVal(maxWidth);
- sizehints.max_height = __intVal(maxHeight);
+ sizehints.flags |= PMaxSize;
+ sizehints.max_width = __intVal(maxWidth);
+ sizehints.max_height = __intVal(maxHeight);
}
bg = WhitePixel(dpy, screen);
if (__isSmallInteger(bWidth)) {
- bw = __intVal(bWidth);
+ bw = __intVal(bWidth);
} else {
- bw = 0;
+ bw = 0;
}
bd = BlackPixel(dpy, screen);
if (__isExternalAddress(wsuperViewId)) {
- parentWindow = __WindowVal(wsuperViewId);
+ parentWindow = __WindowVal(wsuperViewId);
} else {
- parentWindow = RootWindow(dpy, screen);
+ parentWindow = RootWindow(dpy, screen);
}
if (wStyle == @symbol(popUp))
- xswa.override_redirect = 1;
+ xswa.override_redirect = 1;
else
- xswa.override_redirect = 0;
+ xswa.override_redirect = 0;
if (winputOnly == true)
- ioClass = InputOnly;
+ ioClass = InputOnly;
else
- ioClass = InputOutput;
+ ioClass = InputOutput;
if (__isSmallInteger(weventMask)) {
- xswa.event_mask = __intVal(weventMask);
+ xswa.event_mask = __intVal(weventMask);
} else {
- xswa.event_mask = 0;
+ xswa.event_mask = 0;
}
if (ioClass == InputOnly) {
- bw = 0;
- depth = 0;
- flags |= CWEventMask;
+ bw = 0;
+ depth = 0;
+ flags |= CWEventMask;
} else {
- depth = DefaultDepth(dpy,screen);
- flags |= CWEventMask | CWBorderPixel | CWOverrideRedirect;
-
- if (backPixmap != (Pixmap)0) {
- xswa.background_pixmap = backPixmap;
- flags |= CWBackPixmap;
- } else {
- xswa.background_pixel = bg;
- flags |= CWBackPixel;
- }
- xswa.border_pixel = bd;
+ depth = DefaultDepth(dpy,screen);
+ flags |= CWEventMask | CWBorderPixel | CWOverrideRedirect;
+
+ if (backPixmap != (Pixmap)0) {
+ xswa.background_pixmap = backPixmap;
+ flags |= CWBackPixmap;
+ } else {
+ xswa.background_pixel = bg;
+ flags |= CWBackPixel;
+ }
+ xswa.border_pixel = bd;
}
visual.visualid = CopyFromParent;
if (__isSmallInteger(preferredDepth)) {
- depth = __intVal(preferredDepth);
+ depth = __intVal(preferredDepth);
}
if (preferredVisual != nil) {
- XVisualInfo vi;
- int cls;
-
- if (preferredVisual == @symbol(StaticGray))
- cls = StaticGray;
- else if (preferredVisual == @symbol(GrayScale))
- cls = GrayScale;
- else if (preferredVisual == @symbol(StaticColor))
- cls = StaticColor;
- else if (preferredVisual == @symbol(PseudoColor))
- cls = PseudoColor;
- else if (preferredVisual == @symbol(TrueColor))
- cls = TrueColor;
- else if (preferredVisual == @symbol(DirectColor))
- cls = DirectColor;
- else
- cls = PseudoColor;
-
- ENTER_XLIB();
- if (XMatchVisualInfo(dpy, screen, depth, cls, &vi)) {
- visual.visualid = vi.visualid;
+ XVisualInfo vi;
+ int cls;
+
+ if (preferredVisual == @symbol(StaticGray))
+ cls = StaticGray;
+ else if (preferredVisual == @symbol(GrayScale))
+ cls = GrayScale;
+ else if (preferredVisual == @symbol(StaticColor))
+ cls = StaticColor;
+ else if (preferredVisual == @symbol(PseudoColor))
+ cls = PseudoColor;
+ else if (preferredVisual == @symbol(TrueColor))
+ cls = TrueColor;
+ else if (preferredVisual == @symbol(DirectColor))
+ cls = DirectColor;
+ else
+ cls = PseudoColor;
+
+ ENTER_XLIB();
+ if (XMatchVisualInfo(dpy, screen, depth, cls, &vi)) {
+ visual.visualid = vi.visualid;
/*
- console_fprintf(stderr, "visualId=%x\n", vi.visualid);
+ console_fprintf(stderr, "visualId=%x\n", vi.visualid);
*/
- }
- LEAVE_XLIB();
+ }
+ LEAVE_XLIB();
}
ENTER_XLIB2();
newWindow = XCreateWindow(dpy, parentWindow,
- sizehints.x, sizehints.y,
- sizehints.width, sizehints.height,
- bw, depth, ioClass, &visual,
- flags, &xswa);
+ sizehints.x, sizehints.y,
+ sizehints.width, sizehints.height,
+ bw, depth, ioClass, &visual,
+ flags, &xswa);
LEAVE_XLIB();
if (! newWindow) {
- RETURN ( nil );
+ RETURN ( nil );
}
#ifdef COUNT_RESOURCES
@@ -1906,168 +1906,168 @@
* (only makes sense for topWindows)
*/
if (isTopWindow == true) {
- XWMHints wmhints;
-
- wmhints.flags = 0;
-
- if (__isExternalAddress(wiconId)) {
- wmhints.icon_pixmap = __PixmapVal(wiconId);
- wmhints.flags = IconPixmapHint;
- if (__isExternalAddress(wiconMaskId)) {
- wmhints.icon_mask = __PixmapVal(wiconMaskId);
- wmhints.flags |= IconMaskHint;
- }
- }
-
- if (__isExternalAddress(windowGroupWindowId)) {
- wmhints.window_group = __WindowVal(windowGroupWindowId);
- wmhints.flags |= WindowGroupHint;
- }
-
- if (__isExternalAddress(wiconViewId)) {
- wmhints.flags |= IconWindowHint;
- wmhints.icon_window = __WindowVal(wiconViewId);
- };
+ XWMHints wmhints;
+
+ wmhints.flags = 0;
+
+ if (__isExternalAddress(wiconId)) {
+ wmhints.icon_pixmap = __PixmapVal(wiconId);
+ wmhints.flags = IconPixmapHint;
+ if (__isExternalAddress(wiconMaskId)) {
+ wmhints.icon_mask = __PixmapVal(wiconMaskId);
+ wmhints.flags |= IconMaskHint;
+ }
+ }
+
+ if (__isExternalAddress(windowGroupWindowId)) {
+ wmhints.window_group = __WindowVal(windowGroupWindowId);
+ wmhints.flags |= WindowGroupHint;
+ }
+
+ if (__isExternalAddress(wiconViewId)) {
+ wmhints.flags |= IconWindowHint;
+ wmhints.icon_window = __WindowVal(wiconViewId);
+ };
/*
- wmhints.flags |= InputHint;
- wmhints.input = True;
+ wmhints.flags |= InputHint;
+ wmhints.input = True;
*/
- ENTER_XLIB();
- XSetWMHints(dpy, newWindow, &wmhints);
- XSetWMNormalHints(dpy, newWindow, &sizehints);
- LEAVE_XLIB();
-
- /*
- * get atoms first (if not already known)
- */
- if (__INST(protocolsAtom) == nil) {
- ENTER_XLIB();
- WmProtocolsAtom = XInternAtom(dpy, "WM_PROTOCOLS", False);
- __INST(protocolsAtom) = __MKATOMOBJ(WmProtocolsAtom);
+ ENTER_XLIB();
+ XSetWMHints(dpy, newWindow, &wmhints);
+ XSetWMNormalHints(dpy, newWindow, &sizehints);
+ LEAVE_XLIB();
+
+ /*
+ * get atoms first (if not already known)
+ */
+ if (__INST(protocolsAtom) == nil) {
+ ENTER_XLIB();
+ WmProtocolsAtom = XInternAtom(dpy, "WM_PROTOCOLS", False);
+ __INST(protocolsAtom) = __MKATOMOBJ(WmProtocolsAtom);
#ifdef USE_SAVEYOURSELF_ATOM
- WmSaveYourselfAtom = XInternAtom(dpy, "WM_SAVE_YOURSELF", False);
- __INST(saveYourselfAtom) = __MKATOMOBJ(WmSaveYourselfAtom);
+ WmSaveYourselfAtom = XInternAtom(dpy, "WM_SAVE_YOURSELF", False);
+ __INST(saveYourselfAtom) = __MKATOMOBJ(WmSaveYourselfAtom);
#endif
#ifdef USE_QUIT_APP_ATOM
- WmQuitAppAtom = XInternAtom(dpy, "_WM_QUIT_APP", False);
- __INST(quitAppAtom) = __MKATOMOBJ(WmQuitAppAtom);
-#endif
- WmDeleteWindowAtom = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
- __INST(deleteWindowAtom) = __MKATOMOBJ(WmDeleteWindowAtom);
-
- UUIDAtom = XInternAtom(dpy, "UUID", False);
- __INST(uuidAtom) = __MKATOMOBJ(UUIDAtom);
- STXDeviceAtom = XInternAtom(dpy, "STX_DEVICE_ID", False);
- __INST(stxDeviceAtom) = __MKATOMOBJ(STXDeviceAtom);
-
- LEAVE_XLIB();
- } else {
+ WmQuitAppAtom = XInternAtom(dpy, "_WM_QUIT_APP", False);
+ __INST(quitAppAtom) = __MKATOMOBJ(WmQuitAppAtom);
+#endif
+ WmDeleteWindowAtom = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
+ __INST(deleteWindowAtom) = __MKATOMOBJ(WmDeleteWindowAtom);
+
+ UUIDAtom = XInternAtom(dpy, "UUID", False);
+ __INST(uuidAtom) = __MKATOMOBJ(UUIDAtom);
+ STXDeviceAtom = XInternAtom(dpy, "STX_DEVICE_ID", False);
+ __INST(stxDeviceAtom) = __MKATOMOBJ(STXDeviceAtom);
+
+ LEAVE_XLIB();
+ } else {
#ifdef USE_QUIT_APP_ATOM
- WmQuitAppAtom = __AtomVal(__INST(quitAppAtom));
+ WmQuitAppAtom = __AtomVal(__INST(quitAppAtom));
#else
- WmQuitAppAtom = 0;
-#endif
- WmProtocolsAtom = __AtomVal(__INST(protocolsAtom));
- WmDeleteWindowAtom = __AtomVal(__INST(deleteWindowAtom));
+ WmQuitAppAtom = 0;
+#endif
+ WmProtocolsAtom = __AtomVal(__INST(protocolsAtom));
+ WmDeleteWindowAtom = __AtomVal(__INST(deleteWindowAtom));
#ifdef USE_SAVEYOURSELF_ATOM
- WmSaveYourselfAtom = __AtomVal(__INST(saveYourselfAtom));
+ WmSaveYourselfAtom = __AtomVal(__INST(saveYourselfAtom));
#else
- WmSaveYourselfAtom = 0;
-#endif
- UUIDAtom = __AtomVal(__INST(uuidAtom));;
- STXDeviceAtom = __AtomVal(__INST(stxDeviceAtom));;
- }
-
- /*
- * tell window manager to not kill us but send an event instead
- */
- atoms[0] = WmDeleteWindowAtom; atomCount++;
+ WmSaveYourselfAtom = 0;
+#endif
+ UUIDAtom = __AtomVal(__INST(uuidAtom));;
+ STXDeviceAtom = __AtomVal(__INST(stxDeviceAtom));;
+ }
+
+ /*
+ * tell window manager to not kill us but send an event instead
+ */
+ atoms[0] = WmDeleteWindowAtom; atomCount++;
#ifdef USE_SAVEYOURSELF_ATOM
- atoms[atomCount] = WmSaveYourselfAtom; atomCount++;
+ atoms[atomCount] = WmSaveYourselfAtom; atomCount++;
#endif
#ifdef USE_QUIT_APP_ATOM
- atoms[atomCount] = WmQuitAppAtom; atomCount++;
-#endif
- ENTER_XLIB();
- XChangeProperty(dpy, newWindow, WmProtocolsAtom, XA_ATOM,
- 32, PropModeReplace, (unsigned char *)atoms, atomCount);
- LEAVE_XLIB();
-
- /*
- * an optional unique id (to mark stx-windows)
- */
- if (__isBytes(__INST(uniqueDeviceID))) {
- int numUUIDBytes = __byteArraySize(__INST(uniqueDeviceID));
- unsigned char uuidBytes[32];
-
- if (numUUIDBytes <= sizeof(uuidBytes)) {
- Atom uuidAtom;
-
- bcopy(__byteArrayVal(__INST(uniqueDeviceID)), uuidBytes, numUUIDBytes);
-
- ENTER_XLIB();
- XChangeProperty (dpy, newWindow, STXDeviceAtom, UUIDAtom, 8, PropModeReplace,
- uuidBytes, numUUIDBytes );
- LEAVE_XLIB();
- }
- }
+ atoms[atomCount] = WmQuitAppAtom; atomCount++;
+#endif
+ ENTER_XLIB();
+ XChangeProperty(dpy, newWindow, WmProtocolsAtom, XA_ATOM,
+ 32, PropModeReplace, (unsigned char *)atoms, atomCount);
+ LEAVE_XLIB();
+
+ /*
+ * an optional unique id (to mark stx-windows)
+ */
+ if (__isBytes(__INST(uniqueDeviceID))) {
+ int numUUIDBytes = __byteArraySize(__INST(uniqueDeviceID));
+ unsigned char uuidBytes[32];
+
+ if (numUUIDBytes <= sizeof(uuidBytes)) {
+ Atom uuidAtom;
+
+ bcopy(__byteArrayVal(__INST(uniqueDeviceID)), uuidBytes, numUUIDBytes);
+
+ ENTER_XLIB();
+ XChangeProperty (dpy, newWindow, STXDeviceAtom, UUIDAtom, 8, PropModeReplace,
+ uuidBytes, numUUIDBytes );
+ LEAVE_XLIB();
+ }
+ }
#ifdef SUPPORT_MOTIF_WM_HINTS
- /*
- * less decoration
- */
- if ((wStyle == @symbol(undecorated))
- || (wStyle == @symbol(dialog2))
- || (wStyle == @symbol(notitle))
- ) {
- if (__INST(motifWMHintsAtom) == nil) {
- ENTER_XLIB();
- MotifWMHintsAtom = XInternAtom(dpy, "_MOTIF_WM_HINTS", False);
- __INST(motifWMHintsAtom) = __MKATOMOBJ(MotifWMHintsAtom);
- LEAVE_XLIB();
- } else {
- MotifWMHintsAtom = __AtomVal(__INST(motifWMHintsAtom));
- }
-
- {
- struct hints {
- unsigned long flags;
- unsigned long functions;
- unsigned long decorations;
- long input_mode;
- unsigned long status;
- } mvm_hints;
-
- if (wStyle == @symbol(undecorated)) {
- mvm_hints.decorations = MWM_DECOR_NONE;
- }
- if (wStyle == @symbol(dialog2)) {
- mvm_hints.decorations = MWM_DECOR_BORDER
- | MWM_DECOR_RESIZEH
- | MWM_DECOR_TITLE
- /* | MWM_DECOR_MENU */
- /* | MWM_DECOR_MINIMIZE */
- /* | MWM_DECOR_MAXIMIZE */
- ;
- }
- if (wStyle == @symbol(notitle)) {
- mvm_hints.decorations = MWM_DECOR_BORDER
- /* | MWM_DECOR_RESIZEH */
- /* | MWM_DECOR_TITLE */
- /* | MWM_DECOR_MENU */
- /* | MWM_DECOR_MINIMIZE */
- /* | MWM_DECOR_MAXIMIZE */
- ;
- }
- mvm_hints.flags = MWM_HINTS_DECORATIONS;
- ENTER_XLIB();
- XChangeProperty (dpy, newWindow, MotifWMHintsAtom,
- MotifWMHintsAtom, 32, PropModeReplace,
- (unsigned char*)&mvm_hints, 5 );
- LEAVE_XLIB();
- }
- }
+ /*
+ * less decoration
+ */
+ if ((wStyle == @symbol(undecorated))
+ || (wStyle == @symbol(dialog2))
+ || (wStyle == @symbol(notitle))
+ ) {
+ if (__INST(motifWMHintsAtom) == nil) {
+ ENTER_XLIB();
+ MotifWMHintsAtom = XInternAtom(dpy, "_MOTIF_WM_HINTS", False);
+ __INST(motifWMHintsAtom) = __MKATOMOBJ(MotifWMHintsAtom);
+ LEAVE_XLIB();
+ } else {
+ MotifWMHintsAtom = __AtomVal(__INST(motifWMHintsAtom));
+ }
+
+ {
+ struct hints {
+ unsigned long flags;
+ unsigned long functions;
+ unsigned long decorations;
+ long input_mode;
+ unsigned long status;
+ } mvm_hints;
+
+ if (wStyle == @symbol(undecorated)) {
+ mvm_hints.decorations = MWM_DECOR_NONE;
+ }
+ if (wStyle == @symbol(dialog2)) {
+ mvm_hints.decorations = MWM_DECOR_BORDER
+ | MWM_DECOR_RESIZEH
+ | MWM_DECOR_TITLE
+ /* | MWM_DECOR_MENU */
+ /* | MWM_DECOR_MINIMIZE */
+ /* | MWM_DECOR_MAXIMIZE */
+ ;
+ }
+ if (wStyle == @symbol(notitle)) {
+ mvm_hints.decorations = MWM_DECOR_BORDER
+ /* | MWM_DECOR_RESIZEH */
+ /* | MWM_DECOR_TITLE */
+ /* | MWM_DECOR_MENU */
+ /* | MWM_DECOR_MINIMIZE */
+ /* | MWM_DECOR_MAXIMIZE */
+ ;
+ }
+ mvm_hints.flags = MWM_HINTS_DECORATIONS;
+ ENTER_XLIB();
+ XChangeProperty (dpy, newWindow, MotifWMHintsAtom,
+ MotifWMHintsAtom, 32, PropModeReplace,
+ (unsigned char*)&mvm_hints, 5 );
+ LEAVE_XLIB();
+ }
+ }
#endif /* SUPPORT_MOTIF_WM_HINTS */
}
@@ -2080,9 +2080,9 @@
(wsuperView isNil "this is a topwindow"
and:[wlabel notEmptyOrNil]) ifTrue:[
- self
- setIconName:wlabel in:windowId;
- setWindowName:wlabel in:windowId.
+ self
+ setIconName:wlabel in:windowId;
+ setWindowName:wlabel in:windowId.
].
self addKnownView:aView withId:windowId.
@@ -2099,25 +2099,25 @@
* ignore closed connection
*/
if (! ISCONNECTED) {
- RETURN ( self );
+ RETURN ( self );
}
if (__isExternalAddress(aGCId)) {
- GC gc = __GCVal(aGCId);
-
- if (gc) {
- __ExternalAddressInstPtr(aGCId)->e_address = NULL;
-
- ENTER_XLIB();
- XFreeGC(myDpy, gc);
- LEAVE_XLIB();
+ GC gc = __GCVal(aGCId);
+
+ if (gc) {
+ __ExternalAddressInstPtr(aGCId)->e_address = NULL;
+
+ ENTER_XLIB();
+ XFreeGC(myDpy, gc);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- __cnt_gc--;
-#endif
- } else {
- console_fprintf(stderr, "XWorkstation [warning]: trying to destroy GC twice\n");
- }
- RETURN ( self );
+ __cnt_gc--;
+#endif
+ } else {
+ console_fprintf(stderr, "XWorkstation [warning]: trying to destroy GC twice\n");
+ }
+ RETURN ( self );
}
%}.
self primitiveFailed
@@ -2131,23 +2131,23 @@
* ignore closed connection
*/
if (! ISCONNECTED) {
- RETURN ( self );
+ RETURN ( self );
}
if (__isExternalAddress(aDrawableId)) {
- Pixmap pix = __PixmapVal(aDrawableId);
-
- if (pix) {
-
- ENTER_XLIB();
- XFreePixmap(myDpy, pix);
- LEAVE_XLIB();
+ Pixmap pix = __PixmapVal(aDrawableId);
+
+ if (pix) {
+
+ ENTER_XLIB();
+ XFreePixmap(myDpy, pix);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- __cnt_bitmap--;
-#endif
-
- }
- RETURN ( self );
+ __cnt_bitmap--;
+#endif
+
+ }
+ RETURN ( self );
}
%}.
self primitiveFailed
@@ -2172,16 +2172,16 @@
&& __isExternalAddress(aGCId)
&& ISCONNECTED) {
- ENTER_XLIB();
- dps = XDPSCreateContext(myDpy, __DrawableVal(aDrawableId),
- __GCVal(aGCId),
- 0, height, 0, colormap, NULL, 0,
- XDPSDefaultTextBackstop,
- XDPSDefaultErrorProc,
- NULL);
- LEAVE_XLIB();
-
- RETURN ( dps ? __MKEXTERNALADDRESS(dps) : nil );
+ ENTER_XLIB();
+ dps = XDPSCreateContext(myDpy, __DrawableVal(aDrawableId),
+ __GCVal(aGCId),
+ 0, height, 0, colormap, NULL, 0,
+ XDPSDefaultTextBackstop,
+ XDPSDefaultErrorProc,
+ NULL);
+ LEAVE_XLIB();
+
+ RETURN ( dps ? __MKEXTERNALADDRESS(dps) : nil );
}
#endif
%}.
@@ -2198,16 +2198,16 @@
if (__isExternalAddress(aDrawableId) && ISCONNECTED) {
- ENTER_XLIB();
- gc = XCreateGC(myDpy, __DrawableVal(aDrawableId), 0L, (XGCValues *)0);
- LEAVE_XLIB();
+ ENTER_XLIB();
+ gc = XCreateGC(myDpy, __DrawableVal(aDrawableId), 0L, (XGCValues *)0);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- if (gc)
- __cnt_gc++;
-#endif
-
- RETURN ( gc ? __MKEXTERNALADDRESS(gc) : nil );
+ if (gc)
+ __cnt_gc++;
+#endif
+
+ RETURN ( gc ? __MKEXTERNALADDRESS(gc) : nil );
}
%}.
self primitiveFailedOrClosedConnection.
@@ -2244,86 +2244,86 @@
int bytesPerRow;
if (! ISCONNECTED) {
- RETURN (nil);
+ RETURN (nil);
}
dpy = myDpy;
if (firstCall) {
- for (index=0; index < 256; index++) {
- int t = 0;
-
- if (index & 128) t |= 1;
- if (index & 64) t |= 2;
- if (index & 32) t |= 4;
- if (index & 16) t |= 8;
- if (index & 8) t |= 16;
- if (index & 4) t |= 32;
- if (index & 2) t |= 64;
- if (index & 1) t |= 128;
-
- reverseBitTable[index] = t;
- }
- firstCall = 0;
+ for (index=0; index < 256; index++) {
+ int t = 0;
+
+ if (index & 128) t |= 1;
+ if (index & 64) t |= 2;
+ if (index & 32) t |= 4;
+ if (index & 16) t |= 8;
+ if (index & 8) t |= 16;
+ if (index & 4) t |= 32;
+ if (index & 2) t |= 64;
+ if (index & 1) t |= 128;
+
+ reverseBitTable[index] = t;
+ }
+ firstCall = 0;
}
if (__bothSmallInteger(w, h) && _isNonNilObject(anArray)) {
- newBitmap = (Pixmap)0;
- b_width = __intVal(w);
- b_height = __intVal(h);
- bytesPerRow = (b_width + 7) / 8;
- nBytes = b_height * bytesPerRow;
- if (nBytes < sizeof(fastBits)) {
- cp = b_bits = fastBits;
- allocatedBits = 0;
- } else {
- cp = b_bits = allocatedBits = (unsigned char *) malloc(nBytes);
- if (! cp) goto fail;
- }
-
- if (__isArrayLike(anArray)) {
- index = 1;
- op = &(__ArrayInstPtr(anArray)->a_element[index - 1]);
- for (row = b_height; row; row--) {
- for (col = bytesPerRow; col; col--) {
- num = *op++;
- if (__isSmallInteger(num)) {
- bits = __intVal(num);
- } else {
- bits = __longIntVal(num);
- if (bits == 0) {
- goto fail;
- }
- }
- *cp++ = reverseBitTable[bits & 0xFF];
- }
- }
- } else {
- if (__isByteArrayLike(anArray)) {
- pBits = __ByteArrayInstPtr(anArray)->ba_element;
- for (col = b_height*bytesPerRow; col; col--) {
- *cp++ = reverseBitTable[*pBits++];
- }
- } else {
- goto fail;
- }
- }
-
-
- ENTER_XLIB();
- newBitmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen),
- (char *)b_bits,
- b_width, b_height);
- LEAVE_XLIB();
+ newBitmap = (Pixmap)0;
+ b_width = __intVal(w);
+ b_height = __intVal(h);
+ bytesPerRow = (b_width + 7) / 8;
+ nBytes = b_height * bytesPerRow;
+ if (nBytes < sizeof(fastBits)) {
+ cp = b_bits = fastBits;
+ allocatedBits = 0;
+ } else {
+ cp = b_bits = allocatedBits = (unsigned char *) malloc(nBytes);
+ if (! cp) goto fail;
+ }
+
+ if (__isArrayLike(anArray)) {
+ index = 1;
+ op = &(__ArrayInstPtr(anArray)->a_element[index - 1]);
+ for (row = b_height; row; row--) {
+ for (col = bytesPerRow; col; col--) {
+ num = *op++;
+ if (__isSmallInteger(num)) {
+ bits = __intVal(num);
+ } else {
+ bits = __longIntVal(num);
+ if (bits == 0) {
+ goto fail;
+ }
+ }
+ *cp++ = reverseBitTable[bits & 0xFF];
+ }
+ }
+ } else {
+ if (__isByteArrayLike(anArray)) {
+ pBits = __ByteArrayInstPtr(anArray)->ba_element;
+ for (col = b_height*bytesPerRow; col; col--) {
+ *cp++ = reverseBitTable[*pBits++];
+ }
+ } else {
+ goto fail;
+ }
+ }
+
+
+ ENTER_XLIB();
+ newBitmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen),
+ (char *)b_bits,
+ b_width, b_height);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- if (newBitmap)
- __cnt_bitmap++;
+ if (newBitmap)
+ __cnt_bitmap++;
#endif
fail: ;
- if (allocatedBits)
- free(allocatedBits);
- RETURN ( newBitmap ? __MKEXTERNALADDRESS(newBitmap) : nil );
+ if (allocatedBits)
+ free(allocatedBits);
+ RETURN ( newBitmap ? __MKEXTERNALADDRESS(newBitmap) : nil );
}
%}.
^ nil
@@ -2340,22 +2340,22 @@
<context: #return>
%{
if (! ISCONNECTED) {
- RETURN ( self );
+ RETURN ( self );
}
if (__isExternalAddress(aWindowId)) {
- Window win = __WindowVal(aWindowId);
-
- if (win) {
-
- ENTER_XLIB();
- XDestroyWindow(myDpy, win);
- LEAVE_XLIB();
+ Window win = __WindowVal(aWindowId);
+
+ if (win) {
+
+ ENTER_XLIB();
+ XDestroyWindow(myDpy, win);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- __cnt_view--;
-#endif
-
- }
+ __cnt_view--;
+#endif
+
+ }
}
%}
! !
@@ -2394,14 +2394,14 @@
s := aString ? ''.
s isString ifFalse:[
- s := s asStringWithCRsFrom:1 to:(s size) compressTabs:false withCR:false
+ s := s asStringWithCRsFrom:1 to:(s size) compressTabs:false withCR:false
].
viewID := aView id.
viewID notNil ifTrue:[ "/ if the view is not already closed
- "/ for now - should add support to pass emphasis information too
- s := s string.
- self setPrimaryText:s owner:viewID.
+ "/ for now - should add support to pass emphasis information too
+ s := s string.
+ self setPrimaryText:s owner:viewID.
]
"Created: / 27-03-2012 / 14:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2422,20 +2422,20 @@
Status ok;
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
-
- ENTER_XLIB();
- ok = XAllocColorCells(dpy, DefaultColormap(dpy, screen), (Bool)0,
- &dummy, 0, &color.pixel, 1);
- LEAVE_XLIB();
-
- if (ok) {
+ Display *dpy = myDpy;
+
+
+ ENTER_XLIB();
+ ok = XAllocColorCells(dpy, DefaultColormap(dpy, screen), (Bool)0,
+ &dummy, 0, &color.pixel, 1);
+ LEAVE_XLIB();
+
+ if (ok) {
#ifdef COUNT_RESOURCES
- __cnt_color++;
-#endif
- RETURN ( __MKSMALLINT(color.pixel) );
- }
+ __cnt_color++;
+#endif
+ RETURN ( __MKSMALLINT(color.pixel) );
+ }
}
%}.
^ nil
@@ -2456,35 +2456,35 @@
if (ISCONNECTED
&& __isStringLike(aString)) {
- Display *dpy = myDpy;
-
- colorname = (char *) __stringVal(aString);
-
-
- ENTER_XLIB();
- ok = XParseColor(dpy, DefaultColormap(dpy, screen), colorname, &ecolor);
- LEAVE_XLIB();
- if (ok) {
+ Display *dpy = myDpy;
+
+ colorname = (char *) __stringVal(aString);
+
+
+ ENTER_XLIB();
+ ok = XParseColor(dpy, DefaultColormap(dpy, screen), colorname, &ecolor);
+ LEAVE_XLIB();
+ if (ok) {
#ifdef QUICK_TRUE_COLORS
- if (__INST(visualType) == @symbol(TrueColor)) {
- id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
- id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
- id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
- RETURN ( __MKSMALLINT(id) );
- }
-#endif
- ENTER_XLIB();
- ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
- LEAVE_XLIB();
- }
-
- if (! ok) {
- RETURN ( nil );
- }
+ if (__INST(visualType) == @symbol(TrueColor)) {
+ id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
+ id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
+ id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
+ RETURN ( __MKSMALLINT(id) );
+ }
+#endif
+ ENTER_XLIB();
+ ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
+ LEAVE_XLIB();
+ }
+
+ if (! ok) {
+ RETURN ( nil );
+ }
#ifdef COUNT_RESOURCES
- __cnt_color++;
-#endif
- RETURN ( __MKSMALLINT(ecolor.pixel) );
+ __cnt_color++;
+#endif
+ RETURN ( __MKSMALLINT(ecolor.pixel) );
}
%}.
^ super colorNamed:aString
@@ -2504,30 +2504,30 @@
if (__bothSmallInteger(r, g)
&& __isSmallInteger(b)
&& ISCONNECTED) {
- ecolor.red = __intVal(r);
- ecolor.green= __intVal(g);
- ecolor.blue = __intVal(b);
+ ecolor.red = __intVal(r);
+ ecolor.green= __intVal(g);
+ ecolor.blue = __intVal(b);
#ifdef QUICK_TRUE_COLORS
- if (__INST(visualType) == @symbol(TrueColor)) {
- id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
- id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
- id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
- RETURN ( __MKSMALLINT(id) );
- }
-#endif
- dpy = myDpy;
-
- ENTER_XLIB();
- ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
- LEAVE_XLIB();
-
- if (! ok) {
- RETURN ( nil );
- }
+ if (__INST(visualType) == @symbol(TrueColor)) {
+ id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
+ id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
+ id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
+ RETURN ( __MKSMALLINT(id) );
+ }
+#endif
+ dpy = myDpy;
+
+ ENTER_XLIB();
+ ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
+ LEAVE_XLIB();
+
+ if (! ok) {
+ RETURN ( nil );
+ }
#ifdef COUNT_RESOURCES
- __cnt_color++;
-#endif
- RETURN ( __MKSMALLINT(ecolor.pixel) );
+ __cnt_color++;
+#endif
+ RETURN ( __MKSMALLINT(ecolor.pixel) );
}
%}.
^ super colorScaledRed:r scaledGreen:g scaledBlue:b
@@ -2558,8 +2558,8 @@
#ifdef QUICK_TRUE_COLORS
if (__INST(visualType) == @symbol(TrueColor)) {
- /* no need to do anything on TrueColor displays ... */
- RETURN (self);
+ /* no need to do anything on TrueColor displays ... */
+ RETURN (self);
}
#endif
@@ -2567,21 +2567,21 @@
* ignore closed connection
*/
if (! ISCONNECTED) {
- RETURN (self);
+ RETURN (self);
}
if (__isSmallInteger(colorIndex)) {
- dpy = myDpy;
- color = (long) __intVal(colorIndex);
-
- ENTER_XLIB();
- XFreeColors(dpy, DefaultColormap(dpy, screen), &color, 1, 0L);
- LEAVE_XLIB();
+ dpy = myDpy;
+ color = (long) __intVal(colorIndex);
+
+ ENTER_XLIB();
+ XFreeColors(dpy, DefaultColormap(dpy, screen), &color, 1, 0L);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- __cnt_color--;
-#endif
-
- RETURN ( self );
+ __cnt_color--;
+#endif
+
+ RETURN ( self );
}
%}.
self primitiveFailed
@@ -2600,29 +2600,29 @@
if (ISCONNECTED
&& __isSmallInteger(index)) {
- Display *dpy = myDpy;
-
- color.pixel = __intVal(index);
-
- ENTER_XLIB();
- XQueryColor(dpy, DefaultColormap(dpy, screen), &color);
- LEAVE_XLIB();
-
-
- /*
- * have to compensate for an error in X ?, which does not scale
- * colors correctly if lesser than 16bits are valid in a color,
- * (for example, color white on a 4bitsPerRGB server will Return
- * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
- */
- bits = __intVal(__INST(bitsPerRGB));
- scale = (1<<bits) - 1;
- shift = 16 - bits;
-
- sr = ((double)(color.red>>shift) / scale) * 0xFFFF;
- sg = ((double)(color.green>>shift) / scale) * 0xFFFF;
- sb = ((double)(color.blue>>shift) / scale) * 0xFFFF;
- RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
+ Display *dpy = myDpy;
+
+ color.pixel = __intVal(index);
+
+ ENTER_XLIB();
+ XQueryColor(dpy, DefaultColormap(dpy, screen), &color);
+ LEAVE_XLIB();
+
+
+ /*
+ * have to compensate for an error in X ?, which does not scale
+ * colors correctly if lesser than 16bits are valid in a color,
+ * (for example, color white on a 4bitsPerRGB server will Return
+ * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
+ */
+ bits = __intVal(__INST(bitsPerRGB));
+ scale = (1<<bits) - 1;
+ shift = 16 - bits;
+
+ sr = ((double)(color.red>>shift) / scale) * 0xFFFF;
+ sg = ((double)(color.green>>shift) / scale) * 0xFFFF;
+ sb = ((double)(color.blue>>shift) / scale) * 0xFFFF;
+ RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
}
%}.
^ super getScaledRGBFrom:index
@@ -2641,39 +2641,39 @@
if (ISCONNECTED
&& __isStringLike(colorName)) {
- Display *dpy = myDpy;
-
-
- if (XParseColor(dpy, DefaultColormap(dpy, screen),
- (char *) __stringVal(colorName), &color)) {
- /*
- * have to compensate for an error in X ?, which does not scale
- * colors correctly if lesser than 16bits are valid in a color,
- * (for example, color white on a 4bitsPerRGB server will Return
- * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
- */
- bits = __intVal(__INST(bitsPerRGB));
- scale = (1<<bits) - 1;
- shift = 16 - bits;
-
- /* do assignment to doubles (no cast) - avoid alignment problems in HPPA */
- dr = color.red>>shift;
- dg = color.green>>shift;
- db = color.blue>>shift;
-
- sr = (dr / scale) * 0xFFFF;
- sg = (dg / scale) * 0xFFFF;
- sb = (db / scale) * 0xFFFF;
- RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
- }
+ Display *dpy = myDpy;
+
+
+ if (XParseColor(dpy, DefaultColormap(dpy, screen),
+ (char *) __stringVal(colorName), &color)) {
+ /*
+ * have to compensate for an error in X ?, which does not scale
+ * colors correctly if lesser than 16bits are valid in a color,
+ * (for example, color white on a 4bitsPerRGB server will Return
+ * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
+ */
+ bits = __intVal(__INST(bitsPerRGB));
+ scale = (1<<bits) - 1;
+ shift = 16 - bits;
+
+ /* do assignment to doubles (no cast) - avoid alignment problems in HPPA */
+ dr = color.red>>shift;
+ dg = color.green>>shift;
+ db = color.blue>>shift;
+
+ sr = (dr / scale) * 0xFFFF;
+ sg = (dg / scale) * 0xFFFF;
+ sb = (db / scale) * 0xFFFF;
+ RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
+ }
}
%}.
^ super getScaledRGBFromName:colorName
"
- Screen current getScaledRGBFromName:'red'
- Screen current getScaledRGBFromName:'orange'
+ Screen current getScaledRGBFromName:'red'
+ Screen current getScaledRGBFromName:'orange'
"
!
@@ -2688,22 +2688,22 @@
aStream isNil ifTrue:[^ nil].
list := OrderedCollection new.
[aStream atEnd] whileFalse:[
- line := aStream nextLine.
- line notNil ifTrue:[
- "skip the r/g/b numbers"
- index := 1.
- [(line at:index) isSeparator] whileTrue:[index := index + 1].
- [(line at:index) isDigit] whileTrue:[index := index + 1].
- [(line at:index) isSeparator] whileTrue:[index := index + 1].
- [(line at:index) isDigit] whileTrue:[index := index + 1].
- [(line at:index) isSeparator] whileTrue:[index := index + 1].
- [(line at:index) isDigit] whileTrue:[index := index + 1].
- [(line at:index) isSeparator] whileTrue:[index := index + 1].
- colorName := line copyFrom:index.
- ((colorName occurrencesOf:(Character space)) == 0) ifTrue:[
- list add:colorName
- ]
- ]
+ line := aStream nextLine.
+ line notNil ifTrue:[
+ "skip the r/g/b numbers"
+ index := 1.
+ [(line at:index) isSeparator] whileTrue:[index := index + 1].
+ [(line at:index) isDigit] whileTrue:[index := index + 1].
+ [(line at:index) isSeparator] whileTrue:[index := index + 1].
+ [(line at:index) isDigit] whileTrue:[index := index + 1].
+ [(line at:index) isSeparator] whileTrue:[index := index + 1].
+ [(line at:index) isDigit] whileTrue:[index := index + 1].
+ [(line at:index) isSeparator] whileTrue:[index := index + 1].
+ colorName := line copyFrom:index.
+ ((colorName occurrencesOf:(Character space)) == 0) ifTrue:[
+ list add:colorName
+ ]
+ ]
].
aStream close.
^ list sort
@@ -2723,10 +2723,10 @@
%{ /* NOCONTEXT */
if (__isSmallInteger(aPercentage)) {
- RETURN ( __MKSMALLINT(0xFFFF * __intVal(aPercentage) / 100) );
+ RETURN ( __MKSMALLINT(0xFFFF * __intVal(aPercentage) / 100) );
}
if (__isFloat(aPercentage)) {
- RETURN ( __MKSMALLINT(0xFFFF * (int)(__floatVal(aPercentage)) / 100) );
+ RETURN ( __MKSMALLINT(0xFFFF * (int)(__floatVal(aPercentage)) / 100) );
}
%}.
^ (16rFFFF * aPercentage / 100) rounded
@@ -2746,33 +2746,33 @@
int ok = 1;
if (__isSmallInteger(sred))
- r = __intVal(sred);
+ r = __intVal(sred);
else ok = 0;
if (__isSmallInteger(sgreen))
- g = __intVal(sgreen);
+ g = __intVal(sgreen);
else ok = 0;
if (__isSmallInteger(sblue))
- b = __intVal(sblue);
+ b = __intVal(sblue);
else ok = 0;
if (ISCONNECTED
&& __isSmallInteger(index) && ok) {
- Display *dpy = myDpy;
-
- color.pixel = __intVal(index);
- color.red = r;
- color.green = g;
- color.blue = b;
- color.flags = DoRed | DoGreen | DoBlue;
-
-
- ENTER_XLIB();
- XStoreColor(dpy, DefaultColormap(dpy, screen), &color);
- LEAVE_XLIB();
-
- RETURN ( self );
+ Display *dpy = myDpy;
+
+ color.pixel = __intVal(index);
+ color.red = r;
+ color.green = g;
+ color.blue = b;
+ color.flags = DoRed | DoGreen | DoBlue;
+
+
+ ENTER_XLIB();
+ XStoreColor(dpy, DefaultColormap(dpy, screen), &color);
+ LEAVE_XLIB();
+
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -2789,30 +2789,30 @@
"/ if you add something here, also add to #shapeNumberFromCursor ...
^ #(
- #upLeftArrow "/ XC_top_left_arrow
- #upRightHand "/ XC_hand1
- #upDownArrow "/ XC_sb_v_double_arrow
- #leftRightArrow "/ XC_sb_h_double_arrow
- #upLimitArrow "/ XC_top_side
- #downLimitArrow "/ XC_bottom_side
- #leftLimitArrow "/ XC_left_side
- #rightLimitArrow "/ XC_right_side
- #text "/ XC_xterm
- #upRightArrow "/ XC_draft_large
- #leftHand "/ XC_hand2
- #questionMark "/ XC_question_arrow
- #cross "/ XC_X_cursor
- #wait "/ XC_watch
- #crossHair "/ XC_tcross
- #origin "/ XC_ul_angle
- #topLeft "/ XC_ul_angle
- #corner "/ XC_lr_angle
- #bottomRight "/ XC_lr_angle
- #topRight "/ XC_ur_angle
- #bottomLeft "/ XC_ll_angle
- #square "/ XC_dotbox
- #fourWay "/ XC_fleur
- #crossCursor "/ XC_X_cursor
+ #upLeftArrow "/ XC_top_left_arrow
+ #upRightHand "/ XC_hand1
+ #upDownArrow "/ XC_sb_v_double_arrow
+ #leftRightArrow "/ XC_sb_h_double_arrow
+ #upLimitArrow "/ XC_top_side
+ #downLimitArrow "/ XC_bottom_side
+ #leftLimitArrow "/ XC_left_side
+ #rightLimitArrow "/ XC_right_side
+ #text "/ XC_xterm
+ #upRightArrow "/ XC_draft_large
+ #leftHand "/ XC_hand2
+ #questionMark "/ XC_question_arrow
+ #cross "/ XC_X_cursor
+ #wait "/ XC_watch
+ #crossHair "/ XC_tcross
+ #origin "/ XC_ul_angle
+ #topLeft "/ XC_ul_angle
+ #corner "/ XC_lr_angle
+ #bottomRight "/ XC_lr_angle
+ #topRight "/ XC_ur_angle
+ #bottomLeft "/ XC_ll_angle
+ #square "/ XC_dotbox
+ #fourWay "/ XC_fleur
+ #crossCursor "/ XC_X_cursor
)
"Created: 8.4.1997 / 10:12:30 / cg"
@@ -2841,18 +2841,18 @@
&& __bothSmallInteger(bgR, bgG)
&& __bothSmallInteger(bgB, fgR)) {
- fgcolor.red = __intVal(fgR);
- fgcolor.green= __intVal(fgG);
- fgcolor.blue = __intVal(fgB);
- bgcolor.red = __intVal(bgR);
- bgcolor.green= __intVal(bgG);
- bgcolor.blue = __intVal(bgB);
-
- ENTER_XLIB();
- XRecolorCursor(myDpy, __CursorVal(aCursorId), &fgcolor, &bgcolor);
- LEAVE_XLIB();
-
- RETURN ( self );
+ fgcolor.red = __intVal(fgR);
+ fgcolor.green= __intVal(fgG);
+ fgcolor.blue = __intVal(fgB);
+ bgcolor.red = __intVal(bgR);
+ bgcolor.green= __intVal(bgG);
+ bgcolor.blue = __intVal(bgB);
+
+ ENTER_XLIB();
+ XRecolorCursor(myDpy, __CursorVal(aCursorId), &fgcolor, &bgcolor);
+ LEAVE_XLIB();
+
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -2874,10 +2874,10 @@
"create a cursor given 2 bitmaps (source, mask) and a hotspot"
^ self
- primCreateCursorSourceFormId:sourceForm id
- maskFormId:maskForm id
- hotX:hx hotY:hy
- width:w height:h
+ primCreateCursorSourceFormId:sourceForm id
+ maskFormId:maskForm id
+ hotX:hx hotY:hy
+ width:w height:h
!
destroyCursor:aCursorId
@@ -2889,22 +2889,22 @@
* ignore closed connection
*/
if (! ISCONNECTED) {
- RETURN ( self );
+ RETURN ( self );
}
if (__isExternalAddress(aCursorId)) {
- Cursor curs = __CursorVal(aCursorId);
-
- if (curs) {
-
- ENTER_XLIB();
- XFreeCursor(myDpy, curs);
- LEAVE_XLIB();
+ Cursor curs = __CursorVal(aCursorId);
+
+ if (curs) {
+
+ ENTER_XLIB();
+ XFreeCursor(myDpy, curs);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- __cnt_cursor--;
-#endif
- }
- RETURN ( self );
+ __cnt_cursor--;
+#endif
+ }
+ RETURN ( self );
}
%}.
self primitiveFailed
@@ -2924,17 +2924,17 @@
if (ISCONNECTED
&& __isSmallInteger(aShapeNumber)) {
- ENTER_XLIB();
- newCursor = XCreateFontCursor(myDpy, __intVal(aShapeNumber));
- LEAVE_XLIB();
+ ENTER_XLIB();
+ newCursor = XCreateFontCursor(myDpy, __intVal(aShapeNumber));
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- if (newCursor)
- __cnt_cursor++;
-#endif
-
- if (newCursor != (Cursor)0) {
- RETURN (__MKEXTERNALADDRESS(newCursor));
- }
+ if (newCursor)
+ __cnt_cursor++;
+#endif
+
+ if (newCursor != (Cursor)0) {
+ RETURN (__MKEXTERNALADDRESS(newCursor));
+ }
}
%}.
self primitiveFailedOrClosedConnection.
@@ -2953,28 +2953,28 @@
&& __isExternalAddress(sourceId)
&& __isExternalAddress(maskId)
&& __bothSmallInteger(hx, hy)) {
- fgColor.red = 0; /* fg is black */
- fgColor.green = 0;
- fgColor.blue = 0;
- bgColor.red = 0xFFFF; /* bg is white */
- bgColor.green = 0xFFFF;
- bgColor.blue = 0xFFFF;
-
-
- ENTER_XLIB();
- newCursor = XCreatePixmapCursor(myDpy,
- __PixmapVal(sourceId),
- __PixmapVal(maskId),
- &fgColor, &bgColor, __intVal(hx), __intVal(hy));
- LEAVE_XLIB();
+ fgColor.red = 0; /* fg is black */
+ fgColor.green = 0;
+ fgColor.blue = 0;
+ bgColor.red = 0xFFFF; /* bg is white */
+ bgColor.green = 0xFFFF;
+ bgColor.blue = 0xFFFF;
+
+
+ ENTER_XLIB();
+ newCursor = XCreatePixmapCursor(myDpy,
+ __PixmapVal(sourceId),
+ __PixmapVal(maskId),
+ &fgColor, &bgColor, __intVal(hx), __intVal(hy));
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- if (newCursor)
- __cnt_cursor++;
-#endif
-
- if (newCursor != (Cursor)0) {
- RETURN (__MKEXTERNALADDRESS(newCursor));
- }
+ if (newCursor)
+ __cnt_cursor++;
+#endif
+
+ if (newCursor != (Cursor)0) {
+ RETURN (__MKEXTERNALADDRESS(newCursor));
+ }
}
%}.
self primitiveFailedOrClosedConnection.
@@ -3029,128 +3029,128 @@
(msgType := self atomIDOf:#DndProtocol) notNil ifTrue:[
- "/ DND can drop files, file, dir, links, dirLink and text
- "/ check for this.
-
- dropObjects isCollection ifFalse:[
- dropColl := Array with:dropObjects
- ] ifTrue:[
- dropColl := dropObjects
- ].
- anyFile := anyDir := anyText := anyOther := false.
- dropColl do:[:aDropObject |
- aDropObject isFileObject ifTrue:[
- aDropObject theObject isDirectory ifTrue:[
- anyDir := true
- ] ifFalse:[
- anyFile := true
- ]
- ] ifFalse:[
- aDropObject isTextObject ifTrue:[
- anyText := true
- ] ifFalse:[
- anyOther := true
- ]
- ]
- ].
-
- anyOther ifTrue:[
- "/ DND does not support this ...
- 'XWorkstation [info]: DND can only drop files or text' infoPrintCR.
- ^ false
- ].
- anyText ifTrue:[
- (anyFile or:[anyDir]) ifTrue:[
- "/ DND does not support mixed types
- 'XWorkstation [info]: DND cannot drop both files and text' infoPrintCR.
- ^ false
- ]
- ].
-
- dropCollSize := dropColl size.
- anyFile ifTrue:[
- dropType := #DndFiles.
- dropCollSize == 1 ifTrue:[
- dropType := #DndFile
- ]
- ] ifFalse:[
- anyDir ifTrue:[
- dropType := #DndFiles.
- dropCollSize == 1 ifTrue:[
- dropType := #DndDir
- ]
- ] ifFalse:[
- anyText ifTrue:[
- dropCollSize == 1 ifTrue:[
- dropType := #DndText
- ] ifFalse:[
- "/ can only drop a single text object
- 'XWorkstation [info]: DND can only drop a single text' infoPrintCR.
- ^ false
- ]
- ] ifFalse:[
- "/ mhmh ...
- 'XWorkstation [info]: DND cannot drop this' infoPrintCR.
- ^ false
- ]
- ]
- ].
-
- dropTypeCode := self dndDropTypes indexOf:dropType.
- dropTypeCode == 0 ifTrue:[
- 'XWorkstation [info]: DND cannot drop this' infoPrintCR.
- ^ false
- ].
- dropTypeCode := dropTypeCode - 1.
-
-
- "/ place the selection inTo the DndSelection property
- "/ of the rootView ...
- "/ ... need a single string, with 0-terminated parts.
-
- strings := OrderedCollection new.
- sz := 0.
- dropColl do:[:anObject |
- |s o|
-
- o := anObject theObject.
- anObject isFileObject ifTrue:[
- o := o pathName
- ].
- s := o asString.
- strings add:s.
- sz := sz + (s size) + 1.
- ].
- val := String new:sz.
- idx := 1.
- strings do:[:aString |
- |sz|
-
- sz := aString size.
- val replaceFrom:idx to:(idx + sz - 1) with:aString startingAt:1.
- idx := idx + sz.
- val at:idx put:(Character value:0).
- idx := idx + 1
- ].
-
- self
- setProperty:(self atomIDOf:#DndSelection)
- type:(self atomIDOf:#STRING)
- value:val
- for:rootId.
-
- ^ self
- sendClientEvent:msgType
- format:32
- to:destinationId
- propagate:true
- eventMask:nil
- window:destinationId
- data1:dropTypeCode
- data2:0
- data3:destinationId
- data4:nil
- data5:nil.
+ "/ DND can drop files, file, dir, links, dirLink and text
+ "/ check for this.
+
+ dropObjects isCollection ifFalse:[
+ dropColl := Array with:dropObjects
+ ] ifTrue:[
+ dropColl := dropObjects
+ ].
+ anyFile := anyDir := anyText := anyOther := false.
+ dropColl do:[:aDropObject |
+ aDropObject isFileObject ifTrue:[
+ aDropObject theObject isDirectory ifTrue:[
+ anyDir := true
+ ] ifFalse:[
+ anyFile := true
+ ]
+ ] ifFalse:[
+ aDropObject isTextObject ifTrue:[
+ anyText := true
+ ] ifFalse:[
+ anyOther := true
+ ]
+ ]
+ ].
+
+ anyOther ifTrue:[
+ "/ DND does not support this ...
+ 'XWorkstation [info]: DND can only drop files or text' infoPrintCR.
+ ^ false
+ ].
+ anyText ifTrue:[
+ (anyFile or:[anyDir]) ifTrue:[
+ "/ DND does not support mixed types
+ 'XWorkstation [info]: DND cannot drop both files and text' infoPrintCR.
+ ^ false
+ ]
+ ].
+
+ dropCollSize := dropColl size.
+ anyFile ifTrue:[
+ dropType := #DndFiles.
+ dropCollSize == 1 ifTrue:[
+ dropType := #DndFile
+ ]
+ ] ifFalse:[
+ anyDir ifTrue:[
+ dropType := #DndFiles.
+ dropCollSize == 1 ifTrue:[
+ dropType := #DndDir
+ ]
+ ] ifFalse:[
+ anyText ifTrue:[
+ dropCollSize == 1 ifTrue:[
+ dropType := #DndText
+ ] ifFalse:[
+ "/ can only drop a single text object
+ 'XWorkstation [info]: DND can only drop a single text' infoPrintCR.
+ ^ false
+ ]
+ ] ifFalse:[
+ "/ mhmh ...
+ 'XWorkstation [info]: DND cannot drop this' infoPrintCR.
+ ^ false
+ ]
+ ]
+ ].
+
+ dropTypeCode := self dndDropTypes indexOf:dropType.
+ dropTypeCode == 0 ifTrue:[
+ 'XWorkstation [info]: DND cannot drop this' infoPrintCR.
+ ^ false
+ ].
+ dropTypeCode := dropTypeCode - 1.
+
+
+ "/ place the selection inTo the DndSelection property
+ "/ of the rootView ...
+ "/ ... need a single string, with 0-terminated parts.
+
+ strings := OrderedCollection new.
+ sz := 0.
+ dropColl do:[:anObject |
+ |s o|
+
+ o := anObject theObject.
+ anObject isFileObject ifTrue:[
+ o := o pathName
+ ].
+ s := o asString.
+ strings add:s.
+ sz := sz + (s size) + 1.
+ ].
+ val := String new:sz.
+ idx := 1.
+ strings do:[:aString |
+ |sz|
+
+ sz := aString size.
+ val replaceFrom:idx to:(idx + sz - 1) with:aString startingAt:1.
+ idx := idx + sz.
+ val at:idx put:(Character value:0).
+ idx := idx + 1
+ ].
+
+ self
+ setProperty:(self atomIDOf:#DndSelection)
+ type:(self atomIDOf:#STRING)
+ value:val
+ for:rootId.
+
+ ^ self
+ sendClientEvent:msgType
+ format:32
+ to:destinationId
+ propagate:true
+ eventMask:nil
+ window:destinationId
+ data1:dropTypeCode
+ data2:0
+ data3:destinationId
+ data4:nil
+ data5:nil.
].
^ false
@@ -3163,14 +3163,14 @@
"return the dropTypes as supported by DND"
^ #(
- DndUnknown "/ 0
- DndRawData "/ 1
- DndFile "/ 2
- DndFiles "/ 3
- DndText "/ 4
- DndDir "/ 5
- DndLink "/ 6
- DndExe "/ 7
+ DndUnknown "/ 0
+ DndRawData "/ 1
+ DndFile "/ 2
+ DndFiles "/ 3
+ DndText "/ 4
+ DndDir "/ 5
+ DndLink "/ 6
+ DndExe "/ 7
)
"Created: 6.4.1997 / 12:57:56 / cg"
@@ -3185,11 +3185,11 @@
"/ see, if the display supports the DND protocol ...
"/
(self atomIDOf:#DndProtocol) notNil ifTrue:[
- ^ self
- dndDrop:aCollectionOfDropObjects
- inWindowID:destinationId
- position:destinationPoint
- rootPosition:rootPoint
+ ^ self
+ dndDrop:aCollectionOfDropObjects
+ inWindowID:destinationId
+ position:destinationPoint
+ rootPosition:rootPoint
].
"/ add more drag&drop protocols here.
@@ -3210,11 +3210,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3228,22 +3228,22 @@
&& __bothSmallInteger(w, h)
&& __bothSmallInteger(srcX, srcY)
&& __bothSmallInteger(dstX, dstY)) {
- int _sX, _sY, _w, _h, _dX, _dY;
-
- _sX = __intVal(srcX);
- _sY = __intVal(srcY);
- _w = __intVal(w);
- _h = __intVal(h);
- _dX = __intVal(dstX);
- _dY = __intVal(dstY);
-
- gc = __GCVal(dstGCId);
- source = __DrawableVal(sourceId);
- dest = __DrawableVal(destId);
- ENTER_XLIB();
- XCopyArea(myDpy, source, dest, gc, _sX, _sY, _w, _h, _dX, _dY);
- LEAVE_XLIB();
- RETURN ( self );
+ int _sX, _sY, _w, _h, _dX, _dY;
+
+ _sX = __intVal(srcX);
+ _sY = __intVal(srcY);
+ _w = __intVal(w);
+ _h = __intVal(h);
+ _dX = __intVal(dstX);
+ _dY = __intVal(dstY);
+
+ gc = __GCVal(dstGCId);
+ source = __DrawableVal(sourceId);
+ dest = __DrawableVal(destId);
+ ENTER_XLIB();
+ XCopyArea(myDpy, source, dest, gc, _sX, _sY, _w, _h, _dX, _dY);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
"badGC, bad sourceDrawableId or destDrawableID
@@ -3262,11 +3262,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3280,20 +3280,20 @@
&& __bothSmallInteger(w, h)
&& __bothSmallInteger(srcX, srcY)
&& __bothSmallInteger(dstX, dstY)) {
- Display *dpy = myDpy;
-
- gc = __GCVal(dstGCId);
- source = __DrawableVal(sourceId);
- dest = __DrawableVal(destId);
- ENTER_XLIB();
- XSetGraphicsExposures(dpy, gc, 0);
- XCopyArea(dpy, source, dest, gc,
- __intVal(srcX), __intVal(srcY),
- __intVal(w), __intVal(h),
- __intVal(dstX), __intVal(dstY));
- XSetGraphicsExposures(dpy, gc, 1);
- LEAVE_XLIB();
- RETURN ( self );
+ Display *dpy = myDpy;
+
+ gc = __GCVal(dstGCId);
+ source = __DrawableVal(sourceId);
+ dest = __DrawableVal(destId);
+ ENTER_XLIB();
+ XSetGraphicsExposures(dpy, gc, 0);
+ XCopyArea(dpy, source, dest, gc,
+ __intVal(srcX), __intVal(srcY),
+ __intVal(w), __intVal(h),
+ __intVal(dstX), __intVal(dstY));
+ XSetGraphicsExposures(dpy, gc, 1);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
"badGC, bad sourceDrawableId or destDrawableID
@@ -3312,11 +3312,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3330,16 +3330,16 @@
&& __bothSmallInteger(w, h)
&& __bothSmallInteger(srcX, srcY)
&& __bothSmallInteger(dstX, dstY)) {
- gc = __GCVal(dstGCId);
- source = __DrawableVal(sourceId);
- dest = __DrawableVal(destId);
- ENTER_XLIB();
- XCopyPlane(myDpy, source, dest, gc,
- __intVal(srcX), __intVal(srcY),
- __intVal(w), __intVal(h),
- __intVal(dstX), __intVal(dstY), 1);
- LEAVE_XLIB();
- RETURN ( self );
+ gc = __GCVal(dstGCId);
+ source = __DrawableVal(sourceId);
+ dest = __DrawableVal(destId);
+ ENTER_XLIB();
+ XCopyPlane(myDpy, source, dest, gc,
+ __intVal(srcX), __intVal(srcY),
+ __intVal(w), __intVal(h),
+ __intVal(dstX), __intVal(dstY), 1);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
"badGC, bad sourceDrawableId or destDrawableID
@@ -3359,11 +3359,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3377,20 +3377,20 @@
&& __bothSmallInteger(w, h)
&& __bothSmallInteger(srcX, srcY)
&& __bothSmallInteger(dstX, dstY)) {
- Display *dpy = myDpy;
-
- gc = __GCVal(dstGCId);
- source = __DrawableVal(sourceId);
- dest = __DrawableVal(destId);
- ENTER_XLIB();
- XSetGraphicsExposures(dpy, gc, 0);
- XCopyPlane(dpy, source, dest, gc,
- __intVal(srcX), __intVal(srcY),
- __intVal(w), __intVal(h),
- __intVal(dstX), __intVal(dstY), 1);
- XSetGraphicsExposures(dpy, gc, 1);
- LEAVE_XLIB();
- RETURN ( self );
+ Display *dpy = myDpy;
+
+ gc = __GCVal(dstGCId);
+ source = __DrawableVal(sourceId);
+ dest = __DrawableVal(destId);
+ ENTER_XLIB();
+ XSetGraphicsExposures(dpy, gc, 0);
+ XCopyPlane(dpy, source, dest, gc,
+ __intVal(srcX), __intVal(srcY),
+ __intVal(w), __intVal(h),
+ __intVal(dstX), __intVal(dstY), 1);
+ XSetGraphicsExposures(dpy, gc, 1);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
"badGC, bad sourceDrawableId or destDrawableID
@@ -3406,11 +3406,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3420,23 +3420,23 @@
double f;
if (__isSmallInteger(startAngle))
- angle1 = __intVal(startAngle) * 64;
+ angle1 = __intVal(startAngle) * 64;
else if (__isFloat(startAngle)) {
- f = __floatVal(startAngle);
- angle1 = f * 64;
+ f = __floatVal(startAngle);
+ angle1 = f * 64;
} else if (__isShortFloat(startAngle)) {
- f = __shortFloatVal(startAngle);
- angle1 = f * 64;
+ f = __shortFloatVal(startAngle);
+ angle1 = f * 64;
} else goto bad;
if (__isSmallInteger(angle))
- angle2 = __intVal(angle) * 64;
+ angle2 = __intVal(angle) * 64;
else if (__isFloat(angle)) {
- f = __floatVal(angle);
- angle2 = f * 64;
+ f = __floatVal(angle);
+ angle2 = f * 64;
} else if (__isShortFloat(angle)) {
- f = __shortFloatVal(angle);
- angle2 = f * 64;
+ f = __shortFloatVal(angle);
+ angle2 = f * 64;
} else goto bad;
if (ISCONNECTED
@@ -3444,20 +3444,20 @@
&& __isExternalAddress(aDrawableId)
&& __bothSmallInteger(x, y)
&& __bothSmallInteger(width, height)) {
- win = __WindowVal(aDrawableId);
- gc = __GCVal(aGCId);
- w = __intVal(width);
- h = __intVal(height);
- /*
- * need this check here: some servers simply dump core with bad args
- */
- if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
- ENTER_XLIB();
- XDrawArc(myDpy, win, gc, __intVal(x), __intVal(y),
- w, h, angle1, angle2);
- LEAVE_XLIB();
- }
- RETURN ( self );
+ win = __WindowVal(aDrawableId);
+ gc = __GCVal(aGCId);
+ w = __intVal(width);
+ h = __intVal(height);
+ /*
+ * need this check here: some servers simply dump core with bad args
+ */
+ if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
+ ENTER_XLIB();
+ XDrawArc(myDpy, win, gc, __intVal(x), __intVal(y),
+ w, h, angle1, angle2);
+ LEAVE_XLIB();
+ }
+ RETURN ( self );
}
bad: ;
%}.
@@ -3473,11 +3473,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3489,35 +3489,35 @@
&& __isExternalAddress(aDrawableId)
&& __bothSmallInteger(x0, y0)
&& __bothSmallInteger(x1, y1)) {
- Display *dpy = myDpy;
- int ix0, iy0, ix1, iy1;
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
-
- ix0 = __intVal(x0);
- iy0 = __intVal(y0);
- ix1 = __intVal(x1);
- iy1 = __intVal(y1);
-
- /* attention: coordinates in X are shorts and wrap; clamp here. */
- if (ix0 > 0x7FFF) ix0 = 0x7FFF;
- else if (ix0 < -0x8000) ix0 = -0x8000;
- if (iy0 > 0x7FFF) iy0 = 0x7FFF;
- else if (iy0 < -0x8000) iy0 = -0x8000;
- if (ix1 > 0x7FFF) ix1 = 0x7FFF;
- else if (ix1 < -0x8000) ix1 = -0x8000;
- if (iy1 > 0x7FFF) iy1 = 0x7FFF;
- else if (iy1 < -0x8000) iy1 = -0x8000;
-
- ENTER_XLIB();
- if ((ix0 == ix1) && (iy0 == iy1)) {
- /* little bit shorter X-lib message (better with slow connections...) */
- XDrawPoint(dpy, win, gc, ix0, iy0);
- } else {
- XDrawLine(dpy, win, gc, ix0, iy0, ix1, iy1);
- }
- LEAVE_XLIB();
- RETURN ( self );
+ Display *dpy = myDpy;
+ int ix0, iy0, ix1, iy1;
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+
+ ix0 = __intVal(x0);
+ iy0 = __intVal(y0);
+ ix1 = __intVal(x1);
+ iy1 = __intVal(y1);
+
+ /* attention: coordinates in X are shorts and wrap; clamp here. */
+ if (ix0 > 0x7FFF) ix0 = 0x7FFF;
+ else if (ix0 < -0x8000) ix0 = -0x8000;
+ if (iy0 > 0x7FFF) iy0 = 0x7FFF;
+ else if (iy0 < -0x8000) iy0 = -0x8000;
+ if (ix1 > 0x7FFF) ix1 = 0x7FFF;
+ else if (ix1 < -0x8000) ix1 = -0x8000;
+ if (iy1 > 0x7FFF) iy1 = 0x7FFF;
+ else if (iy1 < -0x8000) iy1 = -0x8000;
+
+ ENTER_XLIB();
+ if ((ix0 == ix1) && (iy0 == iy1)) {
+ /* little bit shorter X-lib message (better with slow connections...) */
+ XDrawPoint(dpy, win, gc, ix0, iy0);
+ } else {
+ XDrawLine(dpy, win, gc, ix0, iy0, ix1, iy1);
+ }
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
"badGC, badDrawable or coordinates not integer"
@@ -3534,15 +3534,15 @@
|noY|
(noY := yValues size) < 2 ifTrue:[
- ^ self
+ ^ self
].
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
OBJ yA, t;
@@ -3558,110 +3558,109 @@
if (ISCONNECTED
&& __isExternalAddress(aGCId)
&& __isExternalAddress(aDrawableId) ) {
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
-
- if( __isSmallInteger(scaleY) )
- sY = (float) __intVal( scaleY );
- else if (__isFloat(scaleY))
- sY = __floatVal( scaleY );
- else if (__isShortFloat(scaleY))
- sY = __shortFloatVal( scaleY );
- else {
- t = __SSEND0(scaleY, @symbol(asFloat), 0);
- if (! __isFloat(t)) goto fail;
- sY = __floatVal( t );
- }
-
- if( __isSmallInteger(transY) )
- tY = (float) __intVal( transY );
- else if (__isFloat(transY))
- tY = __floatVal( transY );
- else if (__isShortFloat(transY))
- tY = __shortFloatVal( transY );
- else {
- t = __SSEND0(transY, @symbol(asFloat), 0);
- if (! __isFloat(t)) goto fail;
- tY = __floatVal( t );
- }
-
- if( __isSmallInteger(startX) )
- x = (float) __intVal( startX );
- else if (__isFloat(startX))
- x = __floatVal( startX );
- else if (__isShortFloat(startX))
- x = __shortFloatVal( startX );
- else {
- t = __SSEND0(startX, @symbol(asFloat), 0);
- if (! __isFloat(t)) goto fail;
- x = __floatVal( t );
- }
-
- if( __isSmallInteger(stepX) )
- step = (float) __intVal( stepX );
- else if (__isFloat(stepX))
- step = __floatVal( stepX );
- else if (__isShortFloat(stepX))
- step = __shortFloatVal( stepX );
- else {
- t = __SSEND0(stepX, @symbol(asFloat), 0);
- if (! __isFloat(t)) goto fail;
- step = __floatVal( t );
- }
-
- num = __intVal( noY );
-
- if( num > 200 ) {
- if( ! (points = (XPoint *) malloc ( sizeof(XPoint) * num )) )
- goto fail;
- mustFree = 1;
- } else {
- points = qPoints;
- }
- for( i = 0; i < num; ++i ) {
- int px, py;
-
- yA = __AT_(yValues, __MKSMALLINT(i+1) );
-
- if( __isFloat(yA) )
- y = __floatVal( yA );
- else if( __isSmallInteger(yA) )
- y = (float) __intVal( yA );
- else if( __isShortFloat( yA) )
- y = __shortFloatVal( yA );
- else {
- t = __SSEND0(yA, @symbol(asFloat), 0);
- if (! __isFloat(t)) goto fail;
- y = __floatVal( t );
- }
-
- px = (int) (x + 0.5);
- py = (int) ((y * sY) + tY + 0.5);
-
- /* attention: coordinates in X are shorts and wrap; clamp here. */
- if (px > 0x7FFF) px = 0x7FFF;
- else if (px < -0x8000) px = -0x8000;
- if (py > 0x7FFF) py = 0x7FFF;
- else if (py < -0x8000) py = -0x8000;
-
- points[i].x = px;
- points[i].y = py;
- x = x + step;
- }
-
- ENTER_XLIB();
- XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
- LEAVE_XLIB();
-
- if( mustFree ) {
- free( points );
- }
- RETURN ( self );
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+
+ if( __isSmallInteger(scaleY) )
+ sY = (float) __intVal( scaleY );
+ else if (__isFloat(scaleY))
+ sY = __floatVal( scaleY );
+ else if (__isShortFloat(scaleY))
+ sY = __shortFloatVal( scaleY );
+ else {
+ t = __SSEND0(scaleY, @symbol(asFloat), 0);
+ if (! __isFloat(t)) goto fail;
+ sY = __floatVal( t );
+ }
+
+ if( __isSmallInteger(transY) )
+ tY = (float) __intVal( transY );
+ else if (__isFloat(transY))
+ tY = __floatVal( transY );
+ else if (__isShortFloat(transY))
+ tY = __shortFloatVal( transY );
+ else {
+ t = __SSEND0(transY, @symbol(asFloat), 0);
+ if (! __isFloat(t)) goto fail;
+ tY = __floatVal( t );
+ }
+
+ if( __isSmallInteger(startX) )
+ x = (float) __intVal( startX );
+ else if (__isFloat(startX))
+ x = __floatVal( startX );
+ else if (__isShortFloat(startX))
+ x = __shortFloatVal( startX );
+ else {
+ t = __SSEND0(startX, @symbol(asFloat), 0);
+ if (! __isFloat(t)) goto fail;
+ x = __floatVal( t );
+ }
+
+ if( __isSmallInteger(stepX) )
+ step = (float) __intVal( stepX );
+ else if (__isFloat(stepX))
+ step = __floatVal( stepX );
+ else if (__isShortFloat(stepX))
+ step = __shortFloatVal( stepX );
+ else {
+ t = __SSEND0(stepX, @symbol(asFloat), 0);
+ if (! __isFloat(t)) goto fail;
+ step = __floatVal( t );
+ }
+
+ num = __intVal( noY );
+ if( num > 200 ) {
+ if( ! (points = (XPoint *) malloc ( sizeof(XPoint) * num )) )
+ goto fail;
+ mustFree = 1;
+ } else {
+ points = qPoints;
+ }
+ for( i = 0; i < num; ++i ) {
+ int px, py;
+
+ yA = __AT_(yValues, __MKSMALLINT(i+1) );
+
+ if( __isFloat(yA) )
+ y = __floatVal( yA );
+ else if( __isSmallInteger(yA) )
+ y = (float) __intVal( yA );
+ else if( __isShortFloat( yA) )
+ y = __shortFloatVal( yA );
+ else {
+ t = __SSEND0(yA, @symbol(asFloat), 0);
+ if (! __isFloat(t)) goto fail;
+ y = __floatVal( t );
+ }
+
+ px = (int) (x + 0.5);
+ py = (int) ((y * sY) + tY + 0.5);
+
+ /* attention: coordinates in X are shorts and wrap; clamp here. */
+ if (px > 0x7FFF) px = 0x7FFF;
+ else if (px < -0x8000) px = -0x8000;
+ if (py > 0x7FFF) py = 0x7FFF;
+ else if (py < -0x8000) py = -0x8000;
+
+ points[i].x = px;
+ points[i].y = py;
+ x = x + step;
+ }
+
+ ENTER_XLIB();
+ XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
+ LEAVE_XLIB();
+
+ if( mustFree ) {
+ free( points );
+ }
+ RETURN ( self );
}
fail:
if( mustFree )
- free( points );
+ free( points );
%}.
^ super displayLinesFromX:startX step:stepX yValues:yValues scaleY:scaleY transY:transY in:aDrawableId with:aGCId
@@ -3674,11 +3673,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3689,23 +3688,20 @@
&& __isExternalAddress(aGCId)
&& __isExternalAddress(aDrawableId)
&& __bothSmallInteger(x, y)) {
- int px, py;
-
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
-
- px = __intVal(x);
- py = __intVal(y);
- if (px > 0x7FFF) px = 0x7FFF;
- else if (px < -0x8000) px = -0x8000;
- if (py > 0x7FFF) py = 0x7FFF;
- else if (py < -0x8000) py = -0x8000;
-
- ENTER_XLIB();
- XDrawPoint(myDpy, win, gc, px, py);
- LEAVE_XLIB();
-
- RETURN ( self );
+ int px, py;
+
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ px = __intVal(x);
+ py = __intVal(y);
+ if (px > 0x7FFF) px = 0x7FFF;
+ else if (px < -0x8000) px = -0x8000;
+ if (py > 0x7FFF) py = 0x7FFF;
+ else if (py < -0x8000) py = -0x8000;
+ ENTER_XLIB();
+ XDrawPoint(myDpy, win, gc, px, py);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
"badGC, badDrawable or x/y not integer"
@@ -3722,11 +3718,11 @@
|numberOfPoints newPoints|
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
numberOfPoints := aPolygon size.
%{
@@ -3742,53 +3738,53 @@
&& __isExternalAddress(aGCId)
&& __isExternalAddress(aDrawableId)
&& __isSmallInteger(numberOfPoints)) {
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
- num = __intVal(numberOfPoints);
- /*
- * avoid a (slow) malloc, if the number of points is small
- */
- if (num > 100) {
- points = (XPoint *)malloc(sizeof(XPoint) * num);
- if (! points) goto fail;
- mustFree = 1;
- } else
- points = qPoints;
-
- for (i=0; i<num; i++) {
- int px, py;
-
- point = __AT_(aPolygon, __MKSMALLINT(i+1));
- if (! __isPoint(point)) goto fail;
- x = _point_X(point);
- y = _point_Y(point);
- if (! __bothSmallInteger(x, y))
- goto fail;
-
- px = __intVal(x);
- py = __intVal(y);
-
- /* attention: coordinates in X are shorts and wrap; clamp here. */
- if (px > 0x7FFF) px = 0x7FFF;
- else if (px < -0x8000) px = -0x8000;
- if (py > 0x7FFF) py = 0x7FFF;
- else if (py < -0x8000) py = -0x8000;
-
- points[i].x = px;
- points[i].y = py;
- }
-
- ENTER_XLIB();
- XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
- LEAVE_XLIB();
-
- if (mustFree)
- free(points);
- RETURN ( self );
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ num = __intVal(numberOfPoints);
+ /*
+ * avoid a (slow) malloc, if the number of points is small
+ */
+ if (num > 100) {
+ points = (XPoint *)malloc(sizeof(XPoint) * num);
+ if (! points) goto fail;
+ mustFree = 1;
+ } else
+ points = qPoints;
+
+ for (i=0; i<num; i++) {
+ int px, py;
+
+ point = __AT_(aPolygon, __MKSMALLINT(i+1));
+ if (! __isPoint(point)) goto fail;
+ x = _point_X(point);
+ y = _point_Y(point);
+ if (! __bothSmallInteger(x, y))
+ goto fail;
+
+ px = __intVal(x);
+ py = __intVal(y);
+
+ /* attention: coordinates in X are shorts and wrap; clamp here. */
+ if (px > 0x7FFF) px = 0x7FFF;
+ else if (px < -0x8000) px = -0x8000;
+ if (py > 0x7FFF) py = 0x7FFF;
+ else if (py < -0x8000) py = -0x8000;
+
+ points[i].x = px;
+ points[i].y = py;
+ }
+
+ ENTER_XLIB();
+ XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
+ LEAVE_XLIB();
+
+ if (mustFree)
+ free(points);
+ RETURN ( self );
}
fail: ;
if (mustFree)
- free(points);
+ free(points);
%}.
"badGC, badDrawable or coordinates not integer"
self primitiveFailedOrClosedConnection
@@ -3800,11 +3796,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3817,31 +3813,31 @@
&& __isExternalAddress(aDrawableId)
&& __bothSmallInteger(x, y)
&& __bothSmallInteger(width, height)) {
- int px, py;
-
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
- w = __intVal(width);
- h = __intVal(height);
-
- /*
- * need this check here: some servers simply dump core with bad args
- */
- if ((w >= 0) && (h >= 0)) {
- px = __intVal(x);
- py = __intVal(y);
-
- /* attention: coordinates in X are shorts and wrap; clamp here. */
- if (px > 0x7FFF) px = 0x7FFF;
- else if (px < -0x8000) px = -0x8000;
- if (py > 0x7FFF) py = 0x7FFF;
- else if (py < -0x8000) py = -0x8000;
-
- ENTER_XLIB();
- XDrawRectangle(myDpy, win, gc, px, py, w, h);
- LEAVE_XLIB();
- }
- RETURN ( self );
+ int px, py;
+
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ w = __intVal(width);
+ h = __intVal(height);
+
+ /*
+ * need this check here: some servers simply dump core with bad args
+ */
+ if ((w >= 0) && (h >= 0)) {
+ px = __intVal(x);
+ py = __intVal(y);
+
+ /* attention: coordinates in X are shorts and wrap; clamp here. */
+ if (px > 0x7FFF) px = 0x7FFF;
+ else if (px < -0x8000) px = -0x8000;
+ if (py > 0x7FFF) py = 0x7FFF;
+ else if (py < -0x8000) py = -0x8000;
+
+ ENTER_XLIB();
+ XDrawRectangle(myDpy, win, gc, px, py, w, h);
+ LEAVE_XLIB();
+ }
+ RETURN ( self );
}
%}.
"badGC, badDrawable or coordinates not integer"
@@ -3856,11 +3852,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -3878,174 +3874,173 @@
&& __isNonNilObject(aString)
&& __bothSmallInteger(index1, index2)
&& __bothSmallInteger(x, y)) {
- int lMax = __intVal(@global(MaxStringLength));
- Display *dpy = myDpy;
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
-
- i1 = __intVal(index1) - 1;
- if (i1 >= 0) {
- OBJ cls;
-
- i2 = __intVal(index2) - 1;
- if (i2 < i1) {
- RETURN (self);
- }
-
- cp = (char *) __stringVal(aString);
- l = i2 - i1 + 1;
-
- if (__isStringLike(aString)) {
- n = __stringSize(aString);
- if (i2 < n) {
- cp += i1;
- if (l > lMax) l = lMax;
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
- else
- XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
- LEAVE_XLIB();
- RETURN ( self );
- }
- }
-
- cls = __qClass(aString);
- nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
- cp += nInstBytes;
-
- if (__isBytes(aString)) {
- n = __byteArraySize(aString) - nInstBytes - 1;
-
- if (i2 < n) {
- cp += i1;
- if (l > lMax) l = lMax;
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
- else
- XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
- LEAVE_XLIB();
- RETURN ( self );
- }
- }
-
- /* TWOBYTESTRINGS */
- if (__isWords(aString)) {
- n = (__byteArraySize(aString) - nInstBytes) / 2;
- if (i2 < n) {
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2 = (XChar2b *)0;
- int mustFree = 0;
-
- cp += (i1 * 2);
- if (l > lMax) l = lMax;
+ int lMax = __intVal(@global(MaxStringLength));
+ Display *dpy = myDpy;
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+
+ i1 = __intVal(index1) - 1;
+ if (i1 >= 0) {
+ OBJ cls;
+
+ i2 = __intVal(index2) - 1;
+ if (i2 < i1) {
+ RETURN (self);
+ }
+ cp = (char *) __stringVal(aString);
+ l = i2 - i1 + 1;
+
+ if (__isStringLike(aString)) {
+ n = __stringSize(aString);
+ if (i2 < n) {
+ cp += i1;
+ if (l > lMax) l = lMax;
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
+ else
+ XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ }
+
+ cls = __qClass(aString);
+ nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+ cp += nInstBytes;
+
+ if (__isBytes(aString)) {
+ n = __byteArraySize(aString) - nInstBytes - 1;
+
+ if (i2 < n) {
+ cp += i1;
+ if (l > lMax) l = lMax;
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
+ else
+ XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ }
+
+ /* TWOBYTESTRINGS */
+ if (__isWords(aString)) {
+ n = (__byteArraySize(aString) - nInstBytes) / 2;
+ if (i2 < n) {
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2 = (XChar2b *)0;
+ int mustFree = 0;
+
+ cp += (i1 * 2);
+ if (l > lMax) l = lMax;
#if defined(MSBFIRST) || defined(__MSBFIRST)
- /*
- * chars already in correct order
- */
+ /*
+ * chars already in correct order
+ */
#else
# if ! (defined(LSBFIRST) || defined(__LSBFIRST))
- /*
- * ST/X TwoByteStrings store the asciiValue in native byteOrder;
- * X expects them MSB first
- * convert as required
- */
- u.s = 0x1234;
- if (u.b[0] != 0x12)
+ /*
+ * ST/X TwoByteStrings store the asciiValue in native byteOrder;
+ * X expects them MSB first
+ * convert as required
+ */
+ u.s = 0x1234;
+ if (u.b[0] != 0x12)
# endif
- {
- if (l <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(l * 2));
- mustFree = 1;
- }
- for (i=0; i<l; i++) {
- cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
- cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
- }
- cp = (char *) cp2;
- }
-#endif
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
- else
- XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
- LEAVE_XLIB();
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( self );
- }
- }
-
- /* FOURBYTESTRINGS */
- if (__isLongs(aString)) {
- n = (__byteArraySize(aString) - nInstBytes) / 4;
- if (i2 < n) {
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2 = (XChar2b *)0;
- int32 *ip;
- int mustFree = 0;
-
- cp += (i1 * 4);
- if (l > lMax) l = lMax;
-
- /*
- * all codePoints <= 16rFFFF are draw; above 16bit range are drawn as 16rFFFF.
- */
- if (l <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(l * 2));
- mustFree = 1;
- }
- for (i=0; i<l; i++) {
- int32 codePoint = ((int32 *)cp)[i];
-
- if (codePoint > 0xFFFF) {
- codePoint = 0xFFFF;
- }
- cp2[i].byte1 = (codePoint >> 8) & 0xFF;
- cp2[i].byte2 = codePoint & 0xFF;
- }
- cp = (char *) cp2;
-
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
- else
- XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
- LEAVE_XLIB();
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( self );
- }
- }
- }
+ {
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+ cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+ }
+ cp = (char *) cp2;
+ }
+#endif
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+ else
+ XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+ LEAVE_XLIB();
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( self );
+ }
+ }
+
+ /* FOURBYTESTRINGS */
+ if (__isLongs(aString)) {
+ n = (__byteArraySize(aString) - nInstBytes) / 4;
+ if (i2 < n) {
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2 = (XChar2b *)0;
+ int32 *ip;
+ int mustFree = 0;
+
+ cp += (i1 * 4);
+ if (l > lMax) l = lMax;
+
+ /*
+ * all codePoints <= 16rFFFF are draw; above 16bit range are drawn as 16rFFFF.
+ */
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ int32 codePoint = ((int32 *)cp)[i];
+
+ if (codePoint > 0xFFFF) {
+ codePoint = 0xFFFF;
+ }
+ cp2[i].byte1 = (codePoint >> 8) & 0xFF;
+ cp2[i].byte2 = codePoint & 0xFF;
+ }
+ cp = (char *) cp2;
+
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+ else
+ XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
+ LEAVE_XLIB();
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( self );
+ }
+ }
+ }
}
#undef NLOCALBUFFER
%}.
(aString isString and:[aString bitsPerCharacter > 16]) ifTrue:[
- self displayString:(TwoByteString new:aString size withAll:16rFFFF asCharacter)
- from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId opaque:opaque.
- ^ self.
+ self displayString:(TwoByteString new:aString size withAll:16rFFFF asCharacter)
+ from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId opaque:opaque.
+ ^ self.
].
"x/y not integer, badGC or drawable, or not a string"
@@ -4060,11 +4055,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -4082,98 +4077,97 @@
&& __isExternalAddress(aDrawableId)
&& __isNonNilObject(aString)
&& __bothSmallInteger(x, y)) {
- int lMax = __intVal(@global(MaxStringLength));
- Display *dpy = myDpy;
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
-
- cp = (char *) __stringVal(aString);
-
- if (__isStringLike(aString)) {
- n = __stringSize(aString);
- if (n > lMax) n = lMax;
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
- else
- XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
- LEAVE_XLIB();
- RETURN ( self );
- }
-
- cls = __qClass(aString);
- nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
- cp += nInstBytes;
-
- if (__isBytes(aString)) {
- n = __byteArraySize(aString) - nInstBytes - 1;
-
- if (n > lMax) n = lMax;
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
- else
- XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
- LEAVE_XLIB();
- RETURN ( self );
- }
-
- /* TWOBYTESTRINGS */
- if (__isWords(aString)) {
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2;
- int mustFree = 0;
-
- n = (__byteArraySize(aString) - nInstBytes) / 2;
- if (n > lMax) n = lMax;
+ int lMax = __intVal(@global(MaxStringLength));
+ Display *dpy = myDpy;
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+
+ cp = (char *) __stringVal(aString);
+
+ if (__isStringLike(aString)) {
+ n = __stringSize(aString);
+ if (n > lMax) n = lMax;
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
+ else
+ XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+
+ cls = __qClass(aString);
+ nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+ cp += nInstBytes;
+
+ if (__isBytes(aString)) {
+ n = __byteArraySize(aString) - nInstBytes - 1;
+
+ if (n > lMax) n = lMax;
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
+ else
+ XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+
+ /* TWOBYTESTRINGS */
+ if (__isWords(aString)) {
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2;
+ int mustFree = 0;
+
+ n = (__byteArraySize(aString) - nInstBytes) / 2;
+ if (n > lMax) n = lMax;
#if defined(MSBFIRST) || defined(__MSBFIRST)
- /*
- * chars already in correct order
- */
+ /*
+ * chars already in correct order
+ */
#else
# if ! (defined(LSBFIRST) || defined(__LSBFIRST))
- /*
- * ST/X TwoByteStrings store the asciiValue in native byteOrder;
- * X expects them MSB first
- * convert as required
- */
- u.s = 0x1234;
- if (u.b[0] != 0x12)
+ /*
+ * ST/X TwoByteStrings store the asciiValue in native byteOrder;
+ * X expects them MSB first
+ * convert as required
+ */
+ u.s = 0x1234;
+ if (u.b[0] != 0x12)
# endif
- {
- if (n <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(n * 2));
- mustFree = 1;
- }
-
- for (i=0; i<n; i++) {
- cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
- cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
- }
- cp = (char *) cp2;
- }
-#endif
- ENTER_XLIB();
- if (opaque == true)
- XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
- else
- XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
- LEAVE_XLIB();
-
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( self );
- }
+ {
+ if (n <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(n * 2));
+ mustFree = 1;
+ }
+
+ for (i=0; i<n; i++) {
+ cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+ cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+ }
+ cp = (char *) cp2;
+ }
+#endif
+ ENTER_XLIB();
+ if (opaque == true)
+ XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
+ else
+ XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
+ LEAVE_XLIB();
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( self );
+ }
}
#undef NLOCALBUFFER
%}.
@@ -4181,12 +4175,12 @@
!
drawBits:givenBits bitsPerPixel:bitsPerPixel depth:imageDepth padding:givenPadding
- width:imageWidth height:imageHeight
- x:srcx y:srcy
- into:aDrawableId
- x:dstx y:dsty
- width:w height:h
- with:aGCId
+ width:imageWidth height:imageHeight
+ x:srcx y:srcy
+ into:aDrawableId
+ x:dstx y:dsty
+ width:w height:h
+ with:aGCId
"draw a bitImage which has depth id, width iw and height ih into
the drawable. draw a region of w/h pixels from srcx/srcy to dstx/dsty.
@@ -4208,70 +4202,70 @@
"/ care for that.
((imageDepth == 4) and:[depth == 4]) ifTrue:[
- fmt := self supportedImageFormatForDepth:4.
- fmt isNil ifTrue:[
- self primitiveFailed. "/ cannot represent this image
- ^ nil
- ].
- wantedPadding := fmt at:#padding.
- wantedPadding > givenPadding ifTrue:[
- bits := self
- repadBits:givenBits
- width:imageWidth
- height:imageHeight
- depth:imageDepth
- from:givenPadding
- to:wantedPadding.
- padding := wantedPadding.
- ]
+ fmt := self supportedImageFormatForDepth:4.
+ fmt isNil ifTrue:[
+ self primitiveFailed. "/ cannot represent this image
+ ^ nil
+ ].
+ wantedPadding := fmt at:#padding.
+ wantedPadding > givenPadding ifTrue:[
+ bits := self
+ repadBits:givenBits
+ width:imageWidth
+ height:imageHeight
+ depth:imageDepth
+ from:givenPadding
+ to:wantedPadding.
+ padding := wantedPadding.
+ ]
].
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
"
sorry; I had to separate it into 2 methods, since XPutImage needs
an unlimited stack, and thus cannot send primitiveFailed
"
(self
- primDrawBits:bits
- bitsPerPixel:bitsPerPixel
- depth:imageDepth
- msb:true
- padding:padding
- width:imageWidth height:imageHeight
- x:srcx y:srcy
- into:aDrawableId
- x:dstx y:dsty
- width:w height:h
- with:aGCId)
+ primDrawBits:bits
+ bitsPerPixel:bitsPerPixel
+ depth:imageDepth
+ msb:true
+ padding:padding
+ width:imageWidth height:imageHeight
+ x:srcx y:srcy
+ into:aDrawableId
+ x:dstx y:dsty
+ width:w height:h
+ with:aGCId)
ifFalse:[
- "
- also happens, if a segmentation violation occurs in the
- XPutImage ...
- "
- self primitiveFailedOrClosedConnection
+ "
+ also happens, if a segmentation violation occurs in the
+ XPutImage ...
+ "
+ self primitiveFailedOrClosedConnection
].
!
fillArcX:x y:y width:width height:height from:startAngle angle:angle
- in:aDrawableId with:aGCId
+ in:aDrawableId with:aGCId
"fill an arc. If any coordinate is not integer, an error is triggered.
The angles may be floats or integer - they are given in degrees."
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -4281,23 +4275,23 @@
double f;
if (__isSmallInteger(startAngle))
- angle1 = __intVal(startAngle) * 64;
+ angle1 = __intVal(startAngle) * 64;
else if (__isFloat(startAngle)) {
- f = __floatVal(startAngle);
- angle1 = f * 64;
+ f = __floatVal(startAngle);
+ angle1 = f * 64;
} else if (__isShortFloat(startAngle)) {
- f = __shortFloatVal(startAngle);
- angle1 = f * 64;
+ f = __shortFloatVal(startAngle);
+ angle1 = f * 64;
} else goto bad;
if (__isSmallInteger(angle))
- angle2 = __intVal(angle) * 64;
+ angle2 = __intVal(angle) * 64;
else if (__isFloat(angle)) {
- f = __floatVal(angle);
- angle2 = f * 64;
+ f = __floatVal(angle);
+ angle2 = f * 64;
} else if (__isShortFloat(angle)) {
- f = __shortFloatVal(angle);
- angle2 = f * 64;
+ f = __shortFloatVal(angle);
+ angle2 = f * 64;
} else goto bad;
if (ISCONNECTED
@@ -4305,20 +4299,20 @@
&& __isExternalAddress(aDrawableId)
&& __bothSmallInteger(x, y)
&& __bothSmallInteger(width, height)) {
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
- w = __intVal(width);
- h = __intVal(height);
- /*
- * need this check here: some servers simply dump core with bad args
- */
- if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
- ENTER_XLIB();
- XFillArc(myDpy, win, gc, __intVal(x), __intVal(y),
- w, h, angle1, angle2);
- LEAVE_XLIB();
- }
- RETURN ( self );
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ w = __intVal(width);
+ h = __intVal(height);
+ /*
+ * need this check here: some servers simply dump core with bad args
+ */
+ if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
+ ENTER_XLIB();
+ XFillArc(myDpy, win, gc, __intVal(x), __intVal(y),
+ w, h, angle1, angle2);
+ LEAVE_XLIB();
+ }
+ RETURN ( self );
}
bad: ;
%}.
@@ -4337,11 +4331,11 @@
|numberOfPoints|
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
numberOfPoints := aPolygon size.
%{
@@ -4357,41 +4351,41 @@
&& __isExternalAddress(aGCId)
&& __isExternalAddress(aDrawableId)
&& __isSmallInteger(numberOfPoints)) {
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
- num = __intVal(numberOfPoints);
- if (num < 3) {
- RETURN ( self );
- }
- /*
- * avoid (slow) malloc, if not many points
- */
- if (num > 100) {
- points = (XPoint *) malloc(sizeof(XPoint) * num);
- if (! points) goto fail;
- mustFree = 1;
- } else
- points = qPoints;
- for (i=0; i<num; i++) {
- point = __AT_(aPolygon, __MKSMALLINT(i+1));
- if (! __isPoint(point)) goto fail;
- x = _point_X(point);
- y = _point_Y(point);
- if (! __bothSmallInteger(x, y))
- goto fail;
- points[i].x = __intVal(x);
- points[i].y = __intVal(y);
- }
- ENTER_XLIB();
- XFillPolygon(myDpy, win, gc, points, num, Complex, CoordModeOrigin);
- LEAVE_XLIB();
- if (mustFree)
- free(points);
- RETURN ( self );
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ num = __intVal(numberOfPoints);
+ if (num < 3) {
+ RETURN ( self );
+ }
+ /*
+ * avoid (slow) malloc, if not many points
+ */
+ if (num > 100) {
+ points = (XPoint *) malloc(sizeof(XPoint) * num);
+ if (! points) goto fail;
+ mustFree = 1;
+ } else
+ points = qPoints;
+ for (i=0; i<num; i++) {
+ point = __AT_(aPolygon, __MKSMALLINT(i+1));
+ if (! __isPoint(point)) goto fail;
+ x = _point_X(point);
+ y = _point_Y(point);
+ if (! __bothSmallInteger(x, y))
+ goto fail;
+ points[i].x = __intVal(x);
+ points[i].y = __intVal(y);
+ }
+ ENTER_XLIB();
+ XFillPolygon(myDpy, win, gc, points, num, Complex, CoordModeOrigin);
+ LEAVE_XLIB();
+ if (mustFree)
+ free(points);
+ RETURN ( self );
fail: ;
- if (mustFree)
- free(points);
+ if (mustFree)
+ free(points);
}
%}.
"badGC, badDrawable or coordinates not integer"
@@ -4404,11 +4398,11 @@
<context: #return>
operationsUntilFlush notNil ifTrue:[
- operationsUntilFlush <= 0 ifTrue:[
- self flush.
- ] ifFalse:[
- operationsUntilFlush := operationsUntilFlush - 1.
- ].
+ operationsUntilFlush <= 0 ifTrue:[
+ self flush.
+ ] ifFalse:[
+ operationsUntilFlush := operationsUntilFlush - 1.
+ ].
].
%{
@@ -4419,19 +4413,19 @@
&& __isExternalAddress(aDrawableId)
&& __bothSmallInteger(x, y)
&& __bothSmallInteger(width, height)) {
- w = __intVal(width);
- h = __intVal(height);
- /*
- * need this check here: some servers simply dump core with bad args
- */
- if ((w >= 0) && (h >= 0)) {
- ENTER_XLIB();
- XFillRectangle(myDpy,
- __DrawableVal(aDrawableId), __GCVal(aGCId),
- __intVal(x), __intVal(y), w, h);
- LEAVE_XLIB();
- }
- RETURN ( self );
+ w = __intVal(width);
+ h = __intVal(height);
+ /*
+ * need this check here: some servers simply dump core with bad args
+ */
+ if ((w >= 0) && (h >= 0)) {
+ ENTER_XLIB();
+ XFillRectangle(myDpy,
+ __DrawableVal(aDrawableId), __GCVal(aGCId),
+ __intVal(x), __intVal(y), w, h);
+ LEAVE_XLIB();
+ }
+ RETURN ( self );
}
%}.
"badGC, badDrawable or coordinates not integer"
@@ -4439,10 +4433,10 @@
!
primDrawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth msb:msb masks:maskArray padding:bitPadding
- extent:imageExtent sourceOrigin:srcOrg
- into:aDrawableId
- destinationOrigin:dstOrg extent:dstExtent
- with:aGCId
+ extent:imageExtent sourceOrigin:srcOrg
+ into:aDrawableId
+ destinationOrigin:dstOrg extent:dstExtent
+ with:aGCId
<context: #return>
@@ -4486,57 +4480,57 @@
&& __bothSmallInteger(rm, gm)
&& __isSmallInteger(bm)
&& __isByteArrayLike(imageBits)) {
- Display *dpy = myDpy;
- int pad = __intVal(bitPadding);
-
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
- if (! gc || !win)
- goto fail;
+ Display *dpy = myDpy;
+ int pad = __intVal(bitPadding);
+
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ if (! gc || !win)
+ goto fail;
#ifdef ARGDEBUG
- console_printf("args ok\n");
-#endif
- image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
- image.width = imgWdth = __intVal(imageWidth);
- image.height = __intVal(imageHeight);
- image.xoffset = 0;
- image.format = ZPixmap;
- image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
- image.bitmap_unit = 8;
- image.bitmap_bit_order = MSBFirst;
- image.bitmap_pad = pad;
- image.depth = __intVal(imageDepth);
- image.bits_per_pixel = __intVal(bitsPerPixel);
- image.red_mask = __intVal(rm);
- image.green_mask = __intVal(gm);
- image.blue_mask = __intVal(bm);
-
- image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
-
- switch (image.bits_per_pixel) {
- case 1:
- case 2:
- case 4:
- case 8:
- case 16:
- case 24:
- case 32:
- break;
-
- default:
+ console_printf("args ok\n");
+#endif
+ image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
+ image.width = imgWdth = __intVal(imageWidth);
+ image.height = __intVal(imageHeight);
+ image.xoffset = 0;
+ image.format = ZPixmap;
+ image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
+ image.bitmap_unit = 8;
+ image.bitmap_bit_order = MSBFirst;
+ image.bitmap_pad = pad;
+ image.depth = __intVal(imageDepth);
+ image.bits_per_pixel = __intVal(bitsPerPixel);
+ image.red_mask = __intVal(rm);
+ image.green_mask = __intVal(gm);
+ image.blue_mask = __intVal(bm);
+
+ image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
+
+ switch (image.bits_per_pixel) {
+ case 1:
+ case 2:
+ case 4:
+ case 8:
+ case 16:
+ case 24:
+ case 32:
+ break;
+
+ default:
#ifdef ARGDEBUG
- console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
-#endif
- goto fail;
- }
-
- /* ENTER_XLIB(); */
- XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
- __intVal(dstx), __intVal(dsty),
- __intVal(w), __intVal(h));
- /* LEAVE_XLIB(); */
-
- RETURN ( true );
+ console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
+#endif
+ goto fail;
+ }
+
+ /* ENTER_XLIB(); */
+ XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
+ __intVal(dstx), __intVal(dsty),
+ __intVal(w), __intVal(h));
+ /* LEAVE_XLIB(); */
+
+ RETURN ( true );
}
#ifdef ARGDEBUG
if (!! __isExternalAddress(aGCId)) console_printf("GC\n");
@@ -4561,12 +4555,12 @@
!
primDrawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth msb:msb padding:bitPadding
- width:imageWidth height:imageHeight
- x:srcx y:srcy
- into:aDrawableId
- x:dstx y:dsty
- width:w height:h
- with:aGCId
+ width:imageWidth height:imageHeight
+ x:srcx y:srcy
+ into:aDrawableId
+ x:dstx y:dsty
+ width:w height:h
+ with:aGCId
<context: #return>
@@ -4594,61 +4588,61 @@
&& __bothSmallInteger(imageDepth, bitsPerPixel)
&& __isSmallInteger(bitPadding)
&& __isByteArrayLike(imageBits)) {
- Display *dpy = myDpy;
- int pad = __intVal(bitPadding);
-
- gc = __GCVal(aGCId);
- win = __WindowVal(aDrawableId);
- if (! gc || !win)
- goto fail;
+ Display *dpy = myDpy;
+ int pad = __intVal(bitPadding);
+
+ gc = __GCVal(aGCId);
+ win = __WindowVal(aDrawableId);
+ if (! gc || !win)
+ goto fail;
#ifdef ARGDEBUG
- console_printf("args ok\n");
-#endif
- image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
- image.width = imgWdth = __intVal(imageWidth);
- image.height = __intVal(imageHeight);
- image.xoffset = 0;
- image.format = ZPixmap;
- image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
- image.bitmap_unit = 8;
- image.bitmap_bit_order = MSBFirst;
- image.bitmap_pad = pad;
- image.depth = __intVal(imageDepth);
- image.bits_per_pixel = __intVal(bitsPerPixel);
-
- /*
- image.bytes_per_line = ((((imgWdth * image.depth) + (pad-1)) / pad) * pad) / 8;
- */
- image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
-
- switch (image.bits_per_pixel) {
- case 1:
- case 2:
- case 4:
- case 8:
- case 16:
- case 24:
- case 32:
- break;
-
- default:
+ console_printf("args ok\n");
+#endif
+ image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
+ image.width = imgWdth = __intVal(imageWidth);
+ image.height = __intVal(imageHeight);
+ image.xoffset = 0;
+ image.format = ZPixmap;
+ image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
+ image.bitmap_unit = 8;
+ image.bitmap_bit_order = MSBFirst;
+ image.bitmap_pad = pad;
+ image.depth = __intVal(imageDepth);
+ image.bits_per_pixel = __intVal(bitsPerPixel);
+
+ /*
+ image.bytes_per_line = ((((imgWdth * image.depth) + (pad-1)) / pad) * pad) / 8;
+ */
+ image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
+
+ switch (image.bits_per_pixel) {
+ case 1:
+ case 2:
+ case 4:
+ case 8:
+ case 16:
+ case 24:
+ case 32:
+ break;
+
+ default:
#ifdef ARGDEBUG
- console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
-#endif
- goto fail;
- }
-
- image.red_mask = 0xFFFF;
- image.green_mask = 0xFFFF;
- image.blue_mask = 0xFFFF;
-
- /* ENTER_XLIB(); */
- XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
- __intVal(dstx), __intVal(dsty),
- __intVal(w), __intVal(h));
- /* LEAVE_XLIB(); */
-
- RETURN ( true );
+ console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
+#endif
+ goto fail;
+ }
+
+ image.red_mask = 0xFFFF;
+ image.green_mask = 0xFFFF;
+ image.blue_mask = 0xFFFF;
+
+ /* ENTER_XLIB(); */
+ XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
+ __intVal(dstx), __intVal(dsty),
+ __intVal(w), __intVal(h));
+ /* LEAVE_XLIB(); */
+
+ RETURN ( true );
}
#ifdef ARGDEBUG
if (!! __isExternalAddress(aGCId)) console_printf("GC\n");
@@ -4705,29 +4699,29 @@
].
logicalButton isInteger ifTrue:[
- buttonsPressed := buttonsPressed bitOr:(1 bitShift:logicalButton-1).
+ buttonsPressed := buttonsPressed bitOr:(1 bitShift:logicalButton-1).
].
(multiClickTimeDelta notNil and:[lastButtonPressTime notNil]) ifTrue:[
- time < (lastButtonPressTime + multiClickTimeDelta) ifTrue:[
- lastButtonPressTime := time.
- self buttonMultiPress:logicalButton x:x y:y view:view.
- ^ self.
- ].
+ time < (lastButtonPressTime + multiClickTimeDelta) ifTrue:[
+ lastButtonPressTime := time.
+ self buttonMultiPress:logicalButton x:x y:y view:view.
+ ^ self.
+ ].
].
lastButtonPressTime := time.
view isNil ifTrue:[
- "/ event arrived, after I destroyed it myself
- ^ self
+ "/ event arrived, after I destroyed it myself
+ ^ self
].
logicalButton == 1 ifTrue:[
- activateOnClick == true ifTrue:[
- "/ dont raise above an active popup view.
- (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
- view topView raise.
- ]
- ].
+ activateOnClick == true ifTrue:[
+ "/ dont raise above an active popup view.
+ (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
+ view topView raise.
+ ]
+ ].
].
super buttonPress:logicalButton x:x y:y view:view
!
@@ -4755,7 +4749,7 @@
].
logicalButton isInteger ifTrue:[
- buttonsPressed := buttonsPressed bitClear:(1 bitShift:logicalButton-1).
+ buttonsPressed := buttonsPressed bitClear:(1 bitShift:logicalButton-1).
].
self buttonRelease:logicalButton x:x y:y view:view
!
@@ -4764,20 +4758,20 @@
|sensor|
targetView isNil ifTrue:[
- "targetView is gone? Anyway, cannot do anything with this event..."
- ^ self.
+ "targetView is gone? Anyway, cannot do anything with this event..."
+ ^ self.
].
"DND drag&drop protocol"
(format == 32 and:[typeAtom == (self atomIDOf:#DndProtocol)]) ifTrue:[
- self dndMessage:nil data:data view:targetView.
- ^ self.
+ self dndMessage:nil data:data view:targetView.
+ ^ self.
].
sensor := targetView sensor.
"not posted, if there is no sensor ..."
sensor notNil ifTrue:[
- sensor clientMessage:typeAtom format:format eventData:data view:targetView
+ sensor clientMessage:typeAtom format:format eventData:data view:targetView
].
"Created: 4.4.1997 / 17:49:26 / cg"
@@ -4788,20 +4782,20 @@
self configureX:x y:y width:w height:h view:view.
above notNil ifTrue:[
- |aboveView|
- aboveView := self viewFromId:above.
- aboveView notNil ifTrue:[
- "view is now on the top of the window stack"
- self coveredBy:view view:aboveView.
- ].
+ |aboveView|
+ aboveView := self viewFromId:above.
+ aboveView notNil ifTrue:[
+ "view is now on the top of the window stack"
+ self coveredBy:view view:aboveView.
+ ].
].
!
createWindow:view x:x y:y width:w height:h
view isNil ifTrue:[
- "/ event arrived, after I destroyed it myself
- ^ self
+ "/ event arrived, after I destroyed it myself
+ ^ self
].
view sensor createWindow:view x:x y:y width:w height:h
@@ -4820,9 +4814,9 @@
dropType := (self dndDropTypes) at:dropType+1 ifAbsent:#DndNotDnd.
property := self
- getProperty:(self atomIDOf:#DndSelection)
- from:rootId
- delete:false.
+ getProperty:(self atomIDOf:#DndSelection)
+ from:rootId
+ delete:false.
propertyType := property key.
dropValue := property value.
@@ -4836,70 +4830,70 @@
"/ in the default dropMessage handling of SimpleView.
dropType == #DndFiles ifTrue:[
- "/ actually, a list of fileNames
- propertyType ~~ stringAtom ifTrue:[
- 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
- ^ self
- ].
-
- names := OrderedCollection new.
- i1 := 1.
- [i1 ~~ 0] whileTrue:[
- i2 := dropValue indexOf:(Character value:0) startingAt:i1.
- i2 ~~ 0 ifTrue:[
- names add:(dropValue copyFrom:i1 to:(i2-1)).
- i1 := i2 + 1.
- ] ifFalse:[
- i1 := i2
- ].
- ].
- dropValue := names.
- dropValue := dropValue collect:[:nm | nm asFilename].
- dropType := #files.
+ "/ actually, a list of fileNames
+ propertyType ~~ stringAtom ifTrue:[
+ 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+ ^ self
+ ].
+
+ names := OrderedCollection new.
+ i1 := 1.
+ [i1 ~~ 0] whileTrue:[
+ i2 := dropValue indexOf:(Character value:0) startingAt:i1.
+ i2 ~~ 0 ifTrue:[
+ names add:(dropValue copyFrom:i1 to:(i2-1)).
+ i1 := i2 + 1.
+ ] ifFalse:[
+ i1 := i2
+ ].
+ ].
+ dropValue := names.
+ dropValue := dropValue collect:[:nm | nm asFilename].
+ dropType := #files.
] ifFalse:[ (dropType == #DndFile) ifTrue:[
- propertyType ~~ stringAtom ifTrue:[
- 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
- ^ self
- ].
- dropValue := dropValue asFilename.
- dropType := #file.
+ propertyType ~~ stringAtom ifTrue:[
+ 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+ ^ self
+ ].
+ dropValue := dropValue asFilename.
+ dropType := #file.
] ifFalse:[ (dropType == #DndDir) ifTrue:[
- propertyType ~~ stringAtom ifTrue:[
- 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
- ^ self
- ].
- dropValue := dropValue asFilename.
- dropType := #directory.
+ propertyType ~~ stringAtom ifTrue:[
+ 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+ ^ self
+ ].
+ dropValue := dropValue asFilename.
+ dropType := #directory.
] ifFalse:[ (dropType == #DndText) ifTrue:[
- propertyType ~~ stringAtom ifTrue:[
- 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
- ^ self
- ].
- dropType := #text.
+ propertyType ~~ stringAtom ifTrue:[
+ 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+ ^ self
+ ].
+ dropType := #text.
] ifFalse:[ (dropType == #DndExe) ifTrue:[
- propertyType ~~ stringAtom ifTrue:[
- 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
- ^ self
- ].
- dropType := #executable.
+ propertyType ~~ stringAtom ifTrue:[
+ 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+ ^ self
+ ].
+ dropType := #executable.
] ifFalse:[ (dropType == #DndLink) ifTrue:[
- propertyType ~~ stringAtom ifTrue:[
- 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
- ^ self
- ].
- dropType := #link.
+ propertyType ~~ stringAtom ifTrue:[
+ 'XWorkstation [info]: expected a string propertyValue in drop' infoPrintCR.
+ ^ self
+ ].
+ dropType := #link.
] ifFalse:[ (dropType == #DndRawData) ifTrue:[
- dropType := #rawData.
+ dropType := #rawData.
] ifFalse:[
- 'XWorkstation [info]: unsupported dropType: ' infoPrint. dropType infoPrintCR.
- 'XWorkstation [info]: data: ' infoPrint. dropValue infoPrintCR.
- dropType := #unknown.
+ 'XWorkstation [info]: unsupported dropType: ' infoPrint. dropType infoPrintCR.
+ 'XWorkstation [info]: data: ' infoPrint. dropValue infoPrintCR.
+ dropType := #unknown.
]]]]]]].
sensor := targetView sensor.
"not posted, if there is no sensor ..."
sensor notNil ifTrue:[
- sensor dropMessage:dropType data:dropValue view:targetView position:nil handle:nil
+ sensor dropMessage:dropType data:dropValue view:targetView position:nil handle:nil
].
"Created: 4.4.1997 / 17:59:37 / cg"
@@ -4919,8 +4913,8 @@
"a view got the keyboard focus"
mode ~~ 1 "NotifyGrab" ifTrue:[
- "mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
- self focusInView:view
+ "mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
+ self focusInView:view
].
!
@@ -4928,8 +4922,8 @@
"a view lost the keyboard focus"
mode ~~ 1 "NotifyGrab" ifTrue:[
- "mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
- self focusOutView:view
+ "mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
+ self focusOutView:view
].
!
@@ -4954,9 +4948,9 @@
shiftDown := state bitTest:(self shiftModifierMask).
ctrlDown := state bitTest:(self ctrlModifierMask).
key isNil ifTrue:[
- "/ happens sometimes on some systems
- "/ (alt-graph on sun has no keysym)
- ^ self
+ "/ happens sometimes on some systems
+ "/ (alt-graph on sun has no keysym)
+ ^ self
].
eventRootX := rX.
eventRootY := rY.
@@ -4979,9 +4973,9 @@
ctrlDown := state bitTest:(self ctrlModifierMask).
key isNil ifTrue:[
- "/ happens sometimes on some systems
- "/ (alt-graph on sun has no keysym)
- ^ self
+ "/ happens sometimes on some systems
+ "/ (alt-graph on sun has no keysym)
+ ^ self
].
eventRootX := rX.
eventRootY := rY.
@@ -4997,9 +4991,9 @@
Tell xlib about the fact."
(what == #mappingKeyboard or:[what == #mappingModifier]) ifTrue:[
- self refreshKeyboardMapping:eB.
- "Maybe some of our modifiers have been changed"
- self initializeModifierMappings.
+ self refreshKeyboardMapping:eB.
+ "Maybe some of our modifiers have been changed"
+ self initializeModifierMappings.
].
!
@@ -5040,8 +5034,8 @@
lastEventTime := time.
aView isNil ifTrue:[
- "event arrived, after aView has been destroyed"
- ^ self
+ "event arrived, after aView has been destroyed"
+ ^ self
].
"/ 'propertyChange ' infoPrint. (self atomName:propertyId) print. ': ' print. aSymbol printCR.
@@ -5053,12 +5047,12 @@
aView sensor propertyChange:aView property:propertyId state:aSymbol time:time.
aSymbol ~~ #newValue ifTrue:[
- "I am not interested in delete notifications"
- ^ self.
+ "I am not interested in delete notifications"
+ ^ self.
].
selectionFetcher := self findSelectionFetcher:aView id.
selectionFetcher notNil ifTrue:[
- selectionFetcher message:thisContext message.
+ selectionFetcher message:thisContext message.
].
"Modified: / 01-06-2011 / 13:40:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -5106,12 +5100,12 @@
lastEventTime := time.
aView isNil ifTrue:[
- "event arrived, after aView has been destroyed"
- ^ self
+ "event arrived, after aView has been destroyed"
+ ^ self
].
selectionFetcher := self findSelectionFetcher:aView id.
selectionFetcher notNil ifTrue:[
- selectionFetcher message:thisContext message.
+ selectionFetcher message:thisContext message.
].
!
@@ -5119,18 +5113,35 @@
"sent by some other X-client to ask for the selection.
This is a very X-specific mechanism."
- |selection property|
-
-'Selection: ' print. (self atomName:selectionID) printCR. ' TargetId: ' print. (self atomName:targetID) printCR.
-' Property: ' print. (self atomName:propertyID) printCR. ' Requestor: ' print. requestorID printCR.
+ |selection property bufferGetSelector responseTargetID selectionTime|
+
+"/'Selection: ' print. (self atomName:selectionID) printCR. ' TargetId: ' print. (self atomName:targetID) printCR.
+"/' Property: ' print. (self atomName:propertyID) printCR. ' Requestor: ' print. requestorID printCR.
lastEventTime := time.
+
"JV@2012-03-27: Support both PRIMARY and CLIPBOARD selections"
selectionID == primaryAtom ifTrue:[
- selection := self primaryBufferAs:targetID.
+ bufferGetSelector := #getPrimaryBuffer.
+ selectionTime := primarySelectionTime.
] ifFalse:[
- selection := self copyBufferAs:targetID.
- ].
+ bufferGetSelector := #getCopyBuffer.
+ selectionTime := clipboardSelectionTime.
+ ].
+
+ (targetID == (self atomIDOf:#TIMESTAMP)) ifTrue:[
+ "the other view wants to know when we acquired ownership of the selection"
+ responseTargetID := self atomIDOf:#INTEGER.
+ selection := selectionTime.
+ ] ifFalse:[(targetID == (self atomIDOf:#TARGETS)) ifTrue:[
+ "the other view wants to know which targets we support"
+ responseTargetID := self atomIDOf:#ATOM.
+ selection := self supportedTargetAtoms.
+ ] ifFalse:[
+ selection := self selectionBuffer:bufferGetSelector as:targetID.
+ responseTargetID := selection key.
+ selection := selection value.
+ ]].
"/'Send selection: ' print. selection printCR.
@@ -5145,17 +5156,17 @@
property == 0 ifTrue:[
"Support old (obsolete) clients requesting a None property.
Set the propertyID to the targetID"
- property := targetID.
+ property := responseTargetID.
].
self setProperty:property
- type:targetID
+ type:responseTargetID
value:selection
for:requestorID.
].
self sendNotifySelection:selectionID
property:property
- target:targetID
+ target:responseTargetID
time:time
to:requestorID.
@@ -5165,7 +5176,7 @@
visibilityNotify:aView state:how
aView notNil ifTrue:[
- aView visibilityChange:how
+ aView visibilityChange:how
]
! !
@@ -5187,8 +5198,8 @@
This is a very X-specific mechanism."
aView isNil ifTrue:[
- "/ event arrived, after I destroyed it myself
- ^ self
+ "/ event arrived, after I destroyed it myself
+ ^ self
].
"/ not yet implemented
"/ aView colorMapChange
@@ -5236,11 +5247,11 @@
%{ /* NOCONTEXT */
RETURN (__MKSMALLINT( ExposureMask | StructureNotifyMask |
- KeyPressMask | KeyReleaseMask |
- PointerMotionMask |
- EnterWindowMask | LeaveWindowMask |
- ButtonPressMask | ButtonMotionMask | ButtonReleaseMask |
- PropertyChangeMask ));
+ KeyPressMask | KeyReleaseMask |
+ PointerMotionMask |
+ EnterWindowMask | LeaveWindowMask |
+ ButtonPressMask | ButtonMotionMask | ButtonReleaseMask |
+ PropertyChangeMask ));
%}
!
@@ -5249,21 +5260,21 @@
viewId := evArray at:1.
viewId notNil ifTrue:[
- viewId = lastId ifTrue:[
- view := lastView
- ] ifFalse:[
- view := self viewFromId:viewId
- ].
+ viewId = lastId ifTrue:[
+ view := lastView
+ ] ifFalse:[
+ view := self viewFromId:viewId
+ ].
].
evType := evArray at:3.
(self respondsTo:evType) ifTrue:[
- arguments := evArray copyFrom:3 to:(3 + evType numArgs - 1).
- arguments at:1 put:view.
-
- self perform:evType withArguments:arguments.
- ^ true.
+ arguments := evArray copyFrom:3 to:(3 + evType numArgs - 1).
+ arguments at:1 put:view.
+
+ self perform:evType withArguments:arguments.
+ ^ true.
].
'********** unhandled event:' errorPrintCR.
evType errorPrintCR. (evArray at:2) errorPrintCR.
@@ -5279,18 +5290,18 @@
If the argument aMask is nonNil, only events for this eventMask are
handled.
WARNING: this may block to wait for an event - you better check for a
- pending event before calling this."
+ pending event before calling this."
|eventArray|
eventArray := Array new:13.
(self getEventFor:aViewIdOrNil withMask:eventMask into:eventArray) ifTrue:[
- AbortOperationRequest handle:[:ex |
- ex return
- ] do:[
- self dispatchEvent:eventArray.
- ]
+ AbortOperationRequest handle:[:ex |
+ ex return
+ ] do:[
+ self dispatchEvent:eventArray.
+ ]
].
"Modified: 19.8.1997 / 17:10:42 / cg"
@@ -5301,7 +5312,7 @@
If the argument aViewIdOrNil is nil, events for any view are processed,
otherwise only events for the view with given id are processed.
WARNING: this may block to wait for an event - you better check for a
- pending event before calling this."
+ pending event before calling this."
self dispatchEventFor:aViewIdOrNil withMask:(self eventMaskFor:#expose)
@@ -5312,10 +5323,10 @@
preWaitAction := [self flush].
Processor addPreWaitAction:preWaitAction.
[
- super dispatchLoop
+ super dispatchLoop
] ensure:[
- Processor removePreWaitAction:preWaitAction.
- preWaitAction := nil.
+ Processor removePreWaitAction:preWaitAction.
+ preWaitAction := nil.
].
!
@@ -5333,26 +5344,26 @@
|eventArray|
dispatchingExpose notNil ifTrue:[
- [self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[
- self dispatchExposeEventFor:dispatchingExpose
- ].
- ^ self
+ [self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[
+ self dispatchExposeEventFor:dispatchingExpose
+ ].
+ ^ self
].
[self eventPendingWithSync:false] whileTrue:[
- eventArray isNil ifTrue:[
- eventArray := Array new:13.
- ].
- (self getEventFor:nil withMask:nil into:eventArray) ifTrue:[
- AbortOperationRequest handle:[:ex |
- ex return
- ] do:[
- self dispatchEvent:eventArray.
- "/ multi-screen config: give others a chance
- "/ (needed because we run at high (non-timesliced) prio)
- Processor yield.
- ]
- ].
+ eventArray isNil ifTrue:[
+ eventArray := Array new:13.
+ ].
+ (self getEventFor:nil withMask:nil into:eventArray) ifTrue:[
+ AbortOperationRequest handle:[:ex |
+ ex return
+ ] do:[
+ self dispatchEvent:eventArray.
+ "/ multi-screen config: give others a chance
+ "/ (needed because we run at high (non-timesliced) prio)
+ Processor yield.
+ ]
+ ].
]
"Modified: 19.8.1997 / 17:11:18 / cg"
@@ -5372,17 +5383,17 @@
if (ISCONNECTED
&& __isSmallInteger(aMask)) {
- Display *dpy = myDpy;
-
- ENTER_XLIB();
- if (__isExternalAddress(aWindowIdOrNil)) {
- win = __WindowVal(aWindowIdOrNil);
- while (XCheckWindowEvent(dpy, win, __intVal(aMask), &ev)) ;;
- } else {
- while (XCheckMaskEvent(dpy, __intVal(aMask), &ev)) ;;
- }
- LEAVE_XLIB();
- RETURN ( self );
+ Display *dpy = myDpy;
+
+ ENTER_XLIB();
+ if (__isExternalAddress(aWindowIdOrNil)) {
+ win = __WindowVal(aWindowIdOrNil);
+ while (XCheckWindowEvent(dpy, win, __intVal(aMask), &ev)) ;;
+ } else {
+ while (XCheckMaskEvent(dpy, __intVal(aMask), &ev)) ;;
+ }
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -5428,7 +5439,7 @@
ConservativeSync == true ifTrue:[self sync].
dispatchingExpose notNil ifTrue:[
- ^ self exposeEventPendingFor:dispatchingExpose withSync:false
+ ^ self exposeEventPendingFor:dispatchingExpose withSync:false
].
^ self eventPendingWithSync:false
@@ -5453,23 +5464,23 @@
OBJ rslt = false;
if (ISCONNECTED && __isSmallInteger(anEventMask)) {
- Display *dpy = myDpy;
-
- ENTER_XLIB();
- if (doSync == true) {
- XSync(dpy, 0); /* make certain everything is flushed */
- }
- if (__isExternalAddress(aWindowIdOrNil)) {
- win = __WindowVal(aWindowIdOrNil);
- thereIsOne = XCheckWindowEvent(dpy, win, __intVal(anEventMask), &ev);
- } else {
- thereIsOne = XCheckMaskEvent(dpy, __intVal(anEventMask), &ev);
- }
- if (thereIsOne) {
- XPutBackEvent(dpy, &ev);
- rslt = true;
- }
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+ ENTER_XLIB();
+ if (doSync == true) {
+ XSync(dpy, 0); /* make certain everything is flushed */
+ }
+ if (__isExternalAddress(aWindowIdOrNil)) {
+ win = __WindowVal(aWindowIdOrNil);
+ thereIsOne = XCheckWindowEvent(dpy, win, __intVal(anEventMask), &ev);
+ } else {
+ thereIsOne = XCheckMaskEvent(dpy, __intVal(anEventMask), &ev);
+ }
+ if (thereIsOne) {
+ XPutBackEvent(dpy, &ev);
+ rslt = true;
+ }
+ LEAVE_XLIB();
}
RETURN ( rslt );
%}
@@ -5485,20 +5496,20 @@
OBJ rslt = false;
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- if (XEventsQueued(dpy, QueuedAlready)) {
- RETURN (true);
- }
-
- ENTER_XLIB();
- if (doSync == true) {
- XSync(dpy, 0); /* make certain everything is flushed */
- }
- if (XPending(dpy)) {
- rslt = true;
- }
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+ if (XEventsQueued(dpy, QueuedAlready)) {
+ RETURN (true);
+ }
+
+ ENTER_XLIB();
+ if (doSync == true) {
+ XSync(dpy, 0); /* make certain everything is flushed */
+ }
+ if (XPending(dpy)) {
+ rslt = true;
+ }
+ LEAVE_XLIB();
}
RETURN ( rslt );
%}
@@ -5508,7 +5519,7 @@
"return true, if any event is queued"
dispatchingExpose notNil ifTrue:[
- ^ self exposeEventPendingFor:dispatchingExpose withSync:false
+ ^ self exposeEventPendingFor:dispatchingExpose withSync:false
].
^ self eventQueuedAlready
@@ -5525,12 +5536,12 @@
OBJ rslt = false;
if (ISCONNECTED) {
- /* ENTER ... LEAVE not needed; XEventsQueued will not block */
- /* ENTER_XLIB(); */
- if (XEventsQueued(myDpy, QueuedAlready)) {
- rslt = true;
- }
- /* LEAVE_XLIB(); */
+ /* ENTER ... LEAVE not needed; XEventsQueued will not block */
+ /* ENTER_XLIB(); */
+ if (XEventsQueued(myDpy, QueuedAlready)) {
+ rslt = true;
+ }
+ /* LEAVE_XLIB(); */
}
RETURN ( rslt );
%}
@@ -5551,23 +5562,23 @@
OBJ rslt = false;
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- ENTER_XLIB();
- if (doSync == true) {
- XSync(dpy, 0); /* make certain everything is flushed */
- }
- if (__isExternalAddress(aWindowIdOrNil)) {
- win = __WindowVal(aWindowIdOrNil);
- thereIsOne = XCheckWindowEvent(dpy, win, ExposureMask, &ev);
- } else {
- thereIsOne = XCheckMaskEvent(dpy, ExposureMask, &ev);
- }
- if (thereIsOne) {
- XPutBackEvent(dpy, &ev);
- rslt = true;
- }
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+ ENTER_XLIB();
+ if (doSync == true) {
+ XSync(dpy, 0); /* make certain everything is flushed */
+ }
+ if (__isExternalAddress(aWindowIdOrNil)) {
+ win = __WindowVal(aWindowIdOrNil);
+ thereIsOne = XCheckWindowEvent(dpy, win, ExposureMask, &ev);
+ } else {
+ thereIsOne = XCheckMaskEvent(dpy, ExposureMask, &ev);
+ }
+ if (thereIsOne) {
+ XPutBackEvent(dpy, &ev);
+ rslt = true;
+ }
+ LEAVE_XLIB();
}
RETURN ( rslt );
%}
@@ -5583,11 +5594,11 @@
The event fields are placed them into anEventArray (must be at least size 13):
the fields are:
- 1: windowID
- 2: eventType-ID
- 3: eventTypeSymbol
-
- 4.. args
+ 1: windowID
+ 2: eventType-ID
+ 3: eventTypeSymbol
+
+ 4.. args
Sorry I had to split dispatch into this fetch method and a separate
handler method to allow UNLIMITEDSTACK here.
@@ -5609,7 +5620,7 @@
OBJ arg, sym, t, windowID;
if (! ISCONNECTED) {
- RETURN (false);
+ RETURN (false);
}
dpy = myDpy;
@@ -5617,39 +5628,39 @@
ev.type = 0;
if (__isSmallInteger(eventMask)) {
- evMask = __intVal(eventMask);
+ evMask = __intVal(eventMask);
} else {
- evMask = ~0;
+ evMask = ~0;
}
if (__isExternalAddress(aViewIdOrNil)) {
- wWanted = __WindowVal(aViewIdOrNil);
- returnValue = XCheckWindowEvent(dpy, wWanted, evMask, &ev);
+ wWanted = __WindowVal(aViewIdOrNil);
+ returnValue = XCheckWindowEvent(dpy, wWanted, evMask, &ev);
} else {
- if (evMask == ~0) {
- XNextEvent(dpy, &ev);
- returnValue = 1;
- } else {
- returnValue = XCheckMaskEvent(dpy, evMask, &ev);
- }
+ if (evMask == ~0) {
+ XNextEvent(dpy, &ev);
+ returnValue = 1;
+ } else {
+ returnValue = XCheckMaskEvent(dpy, evMask, &ev);
+ }
}
if (!returnValue) {
- /* there is no event */
- RETURN (false);
+ /* there is no event */
+ RETURN (false);
}
if (anEventArray == nil) {
- /* sender is not interested in the event */
- RETURN(true);
+ /* sender is not interested in the event */
+ RETURN(true);
}
if (!__isArray(anEventArray)) {
- console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
- RETURN (false);
+ console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
+ RETURN (false);
}
if (__arraySize(anEventArray) < 11) {
- console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
- RETURN (false);
+ console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
+ RETURN (false);
}
# define ANYBUTTON (Button1MotionMask | Button2MotionMask | Button3MotionMask)
@@ -5676,368 +5687,368 @@
# define cme ((XColormapEvent *)&ev)
if (((t = __INST(lastId)) != nil)
- && __isExternalAddress(t)
- && (__WindowVal(t) == ae->window)) {
- windowID = t;
+ && __isExternalAddress(t)
+ && (__WindowVal(t) == ae->window)) {
+ windowID = t;
} else {
- windowID = __MKEXTERNALADDRESS(ae->window);
+ windowID = __MKEXTERNALADDRESS(ae->window);
}
__ArrayInstPtr(anEventArray)->a_element[0] = windowID; __STORE(anEventArray, windowID);
__ArrayInstPtr(anEventArray)->a_element[1] = __MKSMALLINT(ev.type);
switch (ev.type) {
- case KeyRelease:
- sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:);
- goto keyPressAndRelease;
-
- case KeyPress:
- sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:);
- /* FALL INTO */
-
- keyPressAndRelease:
- arg = nil;
- nchars = XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL);
- if (nchars == 1 && (((buffer[0] >= ' ') && (buffer[0] <= '~'))
- || (buffer[0] >= 0x80))) {
- arg = __MKCHARACTER(buffer[0]);
+ case KeyRelease:
+ sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:);
+ goto keyPressAndRelease;
+
+ case KeyPress:
+ sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:);
+ /* FALL INTO */
+
+ keyPressAndRelease:
+ arg = nil;
+ nchars = XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL);
+ if (nchars == 1 && (((buffer[0] >= ' ') && (buffer[0] <= '~'))
+ || (buffer[0] >= 0x80))) {
+ arg = __MKCHARACTER(buffer[0]);
// } else if (nchars > 2) {
// arg = __MKSTRING_L(buffer, nchars);
- } else {
- keySymString = XKeysymToString(keySym);
- if (keySymString) {
- arg = __MKSYMBOL(keySymString, 0);
- }
- }
+ } else {
+ keySymString = XKeysymToString(keySym);
+ if (keySymString) {
+ arg = __MKSYMBOL(keySymString, 0);
+ }
+ }
#ifdef IGNORE_UNKNOWN_KEYCODES
- if (arg == nil) {
- /* happens sometimes (alt-graph on sun has no keysym) */
- RETURN (false);
- }
-#endif
- __ArrayInstPtr(anEventArray)->a_element[2] = sym;
-
- __ArrayInstPtr(anEventArray)->a_element[3] = arg; __STORE(anEventArray, arg);
- t = __MKUINT(ke->keycode); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ke->state);
- __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ke->x);
- __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ke->y);
- __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ke->x_root);
- __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ke->y_root);
- t = __MKUINT(ke->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
- break;
-
- case ButtonPress:
- sym = @symbol(buttonPress:button:state:x:y:rootX:rootY:time:);
- goto buttonPressAndRelease;
-
- case ButtonRelease:
- sym = @symbol(buttonRelease:button:state:x:y:rootX:rootY:time:);
- /* fall into */
-
- buttonPressAndRelease:
- __ArrayInstPtr(anEventArray)->a_element[2] = sym;
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(be->button);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ke->state);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(be->x);
- __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(be->y);
- __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(be->x_root);
- __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(be->y_root);
- t = __MKUINT(be->time); __ArrayInstPtr(anEventArray)->a_element[9] = t; __STORE(anEventArray, t);
- break;
-
- case MotionNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(buttonMotion:state:x:y:rootX:rootY:time:);
-
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(me->state);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(me->x);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(me->y);
- __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(me->x_root);
- __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(me->y_root);
- t = __MKUINT(me->time); __ArrayInstPtr(anEventArray)->a_element[8] = t; __STORE(anEventArray, t);
- break;
-
- case FocusIn:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusIn:mode:detail:);
- goto focusInOut;
-
- case FocusOut:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusOut:mode:detail:);
- /* fall into */
-
- focusInOut:
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(fe->mode);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(fe->detail);
- break;
-
- case EnterNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerEnter:x:y:rootX:rootY:state:mode:detail:time:);
- goto enterLeave;
-
- case LeaveNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerLeave:x:y:rootX:rootY:state:mode:detail:time:);
- /* fall into */
-
- enterLeave:
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ele->x);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ele->y);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ele->x_root);
- __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ele->y_root);
- __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ele->state);
- __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ele->mode);
- __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ele->detail);
- t = __MKUINT(ele->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
- break;
-
- case Expose:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(expose:x:y:width:height:count:);
- goto expose;
-
- case GraphicsExpose:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(graphicsExpose:x:y:width:height:count:);
- /* fall into */
-
- expose:
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ee->x);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ee->y);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ee->width);
- __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ee->height);
- __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ee->count);
- break;
-
- case NoExpose:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(noExposeView:);
- break;
-
- case VisibilityNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(visibilityNotify:state:);
- switch (ve->state) {
- case VisibilityUnobscured:
- __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(unobscured);
- break;
- case VisibilityPartiallyObscured:
- __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(partiallyObscured);
- break;
- case VisibilityFullyObscured:
- __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(fullyObscured);
- break;
- default:
- __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(ve->state);
- break;
- }
- break;
-
- case CreateNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(createWindow:x:y:width:height:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cre->x);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cre->y);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cre->width);
- __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cre->height);
- break;
-
- case DestroyNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(destroyedView:);
- break;
-
- case UnmapNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unmappedView:);
- break;
-
- case MapNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappedView:);
- break;
-
- case ConfigureNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configure:x:y:width:height:above:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ce->x);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->y);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->width);
- __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->height);
- __ArrayInstPtr(anEventArray)->a_element[7] = nil;
- if (ce->above != None) {
- t = __MKEXTERNALADDRESS(ce->above); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
- }
- break;
-
- case GravityNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(gravityNotify:x:y:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(gre->x);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(gre->y);
- break;
-
- case ResizeRequest:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(resizeRequest:width:height:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(rr->width);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rr->height);
- break;
-
- case ConfigureRequest:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configureRequest:x:y:width:height:above:detail:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cr->x);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cr->y);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cr->width);
- __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cr->height);
- __ArrayInstPtr(anEventArray)->a_element[7] = nil;
- if (cr->above != None) {
- t = __MKEXTERNALADDRESS(cr->above); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
- }
- switch (cr->detail) {
- case Above:
- __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(above);
- break;
- case Below:
- __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(below);
- break;
- case TopIf:
- __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(topIf);
- break;
- case BottomIf:
- __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(bottomIf);
- break;
- case Opposite:
- __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(opposite);
- break;
- default:
- __ArrayInstPtr(anEventArray)->a_element[8] = __MKSMALLINT(cr->detail);
- break;
- }
- break;
-
- case CirculateNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateNotify:place:);
- goto circulate;
-
- case CirculateRequest:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateRequest:place:);
- /* fall into */
- circulate:
- switch (cie->place) {
- case PlaceOnTop:
- __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnTop);
- break;
- case PlaceOnBottom:
- __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnBottom);
- break;
- default:
- __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(cie->place);
- break;
- }
- break;
-
- case PropertyNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(propertyChange:property:state:time:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(pe->atom);
- switch (pe->state) {
- case PropertyNewValue:
- __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(newValue);
- break;
- case PropertyDelete:
- __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(deleted);
- break;
- default:
- __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(pe->state);
- break;
- }
- t = __MKUINT(pe->time); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
- break;
-
- case SelectionClear:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:selection:time:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection);
- t = __MKUINT(sce->time); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
- break;
-
- case SelectionRequest:
- /*
- * someone wants the selection
- */
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
- t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
- __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselectionrequest.selection);
- __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselectionrequest.target);
- __ArrayInstPtr(anEventArray)->a_element[6] = __MKATOMOBJ(ev.xselectionrequest.property);
- t = __MKUINT(ev.xselectionrequest.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
- break;
-
- case SelectionNotify:
- /*
- * returned selection value (answer from SelectionRequest)
- */
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionNotify:selection:target:property:requestor:time:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xselection.selection);
- __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselection.target);
- __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselection.property);
- t = __MKEXTERNALADDRESS(ev.xselection.requestor); __ArrayInstPtr(anEventArray)->a_element[6] = t; __STORE(anEventArray, t);
- t = __MKUINT(ev.xselection.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
- break;
-
- case ColormapNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(colormapNotify:state:);
- __ArrayInstPtr(anEventArray)->a_element[3] = cme->state == ColormapInstalled ? true : false;
- break;
-
- case ClientMessage:
- if (ev.xclient.message_type == (int) __AtomVal(__INST(protocolsAtom))) {
- if ((ev.xclient.data.l[0] == (int) __AtomVal(__INST(quitAppAtom)))
- || (ev.xclient.data.l[0] == (int) __AtomVal(__INST(deleteWindowAtom)))) {
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(terminateView:);
- break;
- }
- if (ev.xclient.data.l[0] == (int) __AtomVal(__INST(saveYourselfAtom))) {
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(saveAndTerminateView:);
- break;
- }
- }
- /*
- * any other client message
- */
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(clientMessage:type:format:data:);
- __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xclient.message_type);
- __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(ev.xclient.format);
- t = __MKBYTEARRAY(&ev.xclient.data, sizeof(ev.xclient.data)); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
- break;
-
- case MappingNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappingNotify:request:event:);
- switch(mape->request) {
- case MappingModifier:
- arg = @symbol(mappingModifier);
- break;
- case MappingKeyboard:
- arg = @symbol(mappingKeyboard);
- break;
- case MappingPointer:
- arg = @symbol(mappingPointer);
- break;
- default:
- arg = __MKSMALLINT(mape->request);
- break;
- }
- __ArrayInstPtr(anEventArray)->a_element[3] = arg;
- t = __MKBYTEARRAY(&ev, sizeof(*mape)); __ArrayInstPtr(anEventArray)->a_element[4] = t;
- __STORE(anEventArray, t);
- break;
-
- case KeymapNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(keymapNotify:);
- break;
-
- case MapRequest:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mapRequest:);
- break;
-
- case ReparentNotify:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(reparentedView:parentId:x:y:);
- t = __MKEXTERNALADDRESS(rpe->parent);
- __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
- __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rpe->x);
- __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(rpe->y);
- break;
-
- default:
- __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
- break;
+ if (arg == nil) {
+ /* happens sometimes (alt-graph on sun has no keysym) */
+ RETURN (false);
+ }
+#endif
+ __ArrayInstPtr(anEventArray)->a_element[2] = sym;
+
+ __ArrayInstPtr(anEventArray)->a_element[3] = arg; __STORE(anEventArray, arg);
+ t = __MKUINT(ke->keycode); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ke->state);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ke->x);
+ __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ke->y);
+ __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ke->x_root);
+ __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ke->y_root);
+ t = __MKUINT(ke->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
+ break;
+
+ case ButtonPress:
+ sym = @symbol(buttonPress:button:state:x:y:rootX:rootY:time:);
+ goto buttonPressAndRelease;
+
+ case ButtonRelease:
+ sym = @symbol(buttonRelease:button:state:x:y:rootX:rootY:time:);
+ /* fall into */
+
+ buttonPressAndRelease:
+ __ArrayInstPtr(anEventArray)->a_element[2] = sym;
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(be->button);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ke->state);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(be->x);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(be->y);
+ __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(be->x_root);
+ __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(be->y_root);
+ t = __MKUINT(be->time); __ArrayInstPtr(anEventArray)->a_element[9] = t; __STORE(anEventArray, t);
+ break;
+
+ case MotionNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(buttonMotion:state:x:y:rootX:rootY:time:);
+
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(me->state);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(me->x);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(me->y);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(me->x_root);
+ __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(me->y_root);
+ t = __MKUINT(me->time); __ArrayInstPtr(anEventArray)->a_element[8] = t; __STORE(anEventArray, t);
+ break;
+
+ case FocusIn:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusIn:mode:detail:);
+ goto focusInOut;
+
+ case FocusOut:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusOut:mode:detail:);
+ /* fall into */
+
+ focusInOut:
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(fe->mode);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(fe->detail);
+ break;
+
+ case EnterNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerEnter:x:y:rootX:rootY:state:mode:detail:time:);
+ goto enterLeave;
+
+ case LeaveNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerLeave:x:y:rootX:rootY:state:mode:detail:time:);
+ /* fall into */
+
+ enterLeave:
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ele->x);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ele->y);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ele->x_root);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ele->y_root);
+ __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ele->state);
+ __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ele->mode);
+ __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ele->detail);
+ t = __MKUINT(ele->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
+ break;
+
+ case Expose:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(expose:x:y:width:height:count:);
+ goto expose;
+
+ case GraphicsExpose:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(graphicsExpose:x:y:width:height:count:);
+ /* fall into */
+
+ expose:
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ee->x);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ee->y);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ee->width);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ee->height);
+ __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ee->count);
+ break;
+
+ case NoExpose:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(noExposeView:);
+ break;
+
+ case VisibilityNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(visibilityNotify:state:);
+ switch (ve->state) {
+ case VisibilityUnobscured:
+ __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(unobscured);
+ break;
+ case VisibilityPartiallyObscured:
+ __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(partiallyObscured);
+ break;
+ case VisibilityFullyObscured:
+ __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(fullyObscured);
+ break;
+ default:
+ __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(ve->state);
+ break;
+ }
+ break;
+
+ case CreateNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(createWindow:x:y:width:height:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cre->x);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cre->y);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cre->width);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cre->height);
+ break;
+
+ case DestroyNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(destroyedView:);
+ break;
+
+ case UnmapNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unmappedView:);
+ break;
+
+ case MapNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappedView:);
+ break;
+
+ case ConfigureNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configure:x:y:width:height:above:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ce->x);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->y);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->width);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->height);
+ __ArrayInstPtr(anEventArray)->a_element[7] = nil;
+ if (ce->above != None) {
+ t = __MKEXTERNALADDRESS(ce->above); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
+ }
+ break;
+
+ case GravityNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(gravityNotify:x:y:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(gre->x);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(gre->y);
+ break;
+
+ case ResizeRequest:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(resizeRequest:width:height:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(rr->width);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rr->height);
+ break;
+
+ case ConfigureRequest:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configureRequest:x:y:width:height:above:detail:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cr->x);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cr->y);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cr->width);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cr->height);
+ __ArrayInstPtr(anEventArray)->a_element[7] = nil;
+ if (cr->above != None) {
+ t = __MKEXTERNALADDRESS(cr->above); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
+ }
+ switch (cr->detail) {
+ case Above:
+ __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(above);
+ break;
+ case Below:
+ __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(below);
+ break;
+ case TopIf:
+ __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(topIf);
+ break;
+ case BottomIf:
+ __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(bottomIf);
+ break;
+ case Opposite:
+ __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(opposite);
+ break;
+ default:
+ __ArrayInstPtr(anEventArray)->a_element[8] = __MKSMALLINT(cr->detail);
+ break;
+ }
+ break;
+
+ case CirculateNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateNotify:place:);
+ goto circulate;
+
+ case CirculateRequest:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateRequest:place:);
+ /* fall into */
+ circulate:
+ switch (cie->place) {
+ case PlaceOnTop:
+ __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnTop);
+ break;
+ case PlaceOnBottom:
+ __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnBottom);
+ break;
+ default:
+ __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(cie->place);
+ break;
+ }
+ break;
+
+ case PropertyNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(propertyChange:property:state:time:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(pe->atom);
+ switch (pe->state) {
+ case PropertyNewValue:
+ __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(newValue);
+ break;
+ case PropertyDelete:
+ __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(deleted);
+ break;
+ default:
+ __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(pe->state);
+ break;
+ }
+ t = __MKUINT(pe->time); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
+ break;
+
+ case SelectionClear:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:selection:time:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection);
+ t = __MKUINT(sce->time); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
+ break;
+
+ case SelectionRequest:
+ /*
+ * someone wants the selection
+ */
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
+ t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselectionrequest.selection);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselectionrequest.target);
+ __ArrayInstPtr(anEventArray)->a_element[6] = __MKATOMOBJ(ev.xselectionrequest.property);
+ t = __MKUINT(ev.xselectionrequest.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
+ break;
+
+ case SelectionNotify:
+ /*
+ * returned selection value (answer from SelectionRequest)
+ */
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionNotify:selection:target:property:requestor:time:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xselection.selection);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselection.target);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselection.property);
+ t = __MKEXTERNALADDRESS(ev.xselection.requestor); __ArrayInstPtr(anEventArray)->a_element[6] = t; __STORE(anEventArray, t);
+ t = __MKUINT(ev.xselection.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
+ break;
+
+ case ColormapNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(colormapNotify:state:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = cme->state == ColormapInstalled ? true : false;
+ break;
+
+ case ClientMessage:
+ if (ev.xclient.message_type == (int) __AtomVal(__INST(protocolsAtom))) {
+ if ((ev.xclient.data.l[0] == (int) __AtomVal(__INST(quitAppAtom)))
+ || (ev.xclient.data.l[0] == (int) __AtomVal(__INST(deleteWindowAtom)))) {
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(terminateView:);
+ break;
+ }
+ if (ev.xclient.data.l[0] == (int) __AtomVal(__INST(saveYourselfAtom))) {
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(saveAndTerminateView:);
+ break;
+ }
+ }
+ /*
+ * any other client message
+ */
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(clientMessage:type:format:data:);
+ __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xclient.message_type);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(ev.xclient.format);
+ t = __MKBYTEARRAY(&ev.xclient.data, sizeof(ev.xclient.data)); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
+ break;
+
+ case MappingNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappingNotify:request:event:);
+ switch(mape->request) {
+ case MappingModifier:
+ arg = @symbol(mappingModifier);
+ break;
+ case MappingKeyboard:
+ arg = @symbol(mappingKeyboard);
+ break;
+ case MappingPointer:
+ arg = @symbol(mappingPointer);
+ break;
+ default:
+ arg = __MKSMALLINT(mape->request);
+ break;
+ }
+ __ArrayInstPtr(anEventArray)->a_element[3] = arg;
+ t = __MKBYTEARRAY(&ev, sizeof(*mape)); __ArrayInstPtr(anEventArray)->a_element[4] = t;
+ __STORE(anEventArray, t);
+ break;
+
+ case KeymapNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(keymapNotify:);
+ break;
+
+ case MapRequest:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mapRequest:);
+ break;
+
+ case ReparentNotify:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(reparentedView:parentId:x:y:);
+ t = __MKEXTERNALADDRESS(rpe->parent);
+ __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
+ __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rpe->x);
+ __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(rpe->y);
+ break;
+
+ default:
+ __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
+ break;
}
#undef ae
#undef ee
@@ -6101,20 +6112,20 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)
&& __isSmallInteger(aMask)) {
- mask = __intVal(aMask);
+ mask = __intVal(aMask);
#ifdef OLD
- /* these may not be disabled */
- mask |= ExposureMask | StructureNotifyMask |
- KeyPressMask | KeyReleaseMask |
- EnterWindowMask | LeaveWindowMask |
- ButtonPressMask | ButtonMotionMask | ButtonReleaseMask;
-#endif
-
- ENTER_XLIB();
- XSelectInput(myDpy, __WindowVal(aWindowId), mask);
- LEAVE_XLIB();
- RETURN ( self );
+ /* these may not be disabled */
+ mask |= ExposureMask | StructureNotifyMask |
+ KeyPressMask | KeyReleaseMask |
+ EnterWindowMask | LeaveWindowMask |
+ ButtonPressMask | ButtonMotionMask | ButtonReleaseMask;
+#endif
+
+ ENTER_XLIB();
+ XSelectInput(myDpy, __WindowVal(aWindowId), mask);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -6143,19 +6154,19 @@
"forward a button-press event for some view"
aView isNil ifTrue:[
- "/ event arrived, after I destroyed it myself
- ^ self
+ "/ event arrived, after I destroyed it myself
+ ^ self
].
button == 1 ifTrue:[
- activateOnClick == true ifTrue:[
- "/ dont raise above an active popup view.
- (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
- aView topView raise.
+ activateOnClick == true ifTrue:[
+ "/ dont raise above an active popup view.
+ (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
+ aView topView raise.
"/ ] ifFalse:[
"/ activeKeyboardGrab printCR.
"/ activePointerGrab printCR.
- ]
- ].
+ ]
+ ].
].
super buttonPress:button x:x y:y view:aView
@@ -6198,89 +6209,89 @@
&& (eventMask == nil || __isInteger(eventMask))
&& (__isExternalAddress(windowID) || __isInteger(windowID))
&& (__isExternalAddress(targetWindowID) || __isInteger(targetWindowID))) {
- Display *dpy = myDpy;
- XEvent ev;
- Status result;
- Window targetWindow;
-
- if (__isInteger(d1)) {
- ev.xclient.data.l[0] = __longIntVal(d1);
- } else {
- if (__isExternalAddress(d1)) {
- ev.xclient.data.l[0] = (INT)__externalAddressVal(d1);
- } else {
- ev.xclient.data.l[0] = 0;
- }
- }
- if (__isInteger(d2)) {
- ev.xclient.data.l[1] = __longIntVal(d2);
- } else {
- if (__isExternalAddress(d2)) {
- ev.xclient.data.l[1] = (INT)__externalAddressVal(d2);
- } else {
- ev.xclient.data.l[1] = 0;
- }
- }
- if (__isInteger(d3)) {
- ev.xclient.data.l[2] = __longIntVal(d3);
- } else {
- if (__isExternalAddress(d3)) {
- ev.xclient.data.l[2] = (INT)__externalAddressVal(d3);
- } else {
- ev.xclient.data.l[2] = 0;
- }
- }
- if (__isInteger(d4)) {
- ev.xclient.data.l[3] = __longIntVal(d4);
- } else {
- if (__isExternalAddress(d4)) {
- ev.xclient.data.l[3] = (INT)__externalAddressVal(d4);
- } else {
- ev.xclient.data.l[3] = 0;
- }
- }
- if (__isInteger(d5)) {
- ev.xclient.data.l[4] = __longIntVal(d5);
- } else {
- if (__isExternalAddress(d5)) {
- ev.xclient.data.l[4] = (INT)__externalAddressVal(d5);
- } else {
- ev.xclient.data.l[4] = 0;
- }
- }
-
- if (__isExternalAddress(windowID)) {
- ev.xclient.window = __WindowVal(windowID);
- } else {
- ev.xclient.window = (Window)__longIntVal(windowID);
- }
-
- if (__isExternalAddress(targetWindowID)) {
- targetWindow = __WindowVal(targetWindowID);
- } else {
- targetWindow = (Window)__longIntVal(targetWindowID);
- }
-
- ev.xclient.type = ClientMessage;
- ev.xclient.display = dpy;
- ev.xclient.message_type = __longIntVal(msgType);
- ev.xclient.format = __longIntVal(msgFormat);
-
- if (eventMask == nil) {
- __eventMask = NoEventMask;
- } else {
- __eventMask = __longIntVal(eventMask);
- }
-
- ENTER_XLIB();
- result = XSendEvent(dpy, targetWindow, (propagate == true ? True : False), __eventMask , &ev);
- LEAVE_XLIB();
-
- if ((result == BadValue) || (result == BadWindow)) {
- DPRINTF(("bad status in sendClientEvent\n"));
- RETURN ( false )
- }
- RETURN (true)
+ Display *dpy = myDpy;
+ XEvent ev;
+ Status result;
+ Window targetWindow;
+
+ if (__isInteger(d1)) {
+ ev.xclient.data.l[0] = __longIntVal(d1);
+ } else {
+ if (__isExternalAddress(d1)) {
+ ev.xclient.data.l[0] = (INT)__externalAddressVal(d1);
+ } else {
+ ev.xclient.data.l[0] = 0;
+ }
+ }
+ if (__isInteger(d2)) {
+ ev.xclient.data.l[1] = __longIntVal(d2);
+ } else {
+ if (__isExternalAddress(d2)) {
+ ev.xclient.data.l[1] = (INT)__externalAddressVal(d2);
+ } else {
+ ev.xclient.data.l[1] = 0;
+ }
+ }
+ if (__isInteger(d3)) {
+ ev.xclient.data.l[2] = __longIntVal(d3);
+ } else {
+ if (__isExternalAddress(d3)) {
+ ev.xclient.data.l[2] = (INT)__externalAddressVal(d3);
+ } else {
+ ev.xclient.data.l[2] = 0;
+ }
+ }
+ if (__isInteger(d4)) {
+ ev.xclient.data.l[3] = __longIntVal(d4);
+ } else {
+ if (__isExternalAddress(d4)) {
+ ev.xclient.data.l[3] = (INT)__externalAddressVal(d4);
+ } else {
+ ev.xclient.data.l[3] = 0;
+ }
+ }
+ if (__isInteger(d5)) {
+ ev.xclient.data.l[4] = __longIntVal(d5);
+ } else {
+ if (__isExternalAddress(d5)) {
+ ev.xclient.data.l[4] = (INT)__externalAddressVal(d5);
+ } else {
+ ev.xclient.data.l[4] = 0;
+ }
+ }
+
+ if (__isExternalAddress(windowID)) {
+ ev.xclient.window = __WindowVal(windowID);
+ } else {
+ ev.xclient.window = (Window)__longIntVal(windowID);
+ }
+
+ if (__isExternalAddress(targetWindowID)) {
+ targetWindow = __WindowVal(targetWindowID);
+ } else {
+ targetWindow = (Window)__longIntVal(targetWindowID);
+ }
+
+ ev.xclient.type = ClientMessage;
+ ev.xclient.display = dpy;
+ ev.xclient.message_type = __longIntVal(msgType);
+ ev.xclient.format = __longIntVal(msgFormat);
+
+ if (eventMask == nil) {
+ __eventMask = NoEventMask;
+ } else {
+ __eventMask = __longIntVal(eventMask);
+ }
+
+ ENTER_XLIB();
+ result = XSendEvent(dpy, targetWindow, (propagate == true ? True : False), __eventMask , &ev);
+ LEAVE_XLIB();
+
+ if ((result == BadValue) || (result == BadWindow)) {
+ DPRINTF(("bad status in sendClientEvent\n"));
+ RETURN ( false )
+ }
+ RETURN (true)
}
%}.
self primitiveFailedOrClosedConnection.
@@ -6303,106 +6314,106 @@
int state;
if (__isSmallInteger(stateMask)) {
- state = __intVal(stateMask);
+ state = __intVal(stateMask);
} else {
- state = 0;
+ state = 0;
}
if (ISCONNECTED
&& __isSmallInteger(xPos) && __isSmallInteger(yPos)
&& (__isSmallInteger(keySymCodeOrButtonNr) || __isStringLike(keySymCodeOrButtonNr))
&& (__isExternalAddress(targetId) || __isInteger(targetId))) {
- Display *dpy = myDpy;
-
- XEvent ev;
- Window target;
- Status result;
- KeySym keySym, *syms;
- int screen = __intVal(__INST(screen));
- char s[2];
- int nSyms;
-
- if ((typeSymbol == @symbol(keyPress))
- || (typeSymbol == @symbol(keyRelease))) {
- if (__isStringLike(keySymCodeOrButtonNr)) {
- keySym = XStringToKeysym(__stringVal(keySymCodeOrButtonNr));
- } else {
- if (__isCharacter(keySymCodeOrButtonNr)) {
- s[0] = __intVal(__characterVal(keySymCodeOrButtonNr));
- s[1] = '\0';
- keySym = XStringToKeysym(s);
- } else {
- keySym = (KeySym) __intVal(keySymCodeOrButtonNr);
- }
- }
- ev.xkey.keycode = XKeysymToKeycode(dpy, keySym);
-
- if (stateMask == nil) {
- /*
- * get the modifier from the keySym
- */
- nSyms = 0;
- syms = XGetKeyboardMapping(dpy, ev.xkey.keycode, 1, &nSyms);
- if (syms) {
- int i;
-
- for (i=0; i<nSyms; i++) {
- if (syms[i] == keySym) {
+ Display *dpy = myDpy;
+
+ XEvent ev;
+ Window target;
+ Status result;
+ KeySym keySym, *syms;
+ int screen = __intVal(__INST(screen));
+ char s[2];
+ int nSyms;
+
+ if ((typeSymbol == @symbol(keyPress))
+ || (typeSymbol == @symbol(keyRelease))) {
+ if (__isStringLike(keySymCodeOrButtonNr)) {
+ keySym = XStringToKeysym(__stringVal(keySymCodeOrButtonNr));
+ } else {
+ if (__isCharacter(keySymCodeOrButtonNr)) {
+ s[0] = __intVal(__characterVal(keySymCodeOrButtonNr));
+ s[1] = '\0';
+ keySym = XStringToKeysym(s);
+ } else {
+ keySym = (KeySym) __intVal(keySymCodeOrButtonNr);
+ }
+ }
+ ev.xkey.keycode = XKeysymToKeycode(dpy, keySym);
+
+ if (stateMask == nil) {
+ /*
+ * get the modifier from the keySym
+ */
+ nSyms = 0;
+ syms = XGetKeyboardMapping(dpy, ev.xkey.keycode, 1, &nSyms);
+ if (syms) {
+ int i;
+
+ for (i=0; i<nSyms; i++) {
+ if (syms[i] == keySym) {
#ifdef MODIFIERDEBUG
- console_printf("modifier-index is %d\n", i);
-#endif
- if (i) state = (1 << (i-1));
- break;
- }
- }
- XFree(syms);
- }
- }
- } else {
- if ((typeSymbol == @symbol(buttonPress))
- || (typeSymbol == @symbol(buttonRelease))) {
- if (__isSmallInteger(keySymCodeOrButtonNr)) {
- ev.xbutton.button = __intVal(keySymCodeOrButtonNr);
- } else {
- ev.xbutton.button = 1;
- }
- } else {
- DPRINTF(("invalid sendEvent typeSymbol\n"));
- RETURN (false);
- }
- }
-
- if (typeSymbol == @symbol(keyPress))
- ev.xany.type = KeyPress;
- else if (typeSymbol == @symbol(keyRelease))
- ev.xany.type = KeyRelease;
- else if (typeSymbol == @symbol(buttonPress))
- ev.xany.type = ButtonPress;
- else if (typeSymbol == @symbol(buttonRelease))
- ev.xany.type = ButtonRelease;
-
- if (__isExternalAddress(targetId)) {
- target = __WindowVal(targetId);
- } else {
- target = (Window) __longIntVal(targetId);
- }
- ev.xkey.window = target;
- ev.xkey.same_screen = 1;
- ev.xkey.subwindow = 0;
- ev.xkey.root = RootWindow(dpy, screen);
- ev.xkey.x = __intVal(xPos);
- ev.xkey.y = __intVal(yPos);
- ev.xkey.state = state;
- ev.xkey.time = CurrentTime;
-
- ENTER_XLIB();
- result = XSendEvent(dpy, target, False, 0 , &ev);
- LEAVE_XLIB();
- if ((result == BadValue) || (result == BadWindow)) {
- DPRINTF(("bad status\n"));
- RETURN ( false )
- }
- RETURN (true)
+ console_printf("modifier-index is %d\n", i);
+#endif
+ if (i) state = (1 << (i-1));
+ break;
+ }
+ }
+ XFree(syms);
+ }
+ }
+ } else {
+ if ((typeSymbol == @symbol(buttonPress))
+ || (typeSymbol == @symbol(buttonRelease))) {
+ if (__isSmallInteger(keySymCodeOrButtonNr)) {
+ ev.xbutton.button = __intVal(keySymCodeOrButtonNr);
+ } else {
+ ev.xbutton.button = 1;
+ }
+ } else {
+ DPRINTF(("invalid sendEvent typeSymbol\n"));
+ RETURN (false);
+ }
+ }
+
+ if (typeSymbol == @symbol(keyPress))
+ ev.xany.type = KeyPress;
+ else if (typeSymbol == @symbol(keyRelease))
+ ev.xany.type = KeyRelease;
+ else if (typeSymbol == @symbol(buttonPress))
+ ev.xany.type = ButtonPress;
+ else if (typeSymbol == @symbol(buttonRelease))
+ ev.xany.type = ButtonRelease;
+
+ if (__isExternalAddress(targetId)) {
+ target = __WindowVal(targetId);
+ } else {
+ target = (Window) __longIntVal(targetId);
+ }
+ ev.xkey.window = target;
+ ev.xkey.same_screen = 1;
+ ev.xkey.subwindow = 0;
+ ev.xkey.root = RootWindow(dpy, screen);
+ ev.xkey.x = __intVal(xPos);
+ ev.xkey.y = __intVal(yPos);
+ ev.xkey.state = state;
+ ev.xkey.time = CurrentTime;
+
+ ENTER_XLIB();
+ result = XSendEvent(dpy, target, False, 0 , &ev);
+ LEAVE_XLIB();
+ if ((result == BadValue) || (result == BadWindow)) {
+ DPRINTF(("bad status\n"));
+ RETURN ( false )
+ }
+ RETURN (true)
}
%}.
self primitiveFailedOrClosedConnection.
@@ -6426,15 +6437,15 @@
if (ISCONNECTED
&& __isStringLike(aFontName)) {
- ENTER_XLIB();
- newFont = XLoadQueryFont(myDpy, (char *)__stringVal(aFontName));
- LEAVE_XLIB();
+ ENTER_XLIB();
+ newFont = XLoadQueryFont(myDpy, (char *)__stringVal(aFontName));
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- if (newFont)
- __cnt_font++;
-#endif
-
- RETURN ( newFont ? __MKEXTERNALADDRESS(newFont) : nil );
+ if (newFont)
+ __cnt_font++;
+#endif
+
+ RETURN ( newFont ? __MKEXTERNALADDRESS(newFont) : nil );
}
%}.
"/ --- disabled due to UNLIMITEDSTACK -- self primitiveFailedOrClosedConnection.
@@ -6454,38 +6465,38 @@
aString isNil ifTrue:[^ false].
fields := aString asCollectionOfSubstringsSeparatedBy:$-.
fields size == 3 ifTrue:[
- "take care of old font names: family-style-size"
- family := fields at:1.
- style := fields at:2.
- size := Number readFromString:(fields at:3) onError:[^ false].
+ "take care of old font names: family-style-size"
+ family := fields at:1.
+ style := fields at:2.
+ size := Number readFromString:(fields at:3) onError:[^ false].
] ifFalse:[fields size == 2 ifTrue:[
- "take care of old font names: family-size"
- family := fields at:1.
- size := Number readFromString:(fields at:2) onError:[^ false].
+ "take care of old font names: family-size"
+ family := fields at:1.
+ size := Number readFromString:(fields at:2) onError:[^ false].
] ifFalse:[fields size >= 15 ifTrue:[
- family := fields at:3.
- face := fields at:4.
- style := fields at:5.
- style = 'o' ifTrue:[
- style := 'oblique'
- ] ifFalse:[style = 'i' ifTrue:[
- style := 'italic'
- ] ifFalse:[style = 'r' ifTrue:[
- style := 'roman'
- ]]].
- moreStyle := fields at:6.
- (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
- style := style, '-', moreStyle.
- ].
- fheight := fields at:8.
- size := (Number readFromString:(fields at:9) onError:[^ false]) / 10.
- resX := fields at:10.
- resY := fields at:11.
- registry := fields at:14.
- encoding := fields at:15.
- coding := registry , '-' , encoding.
+ family := fields at:3.
+ face := fields at:4.
+ style := fields at:5.
+ style = 'o' ifTrue:[
+ style := 'oblique'
+ ] ifFalse:[style = 'i' ifTrue:[
+ style := 'italic'
+ ] ifFalse:[style = 'r' ifTrue:[
+ style := 'roman'
+ ]]].
+ moreStyle := fields at:6.
+ (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
+ style := style, '-', moreStyle.
+ ].
+ fheight := fields at:8.
+ size := (Number readFromString:(fields at:9) onError:[^ false]) / 10.
+ resX := fields at:10.
+ resY := fields at:11.
+ registry := fields at:14.
+ encoding := fields at:15.
+ coding := registry , '-' , encoding.
] ifFalse:[
- ^ false
+ ^ false
]]].
aBlock value:family value:face value:style value:size value:coding.
^ true
@@ -6530,166 +6541,166 @@
OBJ *resultArray;
if (ISCONNECTED
- && __bothSmallInteger(index1, index2)
- && __isExternalAddress(aFontId)
- && __isNonNilObject(aString)) {
- int lMax = __intVal(@global(MaxStringLength));
- f = __FontVal(aFontId);
- if (! f) goto fail;
-
- if (__isArray(anArray) && __arraySize(anArray) > 0) {
- resultArray = __arrayVal(anArray);
- } else {
- resultArray = 0;
- }
-
- i1 = __intVal(index1) - 1;
-
- if (i1 >= 0) {
- OBJ cls;
-
- i2 = __intVal(index2) - 1;
- if (i2 < i1) {
- RETURN ( __MKSMALLINT(0) );
- }
-
- cp = (char *) __stringVal(aString);
- l = i2 - i1 + 1;
-
- if (__isStringLike(aString)) {
- n = __stringSize(aString);
- if (i2 >= n) goto fail;
- cp += i1;
- len = XTextExtents(f, cp, l,
- &directionReturn, &fontAscentReturn, &fontDescentReturn,
- &overAllReturn);
- } else {
- cls = __qClass(aString);
- nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
- cp += nInstBytes;
- n = __byteArraySize(aString) - nInstBytes;
-
- if (__isBytes(aString)) {
- if (i2 >= n) goto fail;
-
- cp += i1;
- len = XTextExtents(f, cp, l,
- &directionReturn, &fontAscentReturn, &fontDescentReturn,
- &overAllReturn);
- } else if (__isWords(aString)) { /* TWOBYTESTRINGS */
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2 = (XChar2b *)0;
- int mustFree = 0;
-
- n = n / 2;
- if (i2 >= n) goto fail;
-
- cp += (i1 * 2);
- if (l > lMax) l = lMax;
-
- /*
- * ST/X TwoByteStrings store the asciiValue in native byteOrder;
- * X expects them MSB first
- * convert as required
- */
-
- u.s = 0x1234;
- if (u.b[0] != 0x12) {
- if (l <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(l * 2));
- mustFree = 1;
- }
- for (i=0; i<l; i++) {
- cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
- cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
- }
- cp = (char *) cp2;
- }
-
- len = XTextExtents16(f, (XChar2b *)cp, l,
- &directionReturn, &fontAscentReturn, &fontDescentReturn,
- &overAllReturn);
-
- if (mustFree) {
- free(cp2);
- }
- } else if (__isLongs(aString)) { /* FOURBYTESTRINGS */
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2 = (XChar2b *)0;
- int mustFree = 0;
-
- n = n / 4;
- if (i2 >= n) goto fail;
-
- cp += (i1 * 4);
- if (l > lMax) l = lMax;
-
- /*
- * For now: X does not support 32bit characters without the new 32Unicode extensions.
- * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
- */
- if (l <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(l * 2));
- mustFree = 1;
- }
- for (i=0; i<l; i++) {
- int codePoint;
-
- codePoint = ((unsigned int32 *)cp)[i];
- if (codePoint > 0xFFFF) {
- codePoint = 0xFFFF;
- }
- cp2[i].byte1 = codePoint & 0xFF;
- cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
- }
- cp = (char *) cp2;
-
- len = XTextExtents16(f, (XChar2b *)cp, l,
- &directionReturn, &fontAscentReturn, &fontDescentReturn,
- &overAllReturn);
- if (mustFree) {
- free(cp2);
- }
- } else
- goto fail; /*unknown string class */
- }
- if (resultArray) {
- switch (__arraySize(anArray)) {
- default:
- case 8:
- resultArray[7] = __MKSMALLINT(directionReturn);
- case 7:
- resultArray[6] = __MKSMALLINT(fontDescentReturn);
- case 6:
- resultArray[5] = __MKSMALLINT(fontAscentReturn);
- case 5:
- resultArray[4] = __MKSMALLINT(overAllReturn.descent);
- case 4:
- resultArray[3] = __MKSMALLINT(overAllReturn.ascent);
- case 3:
- resultArray[2] = __MKSMALLINT(overAllReturn.width);
- case 2:
- resultArray[1] = __MKSMALLINT(overAllReturn.rbearing);
- case 1:
- resultArray[0] = __MKSMALLINT(overAllReturn.lbearing);
- case 0:
- break;
- }
- }
- RETURN ( __MKSMALLINT(overAllReturn.width) );
- }
+ && __bothSmallInteger(index1, index2)
+ && __isExternalAddress(aFontId)
+ && __isNonNilObject(aString)) {
+ int lMax = __intVal(@global(MaxStringLength));
+ f = __FontVal(aFontId);
+ if (! f) goto fail;
+
+ if (__isArray(anArray) && __arraySize(anArray) > 0) {
+ resultArray = __arrayVal(anArray);
+ } else {
+ resultArray = 0;
+ }
+
+ i1 = __intVal(index1) - 1;
+
+ if (i1 >= 0) {
+ OBJ cls;
+
+ i2 = __intVal(index2) - 1;
+ if (i2 < i1) {
+ RETURN ( __MKSMALLINT(0) );
+ }
+
+ cp = (char *) __stringVal(aString);
+ l = i2 - i1 + 1;
+
+ if (__isStringLike(aString)) {
+ n = __stringSize(aString);
+ if (i2 >= n) goto fail;
+ cp += i1;
+ len = XTextExtents(f, cp, l,
+ &directionReturn, &fontAscentReturn, &fontDescentReturn,
+ &overAllReturn);
+ } else {
+ cls = __qClass(aString);
+ nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+ cp += nInstBytes;
+ n = __byteArraySize(aString) - nInstBytes;
+
+ if (__isBytes(aString)) {
+ if (i2 >= n) goto fail;
+
+ cp += i1;
+ len = XTextExtents(f, cp, l,
+ &directionReturn, &fontAscentReturn, &fontDescentReturn,
+ &overAllReturn);
+ } else if (__isWords(aString)) { /* TWOBYTESTRINGS */
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2 = (XChar2b *)0;
+ int mustFree = 0;
+
+ n = n / 2;
+ if (i2 >= n) goto fail;
+
+ cp += (i1 * 2);
+ if (l > lMax) l = lMax;
+
+ /*
+ * ST/X TwoByteStrings store the asciiValue in native byteOrder;
+ * X expects them MSB first
+ * convert as required
+ */
+
+ u.s = 0x1234;
+ if (u.b[0] != 0x12) {
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+ cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+ }
+ cp = (char *) cp2;
+ }
+
+ len = XTextExtents16(f, (XChar2b *)cp, l,
+ &directionReturn, &fontAscentReturn, &fontDescentReturn,
+ &overAllReturn);
+
+ if (mustFree) {
+ free(cp2);
+ }
+ } else if (__isLongs(aString)) { /* FOURBYTESTRINGS */
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2 = (XChar2b *)0;
+ int mustFree = 0;
+
+ n = n / 4;
+ if (i2 >= n) goto fail;
+
+ cp += (i1 * 4);
+ if (l > lMax) l = lMax;
+
+ /*
+ * For now: X does not support 32bit characters without the new 32Unicode extensions.
+ * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
+ */
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ int codePoint;
+
+ codePoint = ((unsigned int32 *)cp)[i];
+ if (codePoint > 0xFFFF) {
+ codePoint = 0xFFFF;
+ }
+ cp2[i].byte1 = codePoint & 0xFF;
+ cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
+ }
+ cp = (char *) cp2;
+
+ len = XTextExtents16(f, (XChar2b *)cp, l,
+ &directionReturn, &fontAscentReturn, &fontDescentReturn,
+ &overAllReturn);
+ if (mustFree) {
+ free(cp2);
+ }
+ } else
+ goto fail; /*unknown string class */
+ }
+ if (resultArray) {
+ switch (__arraySize(anArray)) {
+ default:
+ case 8:
+ resultArray[7] = __MKSMALLINT(directionReturn);
+ case 7:
+ resultArray[6] = __MKSMALLINT(fontDescentReturn);
+ case 6:
+ resultArray[5] = __MKSMALLINT(fontAscentReturn);
+ case 5:
+ resultArray[4] = __MKSMALLINT(overAllReturn.descent);
+ case 4:
+ resultArray[3] = __MKSMALLINT(overAllReturn.ascent);
+ case 3:
+ resultArray[2] = __MKSMALLINT(overAllReturn.width);
+ case 2:
+ resultArray[1] = __MKSMALLINT(overAllReturn.rbearing);
+ case 1:
+ resultArray[0] = __MKSMALLINT(overAllReturn.lbearing);
+ case 0:
+ break;
+ }
+ }
+ RETURN ( __MKSMALLINT(overAllReturn.width) );
+ }
}
#undef NLOCALBUFFER
fail: ;
@@ -6701,17 +6712,17 @@
|result|
result := Array new:8.
Screen current
- extentsOf:'hello World' from:1 to:11
- inFont:(Screen current getFontWithFoundry:'*'
- family:'courier new'
- weight:'medium'
- slant:'r'
- spacing:nil
- pixelSize:nil
- size:10
- encoding:#'iso10646-1'
- )
- into:result.
+ extentsOf:'hello World' from:1 to:11
+ inFont:(Screen current getFontWithFoundry:'*'
+ family:'courier new'
+ weight:'medium'
+ slant:'r'
+ spacing:nil
+ pixelSize:nil
+ size:10
+ encoding:#'iso10646-1'
+ )
+ into:result.
result
"
@@ -6726,35 +6737,35 @@
|enc charSets|
(registry size ~~ 0) ifTrue:[
- enc := registry asLowercase.
- encoding size ~~ 0 ifTrue:[
- enc := enc, '-', encoding asLowercase.
- ].
- enc := enc asSymbol.
+ enc := registry asLowercase.
+ encoding size ~~ 0 ifTrue:[
+ enc := enc, '-', encoding asLowercase.
+ ].
+ enc := enc asSymbol.
] ifFalse:[
- (encoding size ~~ 0) ifTrue:[
- enc := encoding asLowercase asSymbol
- ] ifFalse:[
- charSets := charSetCollections.
- (charSets notEmptyOrNil) ifTrue:[
- charSets := charSets asUppercase asCollectionOfWords.
- (charSets includes:'ISO8859-1') ifTrue:[
- enc := #'iso8859-1'
- ] ifFalse:[
- (charSets includes:'ISO8859') ifTrue:[
- enc := #iso8859
- ] ifFalse:[
- (charSets includes:'ASCII') ifTrue:[
- enc := #ascii
- ] ifFalse:[
- (charSets includes:'ADOBE-STANDARD') ifTrue:[
- enc := #iso8859
- ]
- ]
- ]
- ]
- ]
- ]
+ (encoding size ~~ 0) ifTrue:[
+ enc := encoding asLowercase asSymbol
+ ] ifFalse:[
+ charSets := charSetCollections.
+ (charSets notEmptyOrNil) ifTrue:[
+ charSets := charSets asUppercase asCollectionOfWords.
+ (charSets includes:'ISO8859-1') ifTrue:[
+ enc := #'iso8859-1'
+ ] ifFalse:[
+ (charSets includes:'ISO8859') ifTrue:[
+ enc := #iso8859
+ ] ifFalse:[
+ (charSets includes:'ASCII') ifTrue:[
+ enc := #ascii
+ ] ifFalse:[
+ (charSets includes:'ADOBE-STANDARD') ifTrue:[
+ enc := #iso8859
+ ]
+ ]
+ ]
+ ]
+ ]
+ ]
].
^ enc
@@ -6790,47 +6801,47 @@
aFontNameString isNil ifTrue:[^ nil].
Error handle:[:ex |
- family := nil.
+ family := nil.
] do:[
- fields := aFontNameString asCollectionOfSubstringsSeparatedBy:$-.
- fields size == 3 ifTrue:[
- "take care of old font names: family-style-size"
- family := fields at:1.
- style := fields at:2.
- size := Number readFromString:(fields at:3).
- ] ifFalse:[
- fields size == 2 ifTrue:[
- "take care of old font names: family-size"
- family := fields at:1.
- size := Number readFromString:(fields at:2).
- ] ifFalse:[
- fields size >= 15 ifTrue:[
- family := fields at:3.
- face := fields at:4.
- style := fields at:5.
- style = 'o' ifTrue:[
- style := 'oblique'
- ] ifFalse:[style = 'i' ifTrue:[
- style := 'italic'
- ] ifFalse:[style = 'r' ifTrue:[
- style := 'roman'
- ]]].
- moreStyle := fields at:6.
- (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
- style := style, '-', moreStyle.
- ].
+ fields := aFontNameString asCollectionOfSubstringsSeparatedBy:$-.
+ fields size == 3 ifTrue:[
+ "take care of old font names: family-style-size"
+ family := fields at:1.
+ style := fields at:2.
+ size := Number readFromString:(fields at:3).
+ ] ifFalse:[
+ fields size == 2 ifTrue:[
+ "take care of old font names: family-size"
+ family := fields at:1.
+ size := Number readFromString:(fields at:2).
+ ] ifFalse:[
+ fields size >= 15 ifTrue:[
+ family := fields at:3.
+ face := fields at:4.
+ style := fields at:5.
+ style = 'o' ifTrue:[
+ style := 'oblique'
+ ] ifFalse:[style = 'i' ifTrue:[
+ style := 'italic'
+ ] ifFalse:[style = 'r' ifTrue:[
+ style := 'roman'
+ ]]].
+ moreStyle := fields at:6.
+ (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
+ style := style, '-', moreStyle.
+ ].
"/ pxlSize := (Integer readFromString:(fields at:8)).
- size := (Number readFromString:(fields at:9)) / 10.
- resX := fields at:10.
- resY := fields at:11.
- registry := fields at:14.
- encoding := fields at:15.
- coding := registry , '-' , encoding.
- ] ifFalse:[
- "/ very old name (such as cursor, 5x7 etc)
- ]
- ]
- ].
+ size := (Number readFromString:(fields at:9)) / 10.
+ resX := fields at:10.
+ resY := fields at:11.
+ registry := fields at:14.
+ encoding := fields at:15.
+ coding := registry , '-' , encoding.
+ ] ifFalse:[
+ "/ very old name (such as cursor, 5x7 etc)
+ ]
+ ]
+ ].
].
family notNil ifTrue:[
@@ -6856,36 +6867,36 @@
int len;
if (ISCONNECTED) {
- if (__isExternalAddress(fontId)) {
- f = __FontVal(fontId);
- if (f) {
- minCode = __MKUINT((f->min_byte1<<8) + f->min_char_or_byte2);
- maxCode = __MKUINT((f->max_byte1<<8) + f->max_char_or_byte2);
-
- if (f->direction == FontLeftToRight) {
- dir = @symbol(LeftToRight);
- } else if (f->direction == FontRightToLeft) {
- dir = @symbol(RightToLeft);
- }
- avgAscent = __MKSMALLINT(f->ascent);
- avgDescent = __MKSMALLINT(f->descent);
- maxAscent = __MKSMALLINT(f->max_bounds.ascent);
- maxDescent = __MKSMALLINT(f->max_bounds.descent);
- minWidth = __MKSMALLINT(f->min_bounds.width);
- maxWidth = __MKSMALLINT(f->max_bounds.width);
-
- ENTER_XLIB();
- len = XTextWidth(f, "n", 1);
- LEAVE_XLIB();
-
- avgWidth = __MKSMALLINT( len );
- }
- }
+ if (__isExternalAddress(fontId)) {
+ f = __FontVal(fontId);
+ if (f) {
+ minCode = __MKUINT((f->min_byte1<<8) + f->min_char_or_byte2);
+ maxCode = __MKUINT((f->max_byte1<<8) + f->max_char_or_byte2);
+
+ if (f->direction == FontLeftToRight) {
+ dir = @symbol(LeftToRight);
+ } else if (f->direction == FontRightToLeft) {
+ dir = @symbol(RightToLeft);
+ }
+ avgAscent = __MKSMALLINT(f->ascent);
+ avgDescent = __MKSMALLINT(f->descent);
+ maxAscent = __MKSMALLINT(f->max_bounds.ascent);
+ maxDescent = __MKSMALLINT(f->max_bounds.descent);
+ minWidth = __MKSMALLINT(f->min_bounds.width);
+ maxWidth = __MKSMALLINT(f->max_bounds.width);
+
+ ENTER_XLIB();
+ len = XTextWidth(f, "n", 1);
+ LEAVE_XLIB();
+
+ avgWidth = __MKSMALLINT( len );
+ }
+ }
}
%}.
avgAscent == nil ifTrue:[
- self primitiveFailedOrClosedConnection.
- ^ nil
+ self primitiveFailedOrClosedConnection.
+ ^ nil
].
"DingBats font returns 0 for maxAscent/maxDescent"
@@ -6928,8 +6939,8 @@
"
Screen current
- fontProperties:#(#'PIXEL_SIZE' #'POINT_SIZE' RESOLUTION notExistant)
- of:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
+ fontProperties:#(#'PIXEL_SIZE' #'POINT_SIZE' RESOLUTION notExistant)
+ of:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
"
!
@@ -6950,20 +6961,20 @@
OBJ x;
if (__isExternalAddress(aFontId)) {
- f = __FontVal(aFontId);
- if (f && (prop = f->properties) != 0) {
- n = f->n_properties;
- propsArray = __ARRAY_NEW_INT(n*2);
- for (i = 0; n; n--, prop++) {
- x = __MKUINT(prop->name); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
- x = __MKUINT(prop->card32); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
- }
- }
+ f = __FontVal(aFontId);
+ if (f && (prop = f->properties) != 0) {
+ n = f->n_properties;
+ propsArray = __ARRAY_NEW_INT(n*2);
+ for (i = 0; n; n--, prop++) {
+ x = __MKUINT(prop->name); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
+ x = __MKUINT(prop->card32); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
+ }
+ }
}
%}.
result := Dictionary new.
propsArray notNil ifTrue:[
- propsArray pairWiseDo:[:n :v | result at:(self atomName:n) put:v].
+ propsArray pairWiseDo:[:n :v | result at:(self atomName:n) put:v].
].
^ result
@@ -6974,7 +6985,7 @@
|d|
d := Dictionary new.
(Screen current fontPropertiesOf:(Screen current getDefaultFontWithEncoding:#'iso10646-1')) keysAndValuesDo:[:name :value|
- d at:name put:((Screen current atomName:value) ? value)
+ d at:name put:((Screen current atomName:value) ? value)
].
d
"
@@ -6991,11 +7002,11 @@
resX := props at:1.
resY := props at:2.
(resX notNil and:[resY notNil]) ifTrue:[
- ^ resX @ resY
+ ^ resX @ resY
].
res := props at:3.
res notNil ifTrue:[
- ^ res @ res
+ ^ res @ res
].
^ self resolution
@@ -7013,15 +7024,15 @@
props := self fontPropertiesOf:aFontId.
#('FONT' 'FONT_NAME' 'FULL_NAME' 'FULLNAME' ) do:[:try |
- |fullNameID|
-
- fullNameID := props at:try ifAbsent:nil.
- fullNameID notNil ifTrue:[
- fullName := self atomName:fullNameID.
- fullName notEmptyOrNil ifTrue:[
- ^ fullName
- ].
- ]
+ |fullNameID|
+
+ fullNameID := props at:try ifAbsent:nil.
+ fullNameID notNil ifTrue:[
+ fullName := self atomName:fullNameID.
+ fullName notEmptyOrNil ifTrue:[
+ ^ fullName
+ ].
+ ]
].
^ nil.
@@ -7045,36 +7056,36 @@
int i;
if (ISCONNECTED) {
- if (__isStringLike(pattern)) {
- for (;;) {
- ENTER_XLIB();
- fonts = XListFonts(myDpy, __stringVal(pattern), nnames, &available);
- LEAVE_XLIB();
- if (fonts == 0) RETURN(nil);
- if (available < nnames) break;
- XFreeFontNames(fonts);
- nnames = available * 2;
- }
-
- /*
- * now, that we know the number of font names,
- * create the array ...
- */
- arr = __ARRAY_NEW_INT(available);
- if (arr != nil) {
- /*
- * ... and fill it
- */
- for (i=0; i<available; i++) {
- __PROTECT__(arr);
- str = __MKSTRING(fonts[i]);
- __UNPROTECT__(arr);
- __ArrayInstPtr(arr)->a_element[i] = str; __STORE(arr, str);
- }
- }
- XFreeFontNames(fonts);
- RETURN (arr);
- }
+ if (__isStringLike(pattern)) {
+ for (;;) {
+ ENTER_XLIB();
+ fonts = XListFonts(myDpy, __stringVal(pattern), nnames, &available);
+ LEAVE_XLIB();
+ if (fonts == 0) RETURN(nil);
+ if (available < nnames) break;
+ XFreeFontNames(fonts);
+ nnames = available * 2;
+ }
+
+ /*
+ * now, that we know the number of font names,
+ * create the array ...
+ */
+ arr = __ARRAY_NEW_INT(available);
+ if (arr != nil) {
+ /*
+ * ... and fill it
+ */
+ for (i=0; i<available; i++) {
+ __PROTECT__(arr);
+ str = __MKSTRING(fonts[i]);
+ __UNPROTECT__(arr);
+ __ArrayInstPtr(arr)->a_element[i] = str; __STORE(arr, str);
+ }
+ }
+ XFreeFontNames(fonts);
+ RETURN (arr);
+ }
}
%}.
^ nil
@@ -7092,7 +7103,7 @@
id := self createFontFor:'-misc-fixed-*-*-*-*-*-*-*-*-*-*-', encoding.
id isNil ifTrue:[
- id := self createFontFor:'fixed'
+ id := self createFontFor:'fixed'
].
^ id.
@@ -7102,7 +7113,7 @@
!
getFontWithFamily:familyString face:faceString
- style:styleArgString size:sizeArgOrNil sizeUnit:sizeUnit encoding:encoding
+ style:styleArgString size:sizeArgOrNil sizeUnit:sizeUnit encoding:encoding
"try to get the specified font, if not available, try next smaller
font. Access to X-fonts by name is possible, by passing the X font name
@@ -7115,28 +7126,28 @@
styleString := styleArgString.
sizeArgOrNil notNil ifTrue:[
- roundedSize := sizeArgOrNil rounded asInteger.
- sizeUnit == #px ifTrue:[
- pixelSize := roundedSize.
- ] ifFalse:[
- pointSize := roundedSize.
- ].
+ roundedSize := sizeArgOrNil rounded asInteger.
+ sizeUnit == #px ifTrue:[
+ pixelSize := roundedSize.
+ ] ifFalse:[
+ pointSize := roundedSize.
+ ].
].
"special: if face is nil, allow access to X-fonts"
faceString isNil ifTrue:[
- roundedSize notNil ifTrue:[
- theName := familyString , '-' , roundedSize printString
- ] ifFalse:[
- theName := familyString
- ].
- theName notNil ifTrue:[
- theId := self createFontFor:theName.
- ].
- theId isNil ifTrue:[
- theId := self getDefaultFontWithEncoding:encoding
- ].
- ^ theId
+ roundedSize notNil ifTrue:[
+ theName := familyString , '-' , roundedSize printString
+ ] ifFalse:[
+ theName := familyString
+ ].
+ theName notNil ifTrue:[
+ theId := self createFontFor:theName.
+ ].
+ theId isNil ifTrue:[
+ theId := self getDefaultFontWithEncoding:encoding
+ ].
+ ^ theId
].
"/ spacing other than 'normal' is contained as last component
@@ -7144,67 +7155,67 @@
(styleString notNil
and:[(styleString endsWith:'-narrow')
- or:[styleString endsWith:'-semicondensed']]) ifTrue:[
- |i|
- i := styleString lastIndexOf:$-.
- spacing := styleString copyFrom:(i+1).
- styleString := styleString copyTo:(i-1).
+ or:[styleString endsWith:'-semicondensed']]) ifTrue:[
+ |i|
+ i := styleString lastIndexOf:$-.
+ spacing := styleString copyFrom:(i+1).
+ styleString := styleString copyTo:(i-1).
] ifFalse:[
- spacing := 'normal'.
+ spacing := 'normal'.
].
xlatedStyle := styleString.
xlatedStyle notNil ifTrue:[
- xlatedStyle := xlatedStyle first asString
+ xlatedStyle := xlatedStyle first asString
].
encoding isNil ifTrue:[
- encodingMatch := '*-*'.
+ encodingMatch := '*-*'.
] ifFalse:[
- idx := encoding indexOf:$-.
- idx ~~ 0 ifTrue:[
- encodingMatch := encoding
- ] ifFalse:[
- encodingMatch := encoding , '-*'.
- ].
+ idx := encoding indexOf:$-.
+ idx ~~ 0 ifTrue:[
+ encodingMatch := encoding
+ ] ifFalse:[
+ encodingMatch := encoding , '-*'.
+ ].
].
id := self
- getFontWithFoundry:'*'
- family:familyString asLowercase
- weight:faceString
- slant:xlatedStyle
- spacing:spacing
- pixelSize:pixelSize
- size:pointSize
- encoding:encodingMatch.
+ getFontWithFoundry:'*'
+ family:familyString asLowercase
+ weight:faceString
+ slant:xlatedStyle
+ spacing:spacing
+ pixelSize:pixelSize
+ size:pointSize
+ encoding:encodingMatch.
id isNil ifTrue:[
- (encodingMatch notNil and:[encodingMatch ~= '*']) ifTrue:[
- "/ too stupid: registries come in both cases
- "/ and X does not ignore case
- "/
- id := self
- getFontWithFoundry:'*'
- family:familyString asLowercase
- weight:faceString
- slant:xlatedStyle
- spacing:spacing
- pixelSize:nil
- size:roundedSize
- encoding:encodingMatch asUppercase.
- id isNil ifTrue:[
- id := self
- getFontWithFoundry:'*'
- family:familyString asLowercase
- weight:faceString
- slant:xlatedStyle
- spacing:spacing
- pixelSize:nil
- size:roundedSize
- encoding:encodingMatch asLowercase.
- ]
- ]
+ (encodingMatch notNil and:[encodingMatch ~= '*']) ifTrue:[
+ "/ too stupid: registries come in both cases
+ "/ and X does not ignore case
+ "/
+ id := self
+ getFontWithFoundry:'*'
+ family:familyString asLowercase
+ weight:faceString
+ slant:xlatedStyle
+ spacing:spacing
+ pixelSize:nil
+ size:roundedSize
+ encoding:encodingMatch asUppercase.
+ id isNil ifTrue:[
+ id := self
+ getFontWithFoundry:'*'
+ family:familyString asLowercase
+ weight:faceString
+ slant:xlatedStyle
+ spacing:spacing
+ pixelSize:nil
+ size:roundedSize
+ encoding:encodingMatch asLowercase.
+ ]
+ ]
].
^ id
@@ -7213,8 +7224,8 @@
!
getFontWithFoundry:foundry family:family weight:weight
- slant:slant spacing:spc pixelSize:pSize size:size
- encoding:encoding
+ slant:slant spacing:spc pixelSize:pSize size:size
+ encoding:encoding
"get the specified font, if not available, return nil.
This is the new font creation method - all others will be changed to
@@ -7237,64 +7248,64 @@
"this works only on 'Release >= 3' - X-servers"
"name is:
- -foundry-family -weight -slant-
- sony helvetica bold r
- adobe courier medium i
- msic fixed o
- ... ...
+ -foundry-family -weight -slant-
+ sony helvetica bold r
+ adobe courier medium i
+ msic fixed o
+ ... ...
"
size isNil ifTrue:[
- sizeMatch := '*'
+ sizeMatch := '*'
] ifFalse:[
- sizeMatch := size printString , '0'
+ sizeMatch := size printString , '0'
].
foundry isNil ifTrue:[
- foundryMatch := '*'
+ foundryMatch := '*'
] ifFalse:[
- foundryMatch := foundry
+ foundryMatch := foundry
].
family isNil ifTrue:[
- familyMatch := '*'
+ familyMatch := '*'
] ifFalse:[
- familyMatch := family
+ familyMatch := family
].
weight isNil ifTrue:[
- weightMatch := '*'
+ weightMatch := '*'
] ifFalse:[
- weightMatch := weight
+ weightMatch := weight
].
slant isNil ifTrue:[
- slantMatch := '*'
+ slantMatch := '*'
] ifFalse:[
- slantMatch := slant
+ slantMatch := slant
].
spc isNil ifTrue:[
- spcMatch := '*'
+ spcMatch := '*'
] ifFalse:[
- spcMatch := spc
+ spcMatch := spc
].
pSize isNil ifTrue:[
- pSizeMatch := '*'
+ pSizeMatch := '*'
] ifFalse:[
- pSizeMatch := pSize printString
+ pSizeMatch := pSize printString
].
encoding isNil ifTrue:[
- encodingMatch := '*'
+ encodingMatch := '*'
] ifFalse:[
- encodingMatch := encoding
+ encodingMatch := encoding
].
theName := ('-' , foundryMatch,
- '-' , familyMatch,
- '-' , weightMatch ,
- '-' , slantMatch ,
- '-' , spcMatch ,
- '-*' ,
- '-' , pSizeMatch ,
- '-' , sizeMatch ,
- '-*-*-*-*' ,
- '-' , encodingMatch).
+ '-' , familyMatch,
+ '-' , weightMatch ,
+ '-' , slantMatch ,
+ '-' , spcMatch ,
+ '-*' ,
+ '-' , pSizeMatch ,
+ '-' , sizeMatch ,
+ '-*-*-*-*' ,
+ '-' , encodingMatch).
"/ Transcript showCR:theName; endEntry.
@@ -7303,24 +7314,24 @@
"
Display
- getFontWithFoundry:'*'
- family:'courier'
- weight:'medium'
- slant:'r'
- spacing:nil
- pixelSize:nil
- size:13
- encoding:#'iso8859-1'.
+ getFontWithFoundry:'*'
+ family:'courier'
+ weight:'medium'
+ slant:'r'
+ spacing:nil
+ pixelSize:nil
+ size:13
+ encoding:#'iso8859-1'.
Display
- getFontWithFoundry:'*'
- family:'courier'
- weight:'medium'
- slant:'r'
- spacing:nil
- pixelSize:nil
- size:13
- encoding:#'iso10646-1'
+ getFontWithFoundry:'*'
+ family:'courier'
+ weight:'medium'
+ slant:'r'
+ spacing:nil
+ pixelSize:nil
+ size:13
+ encoding:#'iso10646-1'
"
"Modified: 10.4.1997 / 19:15:44 / cg"
@@ -7335,20 +7346,20 @@
"
Screen current
- heightOf:'hello world' from:1 to:10
- inFont:(Screen current getFontWithFoundry:'*'
- family:'courier new'
- weight:'medium'
- slant:'r'
- spacing:nil
- pixelSize:nil
- size:13
- encoding:#'iso10646-1'
- ).
+ heightOf:'hello world' from:1 to:10
+ inFont:(Screen current getFontWithFoundry:'*'
+ family:'courier new'
+ weight:'medium'
+ slant:'r'
+ spacing:nil
+ pixelSize:nil
+ size:13
+ encoding:#'iso10646-1'
+ ).
Screen current
- heightOf:'hello World gggÖÜ' from:1 to:15
- inFont:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
+ heightOf:'hello World gggÖÜ' from:1 to:15
+ inFont:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
"
!
@@ -7361,13 +7372,13 @@
|names|
listOfXFonts isNil ifTrue:[
- names := self getAvailableFontsMatching:'*'.
- names isNil ifTrue:[
- "no names returned ..."
- ^ nil
- ].
- listOfXFonts := names collect:[:aName | self fontDescriptionFromXFontName:aName].
- listOfXFonts := FontDescription genericFonts, listOfXFonts.
+ names := self getAvailableFontsMatching:'*'.
+ names isNil ifTrue:[
+ "no names returned ..."
+ ^ nil
+ ].
+ listOfXFonts := names collect:[:aName | self fontDescriptionFromXFontName:aName].
+ listOfXFonts := FontDescription genericFonts, listOfXFonts.
].
^ listOfXFonts
@@ -7393,10 +7404,10 @@
sizes := super pixelSizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter.
(sizes notNil and:[sizes isEmpty or:[sizes includes:0]]) ifTrue:[
- "special: in X11R5 and above, size 0 means:
- there are scaled versions in all sizes available"
-
- ^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
+ "special: in X11R5 and above, size 0 means:
+ there are scaled versions in all sizes available"
+
+ ^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
].
^ sizes
@@ -7417,21 +7428,21 @@
* ignore closed connection
*/
if (! ISCONNECTED) {
- RETURN ( self );
+ RETURN ( self );
}
if (__isExternalAddress(aFontId)) {
- f = __FontVal(aFontId);
- if (f) {
-
- ENTER_XLIB();
- XFreeFont(myDpy, f);
- LEAVE_XLIB();
+ f = __FontVal(aFontId);
+ if (f) {
+
+ ENTER_XLIB();
+ XFreeFont(myDpy, f);
+ LEAVE_XLIB();
#ifdef COUNT_RESOURCES
- __cnt_font--;
-#endif
- }
- RETURN ( self );
+ __cnt_font--;
+#endif
+ }
+ RETURN ( self );
}
%}.
self primitiveFailed
@@ -7446,10 +7457,10 @@
sizes := super sizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter.
(sizes notNil and:[sizes includes:0]) ifTrue:[
- "special: in X11R5 and above, size 0 means:
- there are scaled versions in all sizes available"
-
- ^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
+ "special: in X11R5 and above, size 0 means:
+ there are scaled versions in all sizes available"
+
+ ^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
].
^ sizes
@@ -7476,185 +7487,185 @@
XCharStruct overAllReturn;
if (ISCONNECTED) {
- if (__bothSmallInteger(index1, index2)
- && __isExternalAddress(aFontId)
- && __isNonNilObject(aString)) {
- int lMax = __intVal(@global(MaxStringLength));
- f = __FontVal(aFontId);
- if (! f) goto fail;
-
- i1 = __intVal(index1) - 1;
-
- if (i1 >= 0) {
- OBJ cls;
-
- i2 = __intVal(index2) - 1;
- if (i2 < i1) {
- RETURN ( __MKSMALLINT(0) );
- }
-
- cp = (char *) __stringVal(aString);
- l = i2 - i1 + 1;
-
- if (__isStringLike(aString)) {
- n = __stringSize(aString);
- if (i2 < n) {
- cp += i1;
+ if (__bothSmallInteger(index1, index2)
+ && __isExternalAddress(aFontId)
+ && __isNonNilObject(aString)) {
+ int lMax = __intVal(@global(MaxStringLength));
+ f = __FontVal(aFontId);
+ if (! f) goto fail;
+
+ i1 = __intVal(index1) - 1;
+
+ if (i1 >= 0) {
+ OBJ cls;
+
+ i2 = __intVal(index2) - 1;
+ if (i2 < i1) {
+ RETURN ( __MKSMALLINT(0) );
+ }
+
+ cp = (char *) __stringVal(aString);
+ l = i2 - i1 + 1;
+
+ if (__isStringLike(aString)) {
+ n = __stringSize(aString);
+ if (i2 < n) {
+ cp += i1;
#if 1
- len = XTextExtents(f, cp, l,
- &directionReturn, &fontAscentReturn, &fontDescentReturn,
- &overAllReturn);
- //console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width);
- RETURN ( __MKSMALLINT(overAllReturn.width) );
+ len = XTextExtents(f, cp, l,
+ &directionReturn, &fontAscentReturn, &fontDescentReturn,
+ &overAllReturn);
+ //console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width);
+ RETURN ( __MKSMALLINT(overAllReturn.width) );
#else
- ENTER_XLIB();
- len = XTextWidth(f, cp, l);
- LEAVE_XLIB();
- RETURN ( __MKSMALLINT(len) );
-#endif
- }
- }
-
- cls = __qClass(aString);
- nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
- cp += nInstBytes;
-
- if (__isBytes(aString)) {
- n = __byteArraySize(aString) - nInstBytes;
- if (i2 < n) {
- cp += i1;
+ ENTER_XLIB();
+ len = XTextWidth(f, cp, l);
+ LEAVE_XLIB();
+ RETURN ( __MKSMALLINT(len) );
+#endif
+ }
+ }
+
+ cls = __qClass(aString);
+ nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+ cp += nInstBytes;
+
+ if (__isBytes(aString)) {
+ n = __byteArraySize(aString) - nInstBytes;
+ if (i2 < n) {
+ cp += i1;
#if 1
- len = XTextExtents(f, cp, l,
- &directionReturn, &fontAscentReturn, &fontDescentReturn,
- &overAllReturn);
- RETURN ( __MKSMALLINT(overAllReturn.width) );
+ len = XTextExtents(f, cp, l,
+ &directionReturn, &fontAscentReturn, &fontDescentReturn,
+ &overAllReturn);
+ RETURN ( __MKSMALLINT(overAllReturn.width) );
#else
- ENTER_XLIB();
- len = XTextWidth(f, cp, l);
- LEAVE_XLIB();
- RETURN ( __MKSMALLINT(len) );
-#endif
- }
- }
-
- /* TWOBYTESTRINGS */
- if (__isWords(aString)) {
- n = (__byteArraySize(aString) - nInstBytes) / 2;
-
- if (i2 < n) {
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2 = (XChar2b *)0;
- int mustFree = 0;
-
- cp += (i1 * 2);
- if (l > lMax) l = lMax;
-
- /*
- * ST/X TwoByteStrings store the asciiValue in native byteOrder;
- * X expects them MSB first
- * convert as required
- */
-
- u.s = 0x1234;
- if (u.b[0] != 0x12) {
- if (l <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(l * 2));
- mustFree = 1;
- }
- for (i=0; i<l; i++) {
- cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
- cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
- }
- cp = (char *) cp2;
- }
+ ENTER_XLIB();
+ len = XTextWidth(f, cp, l);
+ LEAVE_XLIB();
+ RETURN ( __MKSMALLINT(len) );
+#endif
+ }
+ }
+
+ /* TWOBYTESTRINGS */
+ if (__isWords(aString)) {
+ n = (__byteArraySize(aString) - nInstBytes) / 2;
+
+ if (i2 < n) {
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2 = (XChar2b *)0;
+ int mustFree = 0;
+
+ cp += (i1 * 2);
+ if (l > lMax) l = lMax;
+
+ /*
+ * ST/X TwoByteStrings store the asciiValue in native byteOrder;
+ * X expects them MSB first
+ * convert as required
+ */
+
+ u.s = 0x1234;
+ if (u.b[0] != 0x12) {
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
+ cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
+ }
+ cp = (char *) cp2;
+ }
#if 1
- len = XTextExtents16(f, (XChar2b *)cp, l,
- &directionReturn, &fontAscentReturn, &fontDescentReturn,
- &overAllReturn);
- len = overAllReturn.width;
+ len = XTextExtents16(f, (XChar2b *)cp, l,
+ &directionReturn, &fontAscentReturn, &fontDescentReturn,
+ &overAllReturn);
+ len = overAllReturn.width;
#else
- ENTER_XLIB();
- len = XTextWidth16(f, (XChar2b *)cp, l);
- LEAVE_XLIB();
-#endif
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( __MKSMALLINT(len) );
- }
- }
- /* FOURBYTESTRINGS */
- if (__isLongs(aString)) {
- int i;
- XChar2b *cp2;
- int mustFree = 0;
-
- n = (__byteArraySize(aString) - nInstBytes) / 4;
- if (i2 < n) {
- union {
- char b[2];
- unsigned short s;
- } u;
- int i;
- XChar2b *cp2 = (XChar2b *)0;
- int mustFree = 0;
-
- cp += (i1 * 4);
- if (l > lMax) l = lMax;
-
- /*
- * For now: X does not support 32bit characters without the new 32Unicode extensions.
- * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
- */
- if (l <= NLOCALBUFFER) {
- cp2 = xlatebuffer;
- } else {
- cp2 = (XChar2b *)(malloc(l * 2));
- mustFree = 1;
- }
- for (i=0; i<l; i++) {
- int codePoint;
-
- codePoint = ((unsigned int32 *)cp)[i];
- if (codePoint > 0xFFFF) {
- codePoint = 0xFFFF;
- }
- cp2[i].byte1 = codePoint & 0xFF;
- cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
- }
- cp = (char *) cp2;
+ ENTER_XLIB();
+ len = XTextWidth16(f, (XChar2b *)cp, l);
+ LEAVE_XLIB();
+#endif
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( __MKSMALLINT(len) );
+ }
+ }
+ /* FOURBYTESTRINGS */
+ if (__isLongs(aString)) {
+ int i;
+ XChar2b *cp2;
+ int mustFree = 0;
+
+ n = (__byteArraySize(aString) - nInstBytes) / 4;
+ if (i2 < n) {
+ union {
+ char b[2];
+ unsigned short s;
+ } u;
+ int i;
+ XChar2b *cp2 = (XChar2b *)0;
+ int mustFree = 0;
+
+ cp += (i1 * 4);
+ if (l > lMax) l = lMax;
+
+ /*
+ * For now: X does not support 32bit characters without the new 32Unicode extensions.
+ * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
+ */
+ if (l <= NLOCALBUFFER) {
+ cp2 = xlatebuffer;
+ } else {
+ cp2 = (XChar2b *)(malloc(l * 2));
+ mustFree = 1;
+ }
+ for (i=0; i<l; i++) {
+ int codePoint;
+
+ codePoint = ((unsigned int32 *)cp)[i];
+ if (codePoint > 0xFFFF) {
+ codePoint = 0xFFFF;
+ }
+ cp2[i].byte1 = codePoint & 0xFF;
+ cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
+ }
+ cp = (char *) cp2;
#if 1
- len = XTextExtents16(f, (XChar2b *)cp, l,
- &directionReturn, &fontAscentReturn, &fontDescentReturn,
- &overAllReturn);
- len = overAllReturn.width;
+ len = XTextExtents16(f, (XChar2b *)cp, l,
+ &directionReturn, &fontAscentReturn, &fontDescentReturn,
+ &overAllReturn);
+ len = overAllReturn.width;
#else
- ENTER_XLIB();
- len = XTextWidth16(f, (XChar2b *)cp, l);
- LEAVE_XLIB();
-#endif
-
- if (mustFree) {
- free(cp2);
- }
-
- RETURN ( __MKSMALLINT(len) );
- }
- }
- }
- }
+ ENTER_XLIB();
+ len = XTextWidth16(f, (XChar2b *)cp, l);
+ LEAVE_XLIB();
+#endif
+
+ if (mustFree) {
+ free(cp2);
+ }
+
+ RETURN ( __MKSMALLINT(len) );
+ }
+ }
+ }
+ }
}
#undef NLOCALBUFFER
fail: ;
@@ -7672,31 +7683,31 @@
int _mode, ok = 1;
if (mode == @symbol(asyncPointer))
- _mode = AsyncPointer;
+ _mode = AsyncPointer;
else if (mode == @symbol(syncPointer))
- _mode = SyncPointer;
+ _mode = SyncPointer;
else if (mode == @symbol(asyncKeyboard))
- _mode = AsyncKeyboard;
+ _mode = AsyncKeyboard;
else if (mode == @symbol(syncKeyboard))
- _mode = SyncKeyboard;
+ _mode = SyncKeyboard;
else if (mode == @symbol(syncBoth))
- _mode = SyncBoth;
+ _mode = SyncBoth;
else if (mode == @symbol(asyncBoth))
- _mode = AsyncBoth;
+ _mode = AsyncBoth;
else if (mode == @symbol(replayPointer))
- _mode = ReplayPointer;
+ _mode = ReplayPointer;
else if (mode == @symbol(replayKeyboard))
- _mode = ReplayKeyboard;
+ _mode = ReplayKeyboard;
else
- ok = 0;
+ ok = 0;
if (ok
&& ISCONNECTED) {
- ENTER_XLIB();
- XAllowEvents(myDpy, _mode, CurrentTime);
- LEAVE_XLIB();
-
- RETURN (self);
+ ENTER_XLIB();
+ XAllowEvents(myDpy, _mode, CurrentTime);
+ LEAVE_XLIB();
+
+ RETURN (self);
}
%}.
self primitiveFailedOrClosedConnection
@@ -7710,52 +7721,52 @@
int result, ok;
if (ISCONNECTED) {
- if (__isExternalAddress(aWindowId)) {
-
- ENTER_XLIB();
- result = XGrabKeyboard(myDpy,
- __WindowVal(aWindowId),
- True /* False */,
- GrabModeAsync,
- GrabModeAsync,
- CurrentTime);
- LEAVE_XLIB();
-
- ok = 0;
- switch(result) {
- case AlreadyGrabbed:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: AlreadyGrabbed\n");
- }
- break;
- case GrabNotViewable:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: GrabNotViewable\n");
- }
- break;
- case GrabInvalidTime:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: InvalidTime\n");
- }
- break;
- case GrabFrozen:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: Frozen\n");
- }
- break;
- default:
- ok = 1;
- break;
- }
- if (! ok) {
- ENTER_XLIB();
- XUngrabKeyboard(myDpy, CurrentTime);
- LEAVE_XLIB();
- RETURN (false);
- }
-
- RETURN ( true );
- }
+ if (__isExternalAddress(aWindowId)) {
+
+ ENTER_XLIB();
+ result = XGrabKeyboard(myDpy,
+ __WindowVal(aWindowId),
+ True /* False */,
+ GrabModeAsync,
+ GrabModeAsync,
+ CurrentTime);
+ LEAVE_XLIB();
+
+ ok = 0;
+ switch(result) {
+ case AlreadyGrabbed:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: AlreadyGrabbed\n");
+ }
+ break;
+ case GrabNotViewable:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: GrabNotViewable\n");
+ }
+ break;
+ case GrabInvalidTime:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: InvalidTime\n");
+ }
+ break;
+ case GrabFrozen:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: Frozen\n");
+ }
+ break;
+ default:
+ ok = 1;
+ break;
+ }
+ if (! ok) {
+ ENTER_XLIB();
+ XUngrabKeyboard(myDpy, CurrentTime);
+ LEAVE_XLIB();
+ RETURN (false);
+ }
+
+ RETURN ( true );
+ }
}
%}.
self primitiveFailedOrClosedConnection.
@@ -7774,88 +7785,88 @@
int pointer_mode, keyboard_mode;
if (ISCONNECTED) {
- if (__isExternalAddress(aWindowId)) {
- if (__isExternalAddress(confineId))
- confineWin = __WindowVal(confineId);
- else
- confineWin = (Window) None;
-
- if (__isExternalAddress(aCursorId))
- curs = __CursorVal(aCursorId);
- else
- curs = (Cursor) None;
-
- if (pMode == @symbol(sync))
- pointer_mode = GrabModeSync;
- else
- pointer_mode = GrabModeAsync;
-
- if (kMode == @symbol(sync))
- keyboard_mode = GrabModeSync;
- else
- keyboard_mode = GrabModeAsync;
-
- if (__isSmallInteger(eventMask))
- evMask = __intVal(eventMask);
- else
- evMask = ButtonPressMask | ButtonMotionMask | PointerMotionMask | ButtonReleaseMask;
+ if (__isExternalAddress(aWindowId)) {
+ if (__isExternalAddress(confineId))
+ confineWin = __WindowVal(confineId);
+ else
+ confineWin = (Window) None;
+
+ if (__isExternalAddress(aCursorId))
+ curs = __CursorVal(aCursorId);
+ else
+ curs = (Cursor) None;
+
+ if (pMode == @symbol(sync))
+ pointer_mode = GrabModeSync;
+ else
+ pointer_mode = GrabModeAsync;
+
+ if (kMode == @symbol(sync))
+ keyboard_mode = GrabModeSync;
+ else
+ keyboard_mode = GrabModeAsync;
+
+ if (__isSmallInteger(eventMask))
+ evMask = __intVal(eventMask);
+ else
+ evMask = ButtonPressMask | ButtonMotionMask | PointerMotionMask | ButtonReleaseMask;
/*
- ENTER_XLIB();
+ ENTER_XLIB();
*/
- result = XGrabPointer(myDpy,
- __WindowVal(aWindowId),
- False,
- evMask,
- pointer_mode, keyboard_mode,
- confineWin,
- curs,
- CurrentTime);
+ result = XGrabPointer(myDpy,
+ __WindowVal(aWindowId),
+ False,
+ evMask,
+ pointer_mode, keyboard_mode,
+ confineWin,
+ curs,
+ CurrentTime);
/*
- LEAVE_XLIB();
+ LEAVE_XLIB();
*/
- ok = 0;
- switch (result) {
- case AlreadyGrabbed:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab pointer: AlreadyGrabbed\n");
- }
- break;
- case GrabNotViewable:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab pointer: GrabNotViewable\n");
- }
- break;
- case GrabInvalidTime:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab pointer: InvalidTime\n");
- }
- break;
- case GrabFrozen:
- if (@global(ErrorPrinting) == true) {
- console_fprintf(stderr, "XWorkstation [warning]: grab pointer: Frozen\n");
- }
- break;
- default:
- ok = 1;
- break;
- }
-
- if (! ok) {
+ ok = 0;
+ switch (result) {
+ case AlreadyGrabbed:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab pointer: AlreadyGrabbed\n");
+ }
+ break;
+ case GrabNotViewable:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab pointer: GrabNotViewable\n");
+ }
+ break;
+ case GrabInvalidTime:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab pointer: InvalidTime\n");
+ }
+ break;
+ case GrabFrozen:
+ if (@global(ErrorPrinting) == true) {
+ console_fprintf(stderr, "XWorkstation [warning]: grab pointer: Frozen\n");
+ }
+ break;
+ default:
+ ok = 1;
+ break;
+ }
+
+ if (! ok) {
/*
- ENTER_XLIB();
+ ENTER_XLIB();
*/
- XUngrabPointer(myDpy, CurrentTime);
+ XUngrabPointer(myDpy, CurrentTime);
/*
- LEAVE_XLIB();
+ LEAVE_XLIB();
*/
- RETURN (false);
- }
- RETURN ( true );
- }
+ RETURN (false);
+ }
+ RETURN ( true );
+ }
}
%}.
self primitiveFailedOrClosedConnection.
@@ -7866,12 +7877,12 @@
"grap the pointer - return true if ok"
^ self
- grabPointerIn:aWindowId
- withCursor:aCursorId
- eventMask:nil
- pointerMode:pMode
- keyboardMode:kMode
- confineTo:confineId
+ grabPointerIn:aWindowId
+ withCursor:aCursorId
+ eventMask:nil
+ pointerMode:pMode
+ keyboardMode:kMode
+ confineTo:confineId
"Modified: / 28.7.1998 / 02:47:51 / cg"
!
@@ -7883,12 +7894,12 @@
%{
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- ENTER_XLIB();
- XUngrabKeyboard(dpy, CurrentTime);
- XSync(dpy, 0);
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+ ENTER_XLIB();
+ XUngrabKeyboard(dpy, CurrentTime);
+ XSync(dpy, 0);
+ LEAVE_XLIB();
}
%}.
@@ -7901,12 +7912,12 @@
%{
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- ENTER_XLIB();
- XUngrabPointer(dpy, CurrentTime);
- XSync(dpy, 0);
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+ ENTER_XLIB();
+ XUngrabPointer(dpy, CurrentTime);
+ XSync(dpy, 0);
+ LEAVE_XLIB();
}
%}.
@@ -7916,8 +7927,8 @@
"release the keyboard"
activeKeyboardGrab notNil ifTrue:[
- activeKeyboardGrab := nil.
- self primUngrabKeyboard.
+ activeKeyboardGrab := nil.
+ self primUngrabKeyboard.
]
!
@@ -7925,8 +7936,8 @@
"release the pointer"
activePointerGrab notNil ifTrue:[
- activePointerGrab := nil.
- self primUngrabPointer.
+ activePointerGrab := nil.
+ self primUngrabPointer.
]
! !
@@ -7942,14 +7953,14 @@
GC gc;
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
- gcv.clip_mask = None;
- ENTER_XLIB();
- XChangeGC(myDpy, gc, GCClipMask, &gcv);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+ gcv.clip_mask = None;
+ ENTER_XLIB();
+ XChangeGC(myDpy, gc, GCClipMask, &gcv);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -7962,13 +7973,13 @@
%{
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)
- && __isSmallInteger(bgColorIndex)) {
- ENTER_XLIB();
- XSetBackground(myDpy, __GCVal(aGCId), __intVal(bgColorIndex));
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)
+ && __isSmallInteger(bgColorIndex)) {
+ ENTER_XLIB();
+ XSetBackground(myDpy, __GCVal(aGCId), __intVal(bgColorIndex));
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -7984,25 +7995,25 @@
Pixmap bitmap;
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- if (__isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
- if (__isExternalAddress(aBitmapId)) {
- bitmap = __PixmapVal(aBitmapId);
- ENTER_XLIB();
- XSetStipple(dpy, gc, bitmap);
- XSetFillStyle(dpy, gc, FillOpaqueStippled);
- LEAVE_XLIB();
- RETURN ( self );
- }
- if (aBitmapId == nil) {
- ENTER_XLIB();
- XSetFillStyle(dpy, gc, FillSolid);
- LEAVE_XLIB();
- RETURN ( self );
- }
- }
+ Display *dpy = myDpy;
+
+ if (__isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+ if (__isExternalAddress(aBitmapId)) {
+ bitmap = __PixmapVal(aBitmapId);
+ ENTER_XLIB();
+ XSetStipple(dpy, gc, bitmap);
+ XSetFillStyle(dpy, gc, FillOpaqueStippled);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ if (aBitmapId == nil) {
+ ENTER_XLIB();
+ XSetFillStyle(dpy, gc, FillSolid);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -8018,18 +8029,18 @@
GC gc;
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
- if (aBool == true)
- gcv.subwindow_mode = ClipByChildren;
- else
- gcv.subwindow_mode = IncludeInferiors;
-
- ENTER_XLIB();
- XChangeGC(myDpy, gc, GCSubwindowMode, &gcv);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+ if (aBool == true)
+ gcv.subwindow_mode = ClipByChildren;
+ else
+ gcv.subwindow_mode = IncludeInferiors;
+
+ ENTER_XLIB();
+ XChangeGC(myDpy, gc, GCSubwindowMode, &gcv);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -8044,18 +8055,18 @@
XRectangle r;
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)
- && __bothSmallInteger(clipX, clipY)
- && __bothSmallInteger(clipWidth, clipHeight)) {
- r.x = __intVal(clipX);
- r.y = __intVal(clipY);
- r.width = __intVal(clipWidth);
- r.height = __intVal(clipHeight);
- ENTER_XLIB();
- XSetClipRectangles(myDpy, __GCVal(aGCId), 0, 0, &r, 1, Unsorted);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)
+ && __bothSmallInteger(clipX, clipY)
+ && __bothSmallInteger(clipWidth, clipHeight)) {
+ r.x = __intVal(clipX);
+ r.y = __intVal(clipY);
+ r.width = __intVal(clipWidth);
+ r.height = __intVal(clipHeight);
+ ENTER_XLIB();
+ XSetClipRectangles(myDpy, __GCVal(aGCId), 0, 0, &r, 1, Unsorted);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -8068,17 +8079,17 @@
%{
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)
- && __isSmallInteger(offset)
- && __isByteArrayLike(dashList)) {
- ENTER_XLIB();
- XSetDashes(myDpy, __GCVal(aGCId),
- __intVal(offset),
- __ByteArrayInstPtr(dashList)->ba_element,
- __byteArraySize(dashList));
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)
+ && __isSmallInteger(offset)
+ && __isByteArrayLike(dashList)) {
+ ENTER_XLIB();
+ XSetDashes(myDpy, __GCVal(aGCId),
+ __intVal(offset),
+ __ByteArrayInstPtr(dashList)->ba_element,
+ __byteArraySize(dashList));
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
bad: ;
%}.
@@ -8099,14 +8110,14 @@
XFontStruct *f;
if (ISCONNECTED) {
- if (__isExternalAddress(aFontId)
- && __isExternalAddress(aGCId)) {
- f = (XFontStruct *) __FontVal(aFontId);
- ENTER_XLIB();
- XSetFont(myDpy, __GCVal(aGCId), f->fid);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aFontId)
+ && __isExternalAddress(aGCId)) {
+ f = (XFontStruct *) __FontVal(aFontId);
+ ENTER_XLIB();
+ XSetFont(myDpy, __GCVal(aGCId), f->fid);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
"
@@ -8124,17 +8135,17 @@
GC gc;
if (ISCONNECTED) {
- Display *dpy = myDpy;
- if (__bothSmallInteger(fgColorIndex, bgColorIndex)
- && __isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
-
- ENTER_XLIB();
- XSetForeground(dpy, gc, __intVal(fgColorIndex));
- XSetBackground(dpy, gc, __intVal(bgColorIndex));
- LEAVE_XLIB();
- RETURN ( self );
- }
+ Display *dpy = myDpy;
+ if (__bothSmallInteger(fgColorIndex, bgColorIndex)
+ && __isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+
+ ENTER_XLIB();
+ XSetForeground(dpy, gc, __intVal(fgColorIndex));
+ XSetBackground(dpy, gc, __intVal(bgColorIndex));
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -8147,13 +8158,13 @@
%{
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)
- && __isSmallInteger(fgColorIndex)) {
- ENTER_XLIB();
- XSetForeground(myDpy, __GCVal(aGCId), __intVal(fgColorIndex));
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)
+ && __isSmallInteger(fgColorIndex)) {
+ ENTER_XLIB();
+ XSetForeground(myDpy, __GCVal(aGCId), __intVal(fgColorIndex));
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -8169,30 +8180,30 @@
int fun = -1;
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
- if (aFunctionSymbol == @symbol(copy)) fun = GXcopy;
- else if (aFunctionSymbol == @symbol(copyInverted)) fun = GXcopyInverted;
- else if (aFunctionSymbol == @symbol(xor)) fun = GXxor;
- else if (aFunctionSymbol == @symbol(and)) fun = GXand;
- else if (aFunctionSymbol == @symbol(andReverse)) fun = GXandReverse;
- else if (aFunctionSymbol == @symbol(andInverted)) fun = GXandInverted;
- else if (aFunctionSymbol == @symbol(or)) fun = GXor;
- else if (aFunctionSymbol == @symbol(orReverse)) fun = GXorReverse;
- else if (aFunctionSymbol == @symbol(orInverted)) fun = GXorInverted;
- else if (aFunctionSymbol == @symbol(invert)) fun = GXinvert;
- else if (aFunctionSymbol == @symbol(clear)) fun = GXclear;
- else if (aFunctionSymbol == @symbol(set)) fun = GXset;
- else if (aFunctionSymbol == @symbol(noop)) fun = GXnoop;
- else if (aFunctionSymbol == @symbol(equiv)) fun = GXequiv;
- else if (aFunctionSymbol == @symbol(nand)) fun = GXnand;
- if (fun != -1) {
- ENTER_XLIB();
- XSetFunction(myDpy, gc, fun);
- LEAVE_XLIB();
- RETURN ( self );
- }
- }
+ if (__isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+ if (aFunctionSymbol == @symbol(copy)) fun = GXcopy;
+ else if (aFunctionSymbol == @symbol(copyInverted)) fun = GXcopyInverted;
+ else if (aFunctionSymbol == @symbol(xor)) fun = GXxor;
+ else if (aFunctionSymbol == @symbol(and)) fun = GXand;
+ else if (aFunctionSymbol == @symbol(andReverse)) fun = GXandReverse;
+ else if (aFunctionSymbol == @symbol(andInverted)) fun = GXandInverted;
+ else if (aFunctionSymbol == @symbol(or)) fun = GXor;
+ else if (aFunctionSymbol == @symbol(orReverse)) fun = GXorReverse;
+ else if (aFunctionSymbol == @symbol(orInverted)) fun = GXorInverted;
+ else if (aFunctionSymbol == @symbol(invert)) fun = GXinvert;
+ else if (aFunctionSymbol == @symbol(clear)) fun = GXclear;
+ else if (aFunctionSymbol == @symbol(set)) fun = GXset;
+ else if (aFunctionSymbol == @symbol(noop)) fun = GXnoop;
+ else if (aFunctionSymbol == @symbol(equiv)) fun = GXequiv;
+ else if (aFunctionSymbol == @symbol(nand)) fun = GXnand;
+ if (fun != -1) {
+ ENTER_XLIB();
+ XSetFunction(myDpy, gc, fun);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ }
}
%}.
"
@@ -8210,12 +8221,12 @@
%{
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)) {
- ENTER_XLIB();
- XSetGraphicsExposures(myDpy, __GCVal(aGCId), (aBoolean==true)?1:0);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)) {
+ ENTER_XLIB();
+ XSetGraphicsExposures(myDpy, __GCVal(aGCId), (aBoolean==true)?1:0);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -8239,56 +8250,56 @@
int x_nDash;
if (ISCONNECTED) {
- if (__isExternalAddress(aGCId)
- && __isSmallInteger(aNumber)) {
- Display *dpy = myDpy;
-
- if (lineStyle == @symbol(solid)) {
- x_dashes = (char *)0;
- x_style = LineSolid;
- } else if (lineStyle == @symbol(dashed)) {
- x_dashes = dashList;
- x_nDash = sizeof(dashList);
- x_style = LineOnOffDash;
- } else if (lineStyle == @symbol(doubleDashed)) {
- x_dashes = dashList;
- x_nDash = sizeof(dashList);
- x_style = LineDoubleDash;
- } else if (lineStyle == @symbol(dotted)) {
- x_dashes = dotList;
- x_nDash = sizeof(dotList);
- x_style = LineOnOffDash;
- } else if (lineStyle == @symbol(dashDot)) {
- x_dashes = dashDotList;
- x_nDash = sizeof(dashDotList);
- x_style = LineOnOffDash;
- } else if (lineStyle == @symbol(dashDotDot)) {
- x_dashes = dashDotDotList;
- x_nDash = sizeof(dashDotDotList);
- x_style = LineOnOffDash;
- } else goto bad;
-
- if (capStyle == @symbol(notLast)) x_cap = CapNotLast;
- else if (capStyle == @symbol(butt)) x_cap = CapButt;
- else if (capStyle == @symbol(round)) x_cap = CapRound;
- else if (capStyle == @symbol(projecting)) x_cap = CapProjecting;
- else goto bad;
-
- if (joinStyle == @symbol(miter)) x_join = JoinMiter;
- else if (joinStyle == @symbol(bevel)) x_join = JoinBevel;
- else if (joinStyle == @symbol(round)) x_join = JoinRound;
- else goto bad;
-
- ENTER_XLIB();
- if (x_dashes) {
- XSetDashes(dpy, __GCVal(aGCId), 0, x_dashes, x_nDash);
- }
- XSetLineAttributes(dpy,
- __GCVal(aGCId), __intVal(aNumber),
- x_style, x_cap, x_join);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aGCId)
+ && __isSmallInteger(aNumber)) {
+ Display *dpy = myDpy;
+
+ if (lineStyle == @symbol(solid)) {
+ x_dashes = (char *)0;
+ x_style = LineSolid;
+ } else if (lineStyle == @symbol(dashed)) {
+ x_dashes = dashList;
+ x_nDash = sizeof(dashList);
+ x_style = LineOnOffDash;
+ } else if (lineStyle == @symbol(doubleDashed)) {
+ x_dashes = dashList;
+ x_nDash = sizeof(dashList);
+ x_style = LineDoubleDash;
+ } else if (lineStyle == @symbol(dotted)) {
+ x_dashes = dotList;
+ x_nDash = sizeof(dotList);
+ x_style = LineOnOffDash;
+ } else if (lineStyle == @symbol(dashDot)) {
+ x_dashes = dashDotList;
+ x_nDash = sizeof(dashDotList);
+ x_style = LineOnOffDash;
+ } else if (lineStyle == @symbol(dashDotDot)) {
+ x_dashes = dashDotDotList;
+ x_nDash = sizeof(dashDotDotList);
+ x_style = LineOnOffDash;
+ } else goto bad;
+
+ if (capStyle == @symbol(notLast)) x_cap = CapNotLast;
+ else if (capStyle == @symbol(butt)) x_cap = CapButt;
+ else if (capStyle == @symbol(round)) x_cap = CapRound;
+ else if (capStyle == @symbol(projecting)) x_cap = CapProjecting;
+ else goto bad;
+
+ if (joinStyle == @symbol(miter)) x_join = JoinMiter;
+ else if (joinStyle == @symbol(bevel)) x_join = JoinBevel;
+ else if (joinStyle == @symbol(round)) x_join = JoinRound;
+ else goto bad;
+
+ ENTER_XLIB();
+ if (x_dashes) {
+ XSetDashes(dpy, __GCVal(aGCId), 0, x_dashes, x_nDash);
+ }
+ XSetLineAttributes(dpy,
+ __GCVal(aGCId), __intVal(aNumber),
+ x_style, x_cap, x_join);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
bad: ;
%}.
@@ -8309,12 +8320,12 @@
%{
if (ISCONNECTED) {
- if (__bothSmallInteger(orgX, orgY) && __isExternalAddress(aGCid)) {
- ENTER_XLIB();
- XSetTSOrigin(myDpy, __GCVal(aGCid), __intVal(orgX), __intVal(orgY));
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__bothSmallInteger(orgX, orgY) && __isExternalAddress(aGCid)) {
+ ENTER_XLIB();
+ XSetTSOrigin(myDpy, __GCVal(aGCid), __intVal(orgX), __intVal(orgY));
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -8330,25 +8341,25 @@
Pixmap pixmap;
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- if (__isExternalAddress(aGCId)) {
- gc = __GCVal(aGCId);
- if (__isExternalAddress(aPixmapId)) {
- pixmap = __PixmapVal(aPixmapId);
- ENTER_XLIB();
- XSetTile(dpy, gc, pixmap);
- XSetFillStyle(dpy, gc, FillTiled);
- LEAVE_XLIB();
- RETURN ( self );
- }
- if (aPixmapId == nil) {
- ENTER_XLIB();
- XSetFillStyle(dpy, gc, FillSolid);
- LEAVE_XLIB();
- RETURN ( self );
- }
- }
+ Display *dpy = myDpy;
+
+ if (__isExternalAddress(aGCId)) {
+ gc = __GCVal(aGCId);
+ if (__isExternalAddress(aPixmapId)) {
+ pixmap = __PixmapVal(aPixmapId);
+ ENTER_XLIB();
+ XSetTile(dpy, gc, pixmap);
+ XSetFillStyle(dpy, gc, FillTiled);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ if (aPixmapId == nil) {
+ ENTER_XLIB();
+ XSetFillStyle(dpy, gc, FillSolid);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -8366,13 +8377,13 @@
%{ /* UNLIMITEDSTACK */ /* calls XSync()! */
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
-
- __INST(displayId) = nil;
- ENTER_XLIB();
- XCloseDisplay(dpy);
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+
+
+ __INST(displayId) = nil;
+ ENTER_XLIB();
+ XCloseDisplay(dpy);
+ LEAVE_XLIB();
}
%}
!
@@ -8383,10 +8394,10 @@
%{
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- __INST(displayId) = nil;
- close(ConnectionNumber(dpy));
+ Display *dpy = myDpy;
+
+ __INST(displayId) = nil;
+ close(ConnectionNumber(dpy));
}
%}
!
@@ -8403,7 +8414,7 @@
application window group"
windowGroupWindow isNil ifTrue:[
- windowGroupWindow := WindowGroupWindow new create.
+ windowGroupWindow := WindowGroupWindow new create.
].
^ windowGroupWindow
!
@@ -8452,15 +8463,15 @@
as hostname:number"
displayId notNil ifTrue:[
- "/ already connected - you bad guy try to trick me manually ?
- ^ self
+ "/ already connected - you bad guy try to trick me manually ?
+ ^ self
].
displayId := self openConnectionTo:aDisplayName.
displayId isNil ifTrue:[
- "/ could not connect.
- DeviceOpenErrorSignal raiseWith:aDisplayName.
- ^ nil
+ "/ could not connect.
+ DeviceOpenErrorSignal raiseWith:aDisplayName.
+ ^ nil
].
xlibTimeout := xlibTimeout ? DefaultXLibTimeout.
@@ -8512,46 +8523,46 @@
map := self modifierMapping.
map isNil ifTrue:[
- "/
- "/ mhmh - a crippled Xlib which does not provide modifier mappings
- "/ setup some reasonable default. If that is not sufficient,
- "/ you have to change things from your display.rc file.
- "/
- altModifierMask := self modifier1Mask.
- metaModifierMask := self modifier2Mask.
+ "/
+ "/ mhmh - a crippled Xlib which does not provide modifier mappings
+ "/ setup some reasonable default. If that is not sufficient,
+ "/ you have to change things from your display.rc file.
+ "/
+ altModifierMask := self modifier1Mask.
+ metaModifierMask := self modifier2Mask.
] ifFalse:[
- | mod symbolFromKeyCode nonNilOnes |
-
- altModifierMask := 0.
- metaModifierMask := 0.
-
- symbolFromKeyCode := [:key | self symbolFromKeycode:key].
- nonNilOnes := [:str | str notNil].
-
- mod := map at:1.
- mod notNil ifTrue:[
- shiftModifiers := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
- ].
- mod := map at:3.
- mod notNil ifTrue:[
- ctrlModifiers := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
- ].
- mod := map at:4.
- mod notNil ifTrue:[
- mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
- (mod includes:#'Num_Lock') ifFalse:[
- metaModifiers := mod.
- metaModifierMask := 1 bitShift:(4-1).
- ].
- ].
- mod := map at:5.
- mod notNil ifTrue:[
- mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
- (mod includes:#'Num_Lock') ifFalse:[
- altModifiers := mod.
- altModifierMask := 1 bitShift:(5-1).
- ].
- ]
+ | mod symbolFromKeyCode nonNilOnes |
+
+ altModifierMask := 0.
+ metaModifierMask := 0.
+
+ symbolFromKeyCode := [:key | self symbolFromKeycode:key].
+ nonNilOnes := [:str | str notNil].
+
+ mod := map at:1.
+ mod notNil ifTrue:[
+ shiftModifiers := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
+ ].
+ mod := map at:3.
+ mod notNil ifTrue:[
+ ctrlModifiers := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
+ ].
+ mod := map at:4.
+ mod notNil ifTrue:[
+ mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
+ (mod includes:#'Num_Lock') ifFalse:[
+ metaModifiers := mod.
+ metaModifierMask := 1 bitShift:(4-1).
+ ].
+ ].
+ mod := map at:5.
+ mod notNil ifTrue:[
+ mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
+ (mod includes:#'Num_Lock') ifFalse:[
+ altModifiers := mod.
+ altModifierMask := 1 bitShift:(5-1).
+ ].
+ ]
].
"
@@ -8563,25 +8574,25 @@
initializeScreenBounds
self isXineramaActive ifTrue:[
- |rect|
-
- self monitorBounds do:[:eachRect|
- rect isNil ifTrue:[
- rect := eachRect.
- ] ifFalse:[
- rect := rect merge:eachRect.
- ]
- ].
- width := rect width.
- height := rect height.
-
- "propagate possible size changes to our rottView"
- rootView notNil ifTrue:[
- rootView initialize.
- ].
+ |rect|
+
+ self monitorBounds do:[:eachRect|
+ rect isNil ifTrue:[
+ rect := eachRect.
+ ] ifFalse:[
+ rect := rect merge:eachRect.
+ ]
+ ].
+ width := rect width.
+ height := rect height.
+
+ "propagate possible size changes to our rottView"
+ rootView notNil ifTrue:[
+ rootView initialize.
+ ].
] ifFalse:[
- width := self queryWidth.
- height := self queryHeight.
+ width := self queryWidth.
+ height := self queryHeight.
].
widthMM := self queryWidthMM.
heightMM := self queryHeightMM.
@@ -8630,12 +8641,12 @@
hasColors := hasGreyscales := true.
(visualType == #StaticGray
or:[ visualType == #GrayScale]) ifTrue:[
- hasColors := false.
- monitorType := #monochrome.
+ hasColors := false.
+ monitorType := #monochrome.
].
ncells == 2 ifTrue:[
- hasColors := hasGreyscales := false.
+ hasColors := hasGreyscales := false.
].
masks := self queryRGBMasks.
@@ -8645,13 +8656,13 @@
bitsPerRGB := masks at:4.
visualType == #TrueColor ifTrue:[
- redShift := redMask lowBit - 1.
- greenShift := greenMask lowBit - 1.
- blueShift := blueMask lowBit - 1.
-
- bitsRed := redMask highBit - redMask lowBit + 1.
- bitsGreen := greenMask highBit - greenMask lowBit + 1.
- bitsBlue := blueMask highBit - blueMask lowBit + 1.
+ redShift := redMask lowBit - 1.
+ greenShift := greenMask lowBit - 1.
+ blueShift := blueMask lowBit - 1.
+
+ bitsRed := redMask highBit - redMask lowBit + 1.
+ bitsGreen := greenMask highBit - greenMask lowBit + 1.
+ bitsBlue := blueMask highBit - blueMask lowBit + 1.
].
%{
@@ -8670,52 +8681,52 @@
int dummy;
if (ISCONNECTED) {
- dpy = myDpy;
-
- /*
- * look for RGB visual with the highest depth
- */
- nvi = 0;
- viproto.screen = scr;
- vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi);
- maxRGBDepth = maxRGBADepth = 0;
- for (i = 0; i < nvi; i++) {
- int thisDepth = vip[i].depth;
-
- switch (vip[i].class) {
- case TrueColor:
- if (thisDepth > maxRGBDepth) {
- if (thisDepth <= 24) {
- maxRGBDepth = thisDepth;
- rgbRedMask = vip[i].red_mask;
- rgbGreenMask = vip[i].green_mask;
- rgbBlueMask = vip[i].blue_mask;
- rgbVisualID = vip[i].visualid;
- } else {
- if (thisDepth > maxRGBADepth) {
- // printf("found rgba visual!\n");
- maxRGBADepth = thisDepth;
- rgbaRedMask = vip[i].red_mask;
- rgbaGreenMask = vip[i].green_mask;
- rgbaBlueMask = vip[i].blue_mask;
- rgbaVisualID = vip[i].visualid;
- }
- }
- }
- break;
- }
- }
- if (vip) XFree ((char *) vip);
-
- if (maxRGBDepth) {
- __INST(rgbVisual) = __MKEXTERNALADDRESS(rgbVisualID); __STORESELF(rgbVisual);
- }
- if (maxRGBADepth) {
- __INST(rgbaVisual) = __MKEXTERNALADDRESS(rgbaVisualID); __STORESELF(rgbaVisual);
- if (!maxRGBDepth) {
- __INST(rgbVisual) = __INST(rgbaVisual); __STORESELF(rgbVisual);
- }
- }
+ dpy = myDpy;
+
+ /*
+ * look for RGB visual with the highest depth
+ */
+ nvi = 0;
+ viproto.screen = scr;
+ vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi);
+ maxRGBDepth = maxRGBADepth = 0;
+ for (i = 0; i < nvi; i++) {
+ int thisDepth = vip[i].depth;
+
+ switch (vip[i].class) {
+ case TrueColor:
+ if (thisDepth > maxRGBDepth) {
+ if (thisDepth <= 24) {
+ maxRGBDepth = thisDepth;
+ rgbRedMask = vip[i].red_mask;
+ rgbGreenMask = vip[i].green_mask;
+ rgbBlueMask = vip[i].blue_mask;
+ rgbVisualID = vip[i].visualid;
+ } else {
+ if (thisDepth > maxRGBADepth) {
+ // printf("found rgba visual!\n");
+ maxRGBADepth = thisDepth;
+ rgbaRedMask = vip[i].red_mask;
+ rgbaGreenMask = vip[i].green_mask;
+ rgbaBlueMask = vip[i].blue_mask;
+ rgbaVisualID = vip[i].visualid;
+ }
+ }
+ }
+ break;
+ }
+ }
+ if (vip) XFree ((char *) vip);
+
+ if (maxRGBDepth) {
+ __INST(rgbVisual) = __MKEXTERNALADDRESS(rgbVisualID); __STORESELF(rgbVisual);
+ }
+ if (maxRGBADepth) {
+ __INST(rgbaVisual) = __MKEXTERNALADDRESS(rgbaVisualID); __STORESELF(rgbaVisual);
+ if (!maxRGBDepth) {
+ __INST(rgbVisual) = __INST(rgbaVisual); __STORESELF(rgbVisual);
+ }
+ }
}
%}.
!
@@ -8730,17 +8741,17 @@
ignoreBackingStore := false.
(self serverVendor = 'X11/NeWS') ifTrue:[
- "/
- "/ this is a kludge around a bug in the X11/NeWS server,
- "/ which does not correctly handle saveUnder
- "/
- hasSaveUnder := false.
+ "/
+ "/ this is a kludge around a bug in the X11/NeWS server,
+ "/ which does not correctly handle saveUnder
+ "/
+ hasSaveUnder := false.
].
!
initializeUniqueID
uniqueDeviceID isNil ifTrue:[
- uniqueDeviceID := UUID genUUID.
+ uniqueDeviceID := UUID genUUID.
]
!
@@ -8754,24 +8765,24 @@
char *nm;
if (__isStringLike(dpyName))
- nm = (char *) __stringVal(dpyName);
+ nm = (char *) __stringVal(dpyName);
else {
- nm = NULL;
+ nm = NULL;
}
dpy = XOpenDisplay(nm);
if (dpy) {
- static int firstCall = 1;
- OBJ dpyID;
-
- dpyID = __MKEXTERNALADDRESS(dpy);
-
- if (firstCall) {
- firstCall = 0;
- XSetErrorHandler(__XErrorHandler__);
- XSetIOErrorHandler(__XIOErrorHandler__);
- }
- RETURN (dpyID);
+ static int firstCall = 1;
+ OBJ dpyID;
+
+ dpyID = __MKEXTERNALADDRESS(dpy);
+
+ if (firstCall) {
+ firstCall = 0;
+ XSetErrorHandler(__XErrorHandler__);
+ XSetIOErrorHandler(__XIOErrorHandler__);
+ }
+ RETURN (dpyID);
}
%}.
^ nil
@@ -8781,12 +8792,12 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- int scr;
-
- dpy = myDpy;
- scr = DefaultScreen(dpy);
- RETURN ( __MKSMALLINT(BlackPixel(dpy, scr)));
+ Display *dpy;
+ int scr;
+
+ dpy = myDpy;
+ scr = DefaultScreen(dpy);
+ RETURN ( __MKSMALLINT(BlackPixel(dpy, scr)));
}
%}.
^ nil
@@ -8800,12 +8811,12 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- int scr;
-
- dpy = myDpy;
- scr = DefaultScreen(dpy);
- RETURN ( __MKSMALLINT(DisplayCells(dpy, scr)));
+ Display *dpy;
+ int scr;
+
+ dpy = myDpy;
+ scr = DefaultScreen(dpy);
+ RETURN ( __MKSMALLINT(DisplayCells(dpy, scr)));
}
%}.
^ nil
@@ -8820,14 +8831,14 @@
#ifdef DPS
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XQueryExtension(dpy, "DPSExtension", &dummy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XQueryExtension(dpy, "DPSExtension", &dummy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -8842,10 +8853,10 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
-
- dpy = myDpy;
- RETURN ( __MKSMALLINT(DefaultScreen(dpy)));
+ Display *dpy;
+
+ dpy = myDpy;
+ RETURN ( __MKSMALLINT(DefaultScreen(dpy)));
}
%}.
^ nil
@@ -8859,25 +8870,25 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- Visual *visual;
-
- dpy = myDpy;
- visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
- switch (visual->class) {
- case StaticGray:
- RETURN ( @symbol(StaticGray) );
- case GrayScale:
- RETURN ( @symbol(GrayScale) );
- case StaticColor:
- RETURN ( @symbol(StaticColor) );
- case PseudoColor:
- RETURN ( @symbol(PseudoColor) );
- case TrueColor:
- RETURN ( @symbol(TrueColor) );
- case DirectColor:
- RETURN ( @symbol(DirectColor) );
- }
+ Display *dpy;
+ Visual *visual;
+
+ dpy = myDpy;
+ visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
+ switch (visual->class) {
+ case StaticGray:
+ RETURN ( @symbol(StaticGray) );
+ case GrayScale:
+ RETURN ( @symbol(GrayScale) );
+ case StaticColor:
+ RETURN ( @symbol(StaticColor) );
+ case PseudoColor:
+ RETURN ( @symbol(PseudoColor) );
+ case TrueColor:
+ RETURN ( @symbol(TrueColor) );
+ case DirectColor:
+ RETURN ( @symbol(DirectColor) );
+ }
}
%}.
^ nil
@@ -8891,12 +8902,12 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- int scr;
-
- dpy = myDpy;
- scr = DefaultScreen(dpy);
- RETURN ( __MKSMALLINT(DisplayPlanes(dpy, scr)));
+ Display *dpy;
+ int scr;
+
+ dpy = myDpy;
+ scr = DefaultScreen(dpy);
+ RETURN ( __MKSMALLINT(DisplayPlanes(dpy, scr)));
}
%}.
^ nil
@@ -8910,12 +8921,12 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- int scr;
-
- dpy = myDpy;
- scr = DefaultScreen(dpy);
- RETURN ( __MKSMALLINT(DisplayHeight(dpy, scr)));
+ Display *dpy;
+ int scr;
+
+ dpy = myDpy;
+ scr = DefaultScreen(dpy);
+ RETURN ( __MKSMALLINT(DisplayHeight(dpy, scr)));
}
%}.
^ nil
@@ -8929,12 +8940,12 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- int scr;
-
- dpy = myDpy;
- scr = DefaultScreen(dpy);
- RETURN ( __MKSMALLINT(DisplayHeightMM(dpy, scr)));
+ Display *dpy;
+ int scr;
+
+ dpy = myDpy;
+ scr = DefaultScreen(dpy);
+ RETURN ( __MKSMALLINT(DisplayHeightMM(dpy, scr)));
}
%}.
^ nil
@@ -8949,14 +8960,14 @@
#ifdef MBUF
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XQueryExtension(dpy, "Multi-Buffering", &dummy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XQueryExtension(dpy, "Multi-Buffering", &dummy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -8972,14 +8983,14 @@
#ifdef PEX5
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XQueryExtension(dpy, PEX_NAME_STRING, &dummy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XQueryExtension(dpy, PEX_NAME_STRING, &dummy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -8994,17 +9005,17 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- Visual *visual;
- OBJ redMask, greenMask, blueMask, bprgb;
-
- dpy = myDpy;
- visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
- redMask = __MKSMALLINT(visual->red_mask);
- greenMask = __MKSMALLINT(visual->green_mask);
- blueMask = __MKSMALLINT(visual->blue_mask);
- bprgb = __MKSMALLINT(visual->bits_per_rgb);
- RETURN ( __ARRAY_WITH4(redMask, greenMask, blueMask, bprgb) );
+ Display *dpy;
+ Visual *visual;
+ OBJ redMask, greenMask, blueMask, bprgb;
+
+ dpy = myDpy;
+ visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
+ redMask = __MKSMALLINT(visual->red_mask);
+ greenMask = __MKSMALLINT(visual->green_mask);
+ blueMask = __MKSMALLINT(visual->blue_mask);
+ bprgb = __MKSMALLINT(visual->bits_per_rgb);
+ RETURN ( __ARRAY_WITH4(redMask, greenMask, blueMask, bprgb) );
}
%}.
^ nil
@@ -9028,14 +9039,14 @@
#ifdef XRENDER
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XRenderQueryExtension (dpy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XRenderQueryExtension (dpy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -9051,14 +9062,14 @@
#ifdef xxSHM
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XQueryExtension(dpy, "MIT_SHM", &dummy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XQueryExtension(dpy, "MIT_SHM", &dummy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -9074,14 +9085,14 @@
#ifdef SHAPE
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XShapeQueryExtension(dpy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XShapeQueryExtension(dpy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -9096,12 +9107,12 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- int scr;
-
- dpy = myDpy;
- scr = DefaultScreen(dpy);
- RETURN ( __MKSMALLINT(WhitePixel(dpy, scr)));
+ Display *dpy;
+ int scr;
+
+ dpy = myDpy;
+ scr = DefaultScreen(dpy);
+ RETURN ( __MKSMALLINT(WhitePixel(dpy, scr)));
}
%}.
^ nil
@@ -9115,12 +9126,12 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- int scr;
-
- dpy = myDpy;
- scr = DefaultScreen(dpy);
- RETURN ( __MKSMALLINT(DisplayWidth(dpy, scr)));
+ Display *dpy;
+ int scr;
+
+ dpy = myDpy;
+ scr = DefaultScreen(dpy);
+ RETURN ( __MKSMALLINT(DisplayWidth(dpy, scr)));
}
%}.
^ nil
@@ -9134,12 +9145,12 @@
%{ /* NOCONTEXT */
if (ISCONNECTED) {
- Display *dpy;
- int scr;
-
- dpy = myDpy;
- scr = DefaultScreen(dpy);
- RETURN ( __MKSMALLINT(DisplayWidthMM(dpy, scr)));
+ Display *dpy;
+ int scr;
+
+ dpy = myDpy;
+ scr = DefaultScreen(dpy);
+ RETURN ( __MKSMALLINT(DisplayWidthMM(dpy, scr)));
}
%}.
^ nil
@@ -9154,14 +9165,14 @@
#ifdef XIE
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XQueryExtension(dpy, xieExtName, &dummy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XQueryExtension(dpy, xieExtName, &dummy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -9177,14 +9188,14 @@
#ifdef XI
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XQueryExtension(dpy, "XInputExtension", &dummy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XQueryExtension(dpy, "XInputExtension", &dummy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -9200,14 +9211,14 @@
#ifdef XVIDEO
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XQueryExtension(dpy, "XVideo", &dummy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XQueryExtension(dpy, "XVideo", &dummy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -9223,14 +9234,14 @@
#ifdef XINERAMA
if (ISCONNECTED) {
- Display *dpy;
- int dummy;
-
- dpy = myDpy;
-
- if (XineramaQueryExtension (dpy, &dummy, &dummy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ int dummy;
+
+ dpy = myDpy;
+
+ if (XineramaQueryExtension (dpy, &dummy, &dummy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -9243,8 +9254,8 @@
reinitialize
preWaitAction notNil ifTrue:[
- Processor removePreWaitAction:preWaitAction.
- preWaitAction := nil.
+ Processor removePreWaitAction:preWaitAction.
+ preWaitAction := nil.
].
virtualRootId := rootId := nil.
selectionFetchers := nil.
@@ -9254,8 +9265,8 @@
releaseDeviceResources
preWaitAction notNil ifTrue:[
- Processor removePreWaitAction:preWaitAction.
- preWaitAction := nil.
+ Processor removePreWaitAction:preWaitAction.
+ preWaitAction := nil.
].
selectionFetchers := nil.
super releaseDeviceResources.
@@ -9279,7 +9290,7 @@
By default, this is X's modifier1, which is the ALT key on
most keyboards. However, there may be exceptions to this,
and the setting can be changed with:
- Display altModifierMask:(Display modifier2Mask)
+ Display altModifierMask:(Display modifier2Mask)
Setting the mask to 0 disables the ALT key (in ST/X) altogether.
"
@@ -9311,7 +9322,7 @@
most keyboards (if present at all).
However, there may be exceptions to this, and the setting can
be changed with:
- Display metaModifierMask:(Display modifier1Mask)
+ Display metaModifierMask:(Display modifier1Mask)
Setting the mask to 0 disables the META key (in ST/X) altogether.
As reported, some Xservers place the Meta-key onto NumLock,
and having NumLock enabled makes ST/X think, that meta is pressed
@@ -9385,18 +9396,18 @@
ret := Array new:8.
nextKey := 1.
1 to:8 do:[ :i |
- (modifierKeyMap at:nextKey) ~= 0 ifTrue:[
- |mod|
-
- mod := OrderedCollection new:maxKeyPerMod.
- modifierKeyMap from:nextKey to:(nextKey+maxKeyPerMod-1) do:[ :key |
- key ~= 0 ifTrue:[
- mod add:key
- ].
- ].
- ret at:i put:mod asArray.
- ].
- nextKey := nextKey+maxKeyPerMod.
+ (modifierKeyMap at:nextKey) ~= 0 ifTrue:[
+ |mod|
+
+ mod := OrderedCollection new:maxKeyPerMod.
+ modifierKeyMap from:nextKey to:(nextKey+maxKeyPerMod-1) do:[ :key |
+ key ~= 0 ifTrue:[
+ mod add:key
+ ].
+ ].
+ ret at:i put:mod asArray.
+ ].
+ nextKey := nextKey+maxKeyPerMod.
].
^ ret
@@ -9410,12 +9421,12 @@
mapping := Display modifierMapping.
^ mapping collect:[:eachRow |
- eachRow notNil ifTrue:[
- eachRow collect:[ :key | Display stringFromKeycode:key ].
- ] ifFalse:[
- nil
- ]
- ].
+ eachRow notNil ifTrue:[
+ eachRow collect:[ :key | Display stringFromKeycode:key ].
+ ] ifFalse:[
+ nil
+ ]
+ ].
"
!
@@ -9440,22 +9451,22 @@
XModifierKeymap *modmap;
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- if ((modmap = XGetModifierMapping(dpy)) != 0) {
- modifierKeyMap = __BYTEARRAY_UNINITIALIZED_NEW_INT(modmap->max_keypermod * 8);
- if (modifierKeyMap != nil) {
- memcpy((char *)__ByteArrayInstPtr(modifierKeyMap)->ba_element,
- (char *)modmap->modifiermap, modmap->max_keypermod * 8);
- }
- XFreeModifiermap(modmap);
- }
+ Display *dpy = myDpy;
+
+ if ((modmap = XGetModifierMapping(dpy)) != 0) {
+ modifierKeyMap = __BYTEARRAY_UNINITIALIZED_NEW_INT(modmap->max_keypermod * 8);
+ if (modifierKeyMap != nil) {
+ memcpy((char *)__ByteArrayInstPtr(modifierKeyMap)->ba_element,
+ (char *)modmap->modifiermap, modmap->max_keypermod * 8);
+ }
+ XFreeModifiermap(modmap);
+ }
}
%}.
^ modifierKeyMap
"
- Display rawModifierMapping
+ Display rawModifierMapping
"
!
@@ -9483,19 +9494,19 @@
char *keystring;
if (ISCONNECTED && __isSmallInteger(code)) {
- Display *dpy = myDpy;
+ Display *dpy = myDpy;
// Our Windows Xlib does not support Xkb as of 2013-01
// if ((keysym = XkbKeycodeToKeysym(dpy, __intVal(code), 0, 0)) != NoSymbol
- if ((keysym = XKeycodeToKeysym(dpy, __intVal(code), 0)) != NoSymbol
- && (keystring = XKeysymToString(keysym)) != 0)
- str = __MKSYMBOL(keystring, 0);
+ if ((keysym = XKeycodeToKeysym(dpy, __intVal(code), 0)) != NoSymbol
+ && (keystring = XKeysymToString(keysym)) != 0)
+ str = __MKSYMBOL(keystring, 0);
}
%}.
^ str
"
- Display symbolFromKeycode:50
+ Display symbolFromKeycode:50
"
! !
@@ -9505,7 +9516,7 @@
"output an audible beep or bell"
UserPreferences current beepEnabled ifTrue:[
- self beep:0 volume:50
+ self beep:0 volume:50
]
"Modified: / 3.12.1999 / 17:13:59 / ps"
@@ -9521,14 +9532,14 @@
if (__isSmallInteger(volumeInPercent)
&& ISCONNECTED) {
- /* stupid: X wants -100 .. 100 and calls this percent */
- volume = __intVal(volumeInPercent) * 2 - 100;
- if (volume < -100) volume = -100;
- else if (volume > 100) volume = 100;
-
- ENTER_XLIB();
- XBell(myDpy, volume);
- LEAVE_XLIB();
+ /* stupid: X wants -100 .. 100 and calls this percent */
+ volume = __intVal(volumeInPercent) * 2 - 100;
+ if (volume < -100) volume = -100;
+ else if (volume > 100) volume = 100;
+
+ ENTER_XLIB();
+ XBell(myDpy, volume);
+ LEAVE_XLIB();
}
%}
!
@@ -9541,9 +9552,9 @@
<context: #return>
%{
if (ISCONNECTED) {
- ENTER_XLIB();
- XSynchronize(myDpy, 0);
- LEAVE_XLIB();
+ ENTER_XLIB();
+ XSynchronize(myDpy, 0);
+ LEAVE_XLIB();
}
%}
"
@@ -9562,9 +9573,9 @@
<context: #return>
%{
if (ISCONNECTED) {
- ENTER_XLIB();
- XFlush(myDpy);
- LEAVE_XLIB();
+ ENTER_XLIB();
+ XFlush(myDpy);
+ LEAVE_XLIB();
}
%}.
@@ -9576,12 +9587,12 @@
%{
#ifdef DPS
if (ISCONNECTED
- && __isExternalAddress(aDPSContext)) {
- ENTER_XLIB();
- DPSFlushContext(__DPSContextVal(aDPSContext));
- LEAVE_XLIB();
-
- RETURN ( self );
+ && __isExternalAddress(aDPSContext)) {
+ ENTER_XLIB();
+ DPSFlushContext(__DPSContextVal(aDPSContext));
+ LEAVE_XLIB();
+
+ RETURN ( self );
}
#endif
%}.
@@ -9600,9 +9611,9 @@
if (ISCONNECTED) {
- ENTER_XLIB();
- XSync(myDpy, 0);
- LEAVE_XLIB();
+ ENTER_XLIB();
+ XSync(myDpy, 0);
+ LEAVE_XLIB();
}
%}.
@@ -9615,11 +9626,11 @@
XMappingEvent *ev;
if (ISCONNECTED && __isByteArrayLike(eB)) {
- ev = (XMappingEvent *)(__ByteArrayInstPtr(eB)->ba_element);
- ENTER_XLIB();
- XRefreshKeyboardMapping(ev);
- LEAVE_XLIB();
- RETURN ( self );
+ ev = (XMappingEvent *)(__ByteArrayInstPtr(eB)->ba_element);
+ ENTER_XLIB();
+ XRefreshKeyboardMapping(ev);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -9659,25 +9670,25 @@
Window focusWindow;
if (ISCONNECTED) {
- if (__isExternalAddress(aWindowId)) {
- focusWindow = __WindowVal(aWindowId);
- } else if (aWindowId == nil) {
- focusWindow = None;
- } else
- goto err;
- if (revertSymbol == @symbol(parent))
- arg = RevertToParent;
- else if (revertSymbol == @symbol(root))
- arg = RevertToPointerRoot;
- else
- arg = RevertToNone;
-
-
- ENTER_XLIB();
- XSetInputFocus(myDpy, focusWindow, arg, CurrentTime);
- LEAVE_XLIB();
-
- RETURN ( self );
+ if (__isExternalAddress(aWindowId)) {
+ focusWindow = __WindowVal(aWindowId);
+ } else if (aWindowId == nil) {
+ focusWindow = None;
+ } else
+ goto err;
+ if (revertSymbol == @symbol(parent))
+ arg = RevertToParent;
+ else if (revertSymbol == @symbol(root))
+ arg = RevertToPointerRoot;
+ else
+ arg = RevertToNone;
+
+
+ ENTER_XLIB();
+ XSetInputFocus(myDpy, focusWindow, arg, CurrentTime);
+ LEAVE_XLIB();
+
+ RETURN ( self );
}
err:;
%}.
@@ -9710,9 +9721,9 @@
if (ISCONNECTED) {
- ENTER_XLIB();
- XSynchronize(myDpy, 1);
- LEAVE_XLIB();
+ ENTER_XLIB();
+ XSynchronize(myDpy, 1);
+ LEAVE_XLIB();
}
%}
@@ -9750,20 +9761,20 @@
unsigned int mask;
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- w = RootWindow(dpy, screen);
- if (w) {
-
- ENTER_XLIB();
- XQueryPointer(dpy, w, &rootRet, &childRet,
- &rootX, &rootY,
- &winX, &winY,
- &mask);
- LEAVE_XLIB();
-
- RETURN (__MKSMALLINT(mask));
- }
+ Display *dpy = myDpy;
+
+ w = RootWindow(dpy, screen);
+ if (w) {
+
+ ENTER_XLIB();
+ XQueryPointer(dpy, w, &rootRet, &childRet,
+ &rootX, &rootY,
+ &winX, &winY,
+ &mask);
+ LEAVE_XLIB();
+
+ RETURN (__MKSMALLINT(mask));
+ }
}
%}.
self primitiveFailedOrClosedConnection.
@@ -9823,23 +9834,23 @@
unsigned int mask;
if (ISCONNECTED && rootWindowId != nil) {
- Display *dpy = myDpy;
- Window w = (Window)__externalAddressVal(rootWindowId);
-
- ENTER_XLIB();
- XQueryPointer(dpy, w, &rootRet, &childRet,
- &rootX, &rootY,
- &winX, &winY,
- &mask);
- LEAVE_XLIB();
- xpos = __MKSMALLINT(rootX);
- ypos = __MKSMALLINT(rootY);
+ Display *dpy = myDpy;
+ Window w = (Window)__externalAddressVal(rootWindowId);
+
+ ENTER_XLIB();
+ XQueryPointer(dpy, w, &rootRet, &childRet,
+ &rootX, &rootY,
+ &winX, &winY,
+ &mask);
+ LEAVE_XLIB();
+ xpos = __MKSMALLINT(rootX);
+ ypos = __MKSMALLINT(rootY);
}
%}.
xpos isNil ifTrue:[
- self primitiveFailedOrClosedConnection.
- ^ nil
+ self primitiveFailedOrClosedConnection.
+ ^ nil
].
^ xpos @ ypos
!
@@ -9881,21 +9892,21 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)
&& __bothSmallInteger(xpos, ypos)) {
- Display *dpy = myDpy;
- Window w = __WindowVal(aWindowId);
-
- ENTER_XLIB();
- XWarpPointer(dpy,
- None, /* src window */
- w, /* dst window */
- 0, /* src_x */
- 0, /* src_y */
- 0, /* src_w */
- 0, /* src_h */
- __intVal(xpos), /* dst_x */
- __intVal(ypos) /* dst_y */
- );
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+ Window w = __WindowVal(aWindowId);
+
+ ENTER_XLIB();
+ XWarpPointer(dpy,
+ None, /* src window */
+ w, /* dst window */
+ 0, /* src_x */
+ 0, /* src_y */
+ 0, /* src_w */
+ 0, /* src_h */
+ __intVal(xpos), /* dst_x */
+ __intVal(ypos) /* dst_y */
+ );
+ LEAVE_XLIB();
}
%}.
^ self
@@ -9911,7 +9922,7 @@
"register someone to be notified when the selection changes"
selectionHandlers isNil ifTrue:[
- selectionHandlers := IdentitySet new.
+ selectionHandlers := IdentitySet new.
].
selectionHandlers add:someone
!
@@ -9941,8 +9952,8 @@
"no longer tell someone about selection changes"
selectionHandlers notNil ifTrue:[
- selectionHandlers remove:someone ifAbsent:nil.
- selectionHandlers := selectionHandlers asNilIfEmpty
+ selectionHandlers remove:someone ifAbsent:nil.
+ selectionHandlers := selectionHandlers asNilIfEmpty
].
!
@@ -9961,26 +9972,26 @@
%{
if (ISCONNECTED && __isAtomID(propertyID)) {
- Display *dpy = myDpy;
- Atom prop;
- Window window;
-
- prop = __AtomVal(propertyID);
-
- if (__isExternalAddress(aWindowID)) {
- window = __WindowVal(aWindowID);
- } else if (aWindowID == nil) {
- window = DefaultRootWindow(dpy);
- } else if (__isInteger(aWindowID)) {
- window = (Window)__unsignedLongIntVal(aWindowID);
- } else {
- goto fail;
- }
-
- ENTER_XLIB();
- XDeleteProperty(dpy, window, prop);
- LEAVE_XLIB();
- RETURN(true);
+ Display *dpy = myDpy;
+ Atom prop;
+ Window window;
+
+ prop = __AtomVal(propertyID);
+
+ if (__isExternalAddress(aWindowID)) {
+ window = __WindowVal(aWindowID);
+ } else if (aWindowID == nil) {
+ window = DefaultRootWindow(dpy);
+ } else if (__isInteger(aWindowID)) {
+ window = (Window)__unsignedLongIntVal(aWindowID);
+ } else {
+ goto fail;
+ }
+
+ ENTER_XLIB();
+ XDeleteProperty(dpy, window, prop);
+ LEAVE_XLIB();
+ RETURN(true);
}
fail:;
%}.
@@ -9995,15 +10006,15 @@
|val typeID propertyID windowID|
propertySymbolOrAtomID isString ifTrue:[
- propertyID := self atomIDOf:propertySymbolOrAtomID create:false.
- propertyID isNil ifTrue:[^ nil].
+ propertyID := self atomIDOf:propertySymbolOrAtomID create:false.
+ propertyID isNil ifTrue:[^ nil].
] ifFalse:[
- propertyID := propertySymbolOrAtomID.
+ propertyID := propertySymbolOrAtomID.
].
aWindowOrWindowIDOrNil isView ifTrue:[
- windowID := aWindowOrWindowIDOrNil id.
+ windowID := aWindowOrWindowIDOrNil id.
] ifFalse:[
- windowID := aWindowOrWindowIDOrNil.
+ windowID := aWindowOrWindowIDOrNil.
].
%{
@@ -10018,98 +10029,98 @@
# define PROP_SIZE 2048
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- if (__isAtomID(propertyID)) {
- property = __AtomVal(propertyID);
-
- if (__isExternalAddress(windowID)) {
- window = __WindowVal(windowID);
- } else if (windowID == nil) {
- window = DefaultRootWindow(dpy);
- } else
- goto fail;
-
- nread = 0;
- cp = 0;
+ Display *dpy = myDpy;
+
+ if (__isAtomID(propertyID)) {
+ property = __AtomVal(propertyID);
+
+ if (__isExternalAddress(windowID)) {
+ window = __WindowVal(windowID);
+ } else if (windowID == nil) {
+ window = DefaultRootWindow(dpy);
+ } else
+ goto fail;
+
+ nread = 0;
+ cp = 0;
#ifdef PROPERTY_DEBUG
- console_fprintf(stderr, "getProperty %x\n", property);
-#endif
-
- do {
- int retVal;
-
- ENTER_XLIB();
- retVal = XGetWindowProperty(dpy, window, property, nread/4, PROP_SIZE,
- doDelete == true,
- AnyPropertyType, &actual_type, &actual_format,
- &nitems, &bytes_after, (unsigned char **)&data);
- LEAVE_XLIB();
- if (retVal != Success) {
+ console_fprintf(stderr, "getProperty %x\n", property);
+#endif
+
+ do {
+ int retVal;
+
+ ENTER_XLIB();
+ retVal = XGetWindowProperty(dpy, window, property, nread/4, PROP_SIZE,
+ doDelete == true,
+ AnyPropertyType, &actual_type, &actual_format,
+ &nitems, &bytes_after, (unsigned char **)&data);
+ LEAVE_XLIB();
+ if (retVal != Success) {
#ifdef PROPERTY_DEBUG
- console_fprintf(stderr, "- no success\n");
-#endif
- ok = 0;
- break;
- }
+ console_fprintf(stderr, "- no success\n");
+#endif
+ ok = 0;
+ break;
+ }
#ifdef PROPERTY_DEBUG
- console_fprintf(stderr, "- type:%x\n", actual_type);
-#endif
- nitems *= (actual_format / 8);
- typeID = __MKATOMOBJ(actual_type);
- if (! cp) {
- cp = cp2 = (char *)malloc(nitems+bytes_after);
- } else {
- cp2 = cp + nread;
- }
- if (! cp) {
- XFree(data);
- goto fail;
- }
-
- nread += nitems;
- bcopy(data, cp2, nitems);
- XFree(data);
+ console_fprintf(stderr, "- type:%x\n", actual_type);
+#endif
+ nitems *= (actual_format / 8);
+ typeID = __MKATOMOBJ(actual_type);
+ if (! cp) {
+ cp = cp2 = (char *)malloc(nitems+bytes_after);
+ } else {
+ cp2 = cp + nread;
+ }
+ if (! cp) {
+ XFree(data);
+ goto fail;
+ }
+
+ nread += nitems;
+ bcopy(data, cp2, nitems);
+ XFree(data);
#ifdef PROPERTY_DEBUG
- console_fprintf(stderr, "- <nitems:%d bytes_after:%d>\n", nitems, bytes_after);
-#endif
- } while (bytes_after > 0);
-
- if (ok) {
- switch (actual_format) {
- case 32:
- val = __stArrayFromCUIntArray((unsigned int*)cp, nread/4);
- break;
- case 16:
- val = __stArrayFromCUShortArray((unsigned short*)cp, nread/2);
- break;
- case 8:
- default:
- if (actual_type == XA_STRING) {
- val = __MKSTRING_L(cp, nread);
- } else {
- val = __MKBYTEARRAY(cp, nread);
- }
- break;
- }
- }
- if (cp)
- free(cp);
- }
+ console_fprintf(stderr, "- <nitems:%d bytes_after:%d>\n", nitems, bytes_after);
+#endif
+ } while (bytes_after > 0);
+
+ if (ok) {
+ switch (actual_format) {
+ case 32:
+ val = __stArrayFromCUIntArray((unsigned int*)cp, nread/4);
+ break;
+ case 16:
+ val = __stArrayFromCUShortArray((unsigned short*)cp, nread/2);
+ break;
+ case 8:
+ default:
+ if (actual_type == XA_STRING) {
+ val = __MKSTRING_L(cp, nread);
+ } else {
+ val = __MKBYTEARRAY(cp, nread);
+ }
+ break;
+ }
+ }
+ if (cp)
+ free(cp);
+ }
}
fail: ;
%}.
(typeID isNil or:[typeID == 0]) ifTrue:[
- "typeID == 0 (None): The property does not exist in the specified window"
- ^ nil
+ "typeID == 0 (None): The property does not exist in the specified window"
+ ^ nil
].
^ typeID->val
"
Display
- getProperty:#'_NET_WM_ICON_GEOMETRY'
- from:nil
- delete:false
+ getProperty:#'_NET_WM_ICON_GEOMETRY'
+ from:nil
+ delete:false
"
!
@@ -10122,9 +10133,9 @@
|windowID atoms|
aWindowOrWindowIDOrNil isView ifTrue:[
- windowID := aWindowOrWindowIDOrNil id.
+ windowID := aWindowOrWindowIDOrNil id.
] ifFalse:[
- windowID := aWindowOrWindowIDOrNil.
+ windowID := aWindowOrWindowIDOrNil.
].
%{
@@ -10133,41 +10144,41 @@
int i;
if (ISCONNECTED) {
- Display *dpy = myDpy;
- int numProps = 0;
-
- if (__isExternalAddress(windowID)) {
- window = __WindowVal(windowID);
- } else if (windowID == nil) {
- window = DefaultRootWindow(dpy);
- } else if (__isInteger(windowID)) {
- window = (Window)__unsignedLongIntVal(windowID);
- } else {
- goto fail;
- }
-
- ENTER_XLIB();
- atomListPtr = XListProperties(dpy, window, &numProps);
- LEAVE_XLIB();
-
- if (atomListPtr == NULL) {
- RETURN (nil);
- }
-
- atoms = __ARRAY_NEW_INT(numProps);
-
- if (atoms == nil) {
- goto fail;
- }
-
- for (i=0; i<numProps; i++) {
- OBJ atm;
-
- atm = __MKATOMOBJ(atomListPtr[i]);
- __ArrayInstPtr(atoms)->a_element[i] = atm; __STORE(atoms, atm);
- }
- XFree(atomListPtr);
- RETURN (atoms);
+ Display *dpy = myDpy;
+ int numProps = 0;
+
+ if (__isExternalAddress(windowID)) {
+ window = __WindowVal(windowID);
+ } else if (windowID == nil) {
+ window = DefaultRootWindow(dpy);
+ } else if (__isInteger(windowID)) {
+ window = (Window)__unsignedLongIntVal(windowID);
+ } else {
+ goto fail;
+ }
+
+ ENTER_XLIB();
+ atomListPtr = XListProperties(dpy, window, &numProps);
+ LEAVE_XLIB();
+
+ if (atomListPtr == NULL) {
+ RETURN (nil);
+ }
+
+ atoms = __ARRAY_NEW_INT(numProps);
+
+ if (atoms == nil) {
+ goto fail;
+ }
+
+ for (i=0; i<numProps; i++) {
+ OBJ atm;
+
+ atm = __MKATOMOBJ(atomListPtr[i]);
+ __ArrayInstPtr(atoms)->a_element[i] = atm; __STORE(atoms, atm);
+ }
+ XFree(atomListPtr);
+ RETURN (atoms);
}
fail: ;
%}.
@@ -10179,12 +10190,12 @@
"
"
(Display propertiesOf:nil) do:[:atm |
- |v prop|
-
- Transcript show:((Display atomName:atm) printStringLeftPaddedTo:5).
- Transcript show:': '.
- prop := Display getProperty:atm from:nil delete:false.
- Transcript showCR:prop value.
+ |v prop|
+
+ Transcript show:((Display atomName:atm) printStringLeftPaddedTo:5).
+ Transcript show:': '.
+ prop := Display getProperty:atm from:nil delete:false.
+ Transcript showCR:prop value.
]
"
!
@@ -10194,13 +10205,13 @@
iconAtom := self atomIDOf:#'_NET_WM_ICON' create:false.
iconAtom isNil ifTrue:[
- "/Hmm, no such property, not running under EWMH compliant WM?
- ^ self
+ "/Hmm, no such property, not running under EWMH compliant WM?
+ ^ self
].
typeAtom := self atomIDOf:#'CARDINAL' create:false.
typeAtom isNil ifTrue:[
- "/Hmm, no such property, not running under EWMH compliant WM?
- ^ self
+ "/Hmm, no such property, not running under EWMH compliant WM?
+ ^ self
].
iWidth := anIcon width.
iHeight := anIcon height.
@@ -10211,7 +10222,7 @@
self setProperty:iconAtom type:typeAtom value:buffer for:aWindowID
"
- Display setIcon:0 for:0
+ Display setIcon:0 for:0
"
!
@@ -10226,59 +10237,59 @@
%{ /* UNLIMITEDSTACK */
if (ISCONNECTED && __isAtomID(propertyID) && __isAtomID(typeID)) {
- Display *dpy = myDpy;
- Atom prop, type;
- Window window;
-
- prop = __AtomVal(propertyID);
- type = __AtomVal(typeID);
-
- if (__isExternalAddress(aWindowID)) {
- window = __WindowVal(aWindowID);
- } else if (aWindowID == nil) {
- window = DefaultRootWindow(dpy);
- } else if (__isInteger(aWindowID)) {
- window = (Window)__unsignedLongIntVal(aWindowID);
- } else {
- RETURN(false);
- }
-
- retval = true;
-
- ENTER_XLIB();
- if (__isInteger(anObject)) {
- unsigned INT value = __longIntVal(anObject);
- XChangeProperty(dpy, window, prop, type, 32,
- PropModeReplace,
- (unsigned char *)&value, 1);
- } else if (__isByteArrayLike(anObject)) {
- XChangeProperty(dpy, window, prop, type, 8,
- PropModeReplace,
- __byteArrayVal(anObject),
- __byteArraySize(anObject));
- } else if (__isWords(anObject)) {
- /* wordArray-like (16bit-string) object */
- XChangeProperty(dpy, window, prop, type, 16,
- PropModeReplace,
- __stringVal(anObject),
- __wordArraySize(anObject));
- } else if (__isIntegerArray(anObject)) {
- /* array of atoms */
- XChangeProperty(dpy, window, prop, type, 32,
- PropModeReplace,
- (char *)__integerArrayVal(anObject),
- __integerArraySize(anObject));
- } else if (__isStringLike(anObject)) {
- XChangeProperty(dpy, window, prop, type, 8,
- PropModeReplace,
- __stringVal(anObject),
- __stringSize(anObject));
- } else {
- retval = false;
- }
- LEAVE_XLIB();
-
- DPRINTF(("changeProp win=%"_lx_" prop=%"_lx_" type=%"_lx_"\n", (INT)window, (INT)prop, (INT)type));
+ Display *dpy = myDpy;
+ Atom prop, type;
+ Window window;
+
+ prop = __AtomVal(propertyID);
+ type = __AtomVal(typeID);
+
+ if (__isExternalAddress(aWindowID)) {
+ window = __WindowVal(aWindowID);
+ } else if (aWindowID == nil) {
+ window = DefaultRootWindow(dpy);
+ } else if (__isInteger(aWindowID)) {
+ window = (Window)__unsignedLongIntVal(aWindowID);
+ } else {
+ RETURN(false);
+ }
+
+ retval = true;
+
+ ENTER_XLIB();
+ if (__isInteger(anObject)) {
+ unsigned INT value = __longIntVal(anObject);
+ XChangeProperty(dpy, window, prop, type, 32,
+ PropModeReplace,
+ (unsigned char *)&value, 1);
+ } else if (__isByteArrayLike(anObject)) {
+ XChangeProperty(dpy, window, prop, type, 8,
+ PropModeReplace,
+ __byteArrayVal(anObject),
+ __byteArraySize(anObject));
+ } else if (__isWords(anObject)) {
+ /* wordArray-like (16bit-string) object */
+ XChangeProperty(dpy, window, prop, type, 16,
+ PropModeReplace,
+ __stringVal(anObject),
+ __wordArraySize(anObject));
+ } else if (__isIntegerArray(anObject)) {
+ /* array of atoms */
+ XChangeProperty(dpy, window, prop, type, 32,
+ PropModeReplace,
+ (char *)__integerArrayVal(anObject),
+ __integerArraySize(anObject));
+ } else if (__isStringLike(anObject)) {
+ XChangeProperty(dpy, window, prop, type, 8,
+ PropModeReplace,
+ __stringVal(anObject),
+ __stringSize(anObject));
+ } else {
+ retval = false;
+ }
+ LEAVE_XLIB();
+
+ DPRINTF(("changeProp win=%"_lx_" prop=%"_lx_" type=%"_lx_"\n", (INT)window, (INT)prop, (INT)type));
}
%}.
^ retval
@@ -10294,7 +10305,7 @@
extent := self monitorBounds first extent.
self isPDA ifTrue:[
- ^ extent - (16 @ 20)
+ ^ extent - (16 @ 20)
].
^ extent * 2 // 3
!
@@ -10304,12 +10315,12 @@
#ifdef XINERAMA
if (ISCONNECTED) {
- Display *dpy;
- dpy = myDpy;
-
- if (XineramaIsActive(dpy)) {
- RETURN ( true );
- }
+ Display *dpy;
+ dpy = myDpy;
+
+ if (XineramaIsActive(dpy)) {
+ RETURN ( true );
+ }
}
#endif
%}.
@@ -10371,15 +10382,15 @@
atomSymbol := aStringOrSymbol asSymbol.
(atoms notNil and:[(atom := atoms at:atomSymbol ifAbsent:nil) notNil]) ifTrue:[
- ^ atom.
+ ^ atom.
].
atom := self primAtomIDOf:atomSymbol create:create.
atom notNil ifTrue:[
- atoms isNil ifTrue:[
- atoms := IdentityDictionary new.
- ].
- atoms at:atomSymbol put:atom.
+ atoms isNil ifTrue:[
+ atoms := IdentityDictionary new.
+ ].
+ atoms at:atomSymbol put:atom.
].
^ atom
@@ -10404,15 +10415,15 @@
char *name;
if (ISCONNECTED && __isAtomID(anAtomID)) {
- ENTER_XLIB();
- name = XGetAtomName(myDpy, __AtomVal(anAtomID));
- LEAVE_XLIB();
- if (name == 0) {
- RETURN (nil);
- }
- str = __MKSTRING(name);
- XFree(name);
- RETURN ( str );
+ ENTER_XLIB();
+ name = XGetAtomName(myDpy, __AtomVal(anAtomID));
+ LEAVE_XLIB();
+ if (name == 0) {
+ RETURN (nil);
+ }
+ str = __MKSTRING(name);
+ XFree(name);
+ RETURN ( str );
}
%}.
self primitiveFailedOrClosedConnection.
@@ -10436,11 +10447,11 @@
This is highly X specific and currently not used.
Notice:
- we do not plan to use X's resources for ST/X's defaults,
- styles or resources. This would make porting of applications
- to different platforms much more difficult (Windows has no resource
- database). If you stay within ST/X's resource files, these can be
- easily transported to other platforms.
+ we do not plan to use X's resources for ST/X's defaults,
+ styles or resources. This would make porting of applications
+ to different platforms much more difficult (Windows has no resource
+ database). If you stay within ST/X's resource files, these can be
+ easily transported to other platforms.
This method is provided for special applications which want to access
existing X resources and are not planned to be ever ported to other
@@ -10453,27 +10464,27 @@
&& __isStringLike(name)
&& __isStringLike(cls)) {
- rslt = XGetDefault(myDpy, (char *) __stringVal(cls),
- (char *) __stringVal(name));
-
- RETURN (rslt ? __MKSTRING(rslt) : nil );
+ rslt = XGetDefault(myDpy, (char *) __stringVal(cls),
+ (char *) __stringVal(name));
+
+ RETURN (rslt ? __MKSTRING(rslt) : nil );
}
%}.
self primitiveFailedOrClosedConnection.
^ nil.
"if your ~/.Xdefaults contains an entry such as:
- OpenWindows.Beep: notices
+ OpenWindows.Beep: notices
the following returns 'notices'.
- Display getResource:'Beep' class:'OpenWindows'
+ Display getResource:'Beep' class:'OpenWindows'
if your ~/.Xdefaults contains an entry such as:
- *.beNiceToColormap: false
+ *.beNiceToColormap: false
the following return 'false'.
- Display getResource:'beNiceToColormap' class:'any'
- Display getResource:'beNiceToColormap' class:''
+ Display getResource:'beNiceToColormap' class:'any'
+ Display getResource:'beNiceToColormap' class:''
"
!
@@ -10489,14 +10500,14 @@
if (ISCONNECTED
&& __isStringLike(aStringOrSymbol)) {
- ENTER_XLIB();
- prop = XInternAtom(myDpy, __stringVal(aStringOrSymbol),
- (create == true) ? False : True);
- LEAVE_XLIB();
- if (prop == None) {
- RETURN (nil);
- }
- RETURN ( __MKATOMOBJ(prop) );
+ ENTER_XLIB();
+ prop = XInternAtom(myDpy, __stringVal(aStringOrSymbol),
+ (create == true) ? False : True);
+ LEAVE_XLIB();
+ if (prop == None) {
+ RETURN (nil);
+ }
+ RETURN ( __MKATOMOBJ(prop) );
}
%}.
self primitiveFailedOrClosedConnection.
@@ -10522,35 +10533,35 @@
|rawInfo info|
((w <= 0) or:[h <= 0]) ifTrue:[
- self primitiveFailed.
- ^ nil
+ self primitiveFailed.
+ ^ nil
].
rawInfo := Array new:8.
- "1 -> bit order"
- "2 -> depth"
- "3 -> bytes_per_line"
- "4 -> byte_order"
- "5 -> format"
- "6 -> bitmap_unit"
- "7 -> bitmap_pad"
- "8 -> bits_per_pixel"
+ "1 -> bit order"
+ "2 -> depth"
+ "3 -> bytes_per_line"
+ "4 -> byte_order"
+ "5 -> format"
+ "6 -> bitmap_unit"
+ "7 -> bitmap_pad"
+ "8 -> bits_per_pixel"
"/ had to extract the getPixel call into a separate method, to specify
"/ unlimitedStack (some implementations use alloca and require huge amounts
"/ of temporary stack space
(self primGetBitsFrom:aDrawableId x:srcx y:srcy width:w height:h into:imageBits infoInto:rawInfo) ifTrue:[
- info := IdentityDictionary new.
- info at:#bitOrder put:(rawInfo at:1).
- info at:#depth put:(rawInfo at:2).
- info at:#bytesPerLine put:(rawInfo at:3).
- info at:#byteOrder put:(rawInfo at:4).
- info at:#format put:(rawInfo at:5).
- info at:#bitmapUnit put:(rawInfo at:6).
- info at:#bitmapPad put:(rawInfo at:7).
- info at:#bitsPerPixel put:(rawInfo at:8).
- ^ info
+ info := IdentityDictionary new.
+ info at:#bitOrder put:(rawInfo at:1).
+ info at:#depth put:(rawInfo at:2).
+ info at:#bytesPerLine put:(rawInfo at:3).
+ info at:#byteOrder put:(rawInfo at:4).
+ info at:#format put:(rawInfo at:5).
+ info at:#bitmapUnit put:(rawInfo at:6).
+ info at:#bitmapPad put:(rawInfo at:7).
+ info at:#bitsPerPixel put:(rawInfo at:8).
+ ^ info
].
"
some error occured - either args are not smallintegers, imageBits is not a ByteArray
@@ -10575,20 +10586,20 @@
if (ISCONNECTED
&& __isExternalAddress(aDrawableId) && __bothSmallInteger(x, y)) {
- win = __WindowVal(aDrawableId);
- xpos = __intVal(x);
- ypos = __intVal(y);
- if ((xpos < 0) || (ypos < 0)) {
- RETURN ( __MKSMALLINT(0) );
- }
- ENTER_XLIB();
- img = XGetImage(myDpy, win, xpos, ypos, 1, 1, (unsigned)~0, ZPixmap);
- LEAVE_XLIB();
- if (img != 0) {
- ret = XGetPixel(img, 0, 0);
- XDestroyImage(img);
- RETURN ( __MKSMALLINT(ret) );
- }
+ win = __WindowVal(aDrawableId);
+ xpos = __intVal(x);
+ ypos = __intVal(y);
+ if ((xpos < 0) || (ypos < 0)) {
+ RETURN ( __MKSMALLINT(0) );
+ }
+ ENTER_XLIB();
+ img = XGetImage(myDpy, win, xpos, ypos, 1, 1, (unsigned)~0, ZPixmap);
+ LEAVE_XLIB();
+ if (img != 0) {
+ ret = XGetPixel(img, 0, 0);
+ XDestroyImage(img);
+ RETURN ( __MKSMALLINT(ret) );
+ }
}
%}.
^ nil
@@ -10612,80 +10623,80 @@
&& __bothSmallInteger(w, h)
&& __isArray(info)
&& __isByteArray(imageBits)) {
- Display *dpy = myDpy;
-
- win = __WindowVal(aDrawableId);
- ENTER_XLIB();
- image = XGetImage(dpy, win, __intVal(srcx), __intVal(srcy),
- __intVal(w), __intVal(h),
- (unsigned)AllPlanes, ZPixmap);
- LEAVE_XLIB();
-
- if (! image) {
- RETURN ( false );
- }
-
- pad = image->bitmap_pad;
+ Display *dpy = myDpy;
+
+ win = __WindowVal(aDrawableId);
+ ENTER_XLIB();
+ image = XGetImage(dpy, win, __intVal(srcx), __intVal(srcy),
+ __intVal(w), __intVal(h),
+ (unsigned)AllPlanes, ZPixmap);
+ LEAVE_XLIB();
+
+ if (! image) {
+ RETURN ( false );
+ }
+
+ pad = image->bitmap_pad;
#ifdef SUPERDEBUG
- console_printf("pad:%d depth:%d\n", image->bitmap_pad, image->depth);
-#endif
- switch (image->depth) {
- case 1:
- case 2:
- case 4:
- case 8:
- case 16:
- case 24:
- case 32:
- numBytes = image->bytes_per_line * image->height;
- break;
-
- default:
- /* unsupported depth ? */
- console_fprintf(stderr, "possibly unsupported depth:%d in primGetBits\n", image->depth);
- numBytes = image->bytes_per_line * image->height;
- break;
- }
+ console_printf("pad:%d depth:%d\n", image->bitmap_pad, image->depth);
+#endif
+ switch (image->depth) {
+ case 1:
+ case 2:
+ case 4:
+ case 8:
+ case 16:
+ case 24:
+ case 32:
+ numBytes = image->bytes_per_line * image->height;
+ break;
+
+ default:
+ /* unsupported depth ? */
+ console_fprintf(stderr, "possibly unsupported depth:%d in primGetBits\n", image->depth);
+ numBytes = image->bytes_per_line * image->height;
+ break;
+ }
#ifdef SUPERDEBUG
- console_printf("bytes need:%d bytes given:%d\n", numBytes, __byteArraySize(imageBits));
-#endif
-
- if (numBytes > __byteArraySize(imageBits)) {
- /* imageBits too small */
- console_fprintf(stderr, "Workstation [warning]: byteArray too small in primGetBits\n");
- console_fprintf(stderr, " bytes need:%d given:%d\n", numBytes, (int)__byteArraySize(imageBits));
- console_fprintf(stderr, " pad:%d depth:%d imgBytesPerLine:%d\n",
- image->bitmap_pad, image->depth, image->bytes_per_line);
- goto fail;
- }
- if (image->bitmap_bit_order == MSBFirst)
- __ArrayInstPtr(info)->a_element[0] = @symbol(msbFirst);
- else
- __ArrayInstPtr(info)->a_element[0] = @symbol(lsbFirst);
- __ArrayInstPtr(info)->a_element[1] = __MKSMALLINT(image->depth);
- __ArrayInstPtr(info)->a_element[2] = __MKSMALLINT(image->bytes_per_line);
- if (image->byte_order == MSBFirst)
- __ArrayInstPtr(info)->a_element[3] = @symbol(msbFirst);
- else
- __ArrayInstPtr(info)->a_element[3] = @symbol(lsbFirst);
- if (image->format == XYBitmap)
- __ArrayInstPtr(info)->a_element[4] = @symbol(XYBitmap);
- else if (image->format == XYPixmap)
- __ArrayInstPtr(info)->a_element[4] = @symbol(XYPixmap);
- else if (image->format == ZPixmap)
- __ArrayInstPtr(info)->a_element[4] = @symbol(ZPixmap);
-
- __ArrayInstPtr(info)->a_element[5] = __MKSMALLINT(image->bitmap_unit);
- __ArrayInstPtr(info)->a_element[6] = __MKSMALLINT(image->bitmap_pad);
- __ArrayInstPtr(info)->a_element[7] = __MKSMALLINT(image->bits_per_pixel);
- bcopy(image->data, __ByteArrayInstPtr(imageBits)->ba_element, numBytes);
- XDestroyImage(image);
- RETURN ( true );
+ console_printf("bytes need:%d bytes given:%d\n", numBytes, __byteArraySize(imageBits));
+#endif
+
+ if (numBytes > __byteArraySize(imageBits)) {
+ /* imageBits too small */
+ console_fprintf(stderr, "Workstation [warning]: byteArray too small in primGetBits\n");
+ console_fprintf(stderr, " bytes need:%d given:%d\n", numBytes, (int)__byteArraySize(imageBits));
+ console_fprintf(stderr, " pad:%d depth:%d imgBytesPerLine:%d\n",
+ image->bitmap_pad, image->depth, image->bytes_per_line);
+ goto fail;
+ }
+ if (image->bitmap_bit_order == MSBFirst)
+ __ArrayInstPtr(info)->a_element[0] = @symbol(msbFirst);
+ else
+ __ArrayInstPtr(info)->a_element[0] = @symbol(lsbFirst);
+ __ArrayInstPtr(info)->a_element[1] = __MKSMALLINT(image->depth);
+ __ArrayInstPtr(info)->a_element[2] = __MKSMALLINT(image->bytes_per_line);
+ if (image->byte_order == MSBFirst)
+ __ArrayInstPtr(info)->a_element[3] = @symbol(msbFirst);
+ else
+ __ArrayInstPtr(info)->a_element[3] = @symbol(lsbFirst);
+ if (image->format == XYBitmap)
+ __ArrayInstPtr(info)->a_element[4] = @symbol(XYBitmap);
+ else if (image->format == XYPixmap)
+ __ArrayInstPtr(info)->a_element[4] = @symbol(XYPixmap);
+ else if (image->format == ZPixmap)
+ __ArrayInstPtr(info)->a_element[4] = @symbol(ZPixmap);
+
+ __ArrayInstPtr(info)->a_element[5] = __MKSMALLINT(image->bitmap_unit);
+ __ArrayInstPtr(info)->a_element[6] = __MKSMALLINT(image->bitmap_pad);
+ __ArrayInstPtr(info)->a_element[7] = __MKSMALLINT(image->bits_per_pixel);
+ bcopy(image->data, __ByteArrayInstPtr(imageBits)->ba_element, numBytes);
+ XDestroyImage(image);
+ RETURN ( true );
}
fail:
if (image) {
- XDestroyImage(image);
+ XDestroyImage(image);
}
%}.
^ false
@@ -10703,40 +10714,40 @@
selectionOwnerWindowId := self getSelectionOwnerOf:clipboardAtom.
selectionOwnerWindowId isNil ifTrue:[
- "no selection. There is the possibilty that one of our (modal)
- views has been closed. Get the selection from the copyBuffer"
- ^ copyBuffer.
+ "no selection. There is the possibilty that one of our (modal)
+ views has been closed. Get the selection from the copyBuffer"
+ ^ copyBuffer.
].
selectionOwnerWindowId = selectionOwner ifTrue:[
- "I still hold the selection, so return my locally buffered data"
- ^ copyBuffer
+ "I still hold the selection, so return my locally buffered data"
+ ^ copyBuffer
].
drawableId notNil ifTrue:[
- "sorry, cannot fetch a selection, if there is no drawableId.
- Should I borrow a drawableId from another window?"
-
- selection := SelectionFetcher
- requestSelection:clipboardAtom
- type:(self atomIDOf:#'ST_OBJECT')
- onDevice:self for:drawableId.
-
- "/ should not happen
+ "sorry, cannot fetch a selection, if there is no drawableId.
+ Should I borrow a drawableId from another window?"
+
+ selection := SelectionFetcher
+ requestSelection:clipboardAtom
+ type:(self atomIDOf:#'ST_OBJECT')
+ onDevice:self for:drawableId.
+
+ "/ should not happen
false ifTrue:[
- "/ cg: disabled the code below: I don't want any string here (when asking for an object)
- selection isEmptyOrNil ifTrue:[
- selection := SelectionFetcher
- requestSelection:clipboardAtom
- type:(self atomIDOf:#'UTF8_STRING')
- onDevice:self for:drawableId.
-
- selection isNil ifTrue:[
- selection := SelectionFetcher
- requestSelection:clipboardAtom
- type:(self atomIDOf:#STRING)
- onDevice:self for:drawableId.
- ].
- ].
+ "/ cg: disabled the code below: I don't want any string here (when asking for an object)
+ selection isEmptyOrNil ifTrue:[
+ selection := SelectionFetcher
+ requestSelection:clipboardAtom
+ type:(self atomIDOf:#'UTF8_STRING')
+ onDevice:self for:drawableId.
+
+ selection isNil ifTrue:[
+ selection := SelectionFetcher
+ requestSelection:clipboardAtom
+ type:(self atomIDOf:#STRING)
+ onDevice:self for:drawableId.
+ ].
+ ].
].
].
selection isEmptyOrNil ifTrue:[ ^ copyBuffer ].
@@ -10755,43 +10766,43 @@
|selectionId selectionOwnerWindowId selection|
selectionBufferSymbol == #selection ifTrue:[
- selectionId := primaryAtom.
+ selectionId := primaryAtom.
] ifFalse:[
- selectionId := clipboardAtom.
+ selectionId := clipboardAtom.
].
selectionOwnerWindowId := self getSelectionOwnerOf:selectionId.
selectionOwnerWindowId isNil ifTrue:[
- "no selection. There is the possibilty that one of our (modal)
- views has been closed. Get the selection from the copyBuffer"
- ^ self copyBufferAsString.
+ "no selection. There is the possibilty that one of our (modal)
+ views has been closed. Get the selection from the copyBuffer"
+ ^ self copyBufferAsString.
].
selectionOwnerWindowId = selectionOwner ifTrue:[
- "I still hold the selection, so return my locally buffered data"
- "JV@2012-04-02: Added support for PRIMARY/SELECTION buffers."
- ^ selectionId == primaryAtom ifTrue:[
- self primaryBufferAsString
- ] ifFalse:[
- self copyBufferAsString.
- ]
+ "I still hold the selection, so return my locally buffered data"
+ "JV@2012-04-02: Added support for PRIMARY/SELECTION buffers."
+ ^ selectionId == primaryAtom ifTrue:[
+ self primaryBufferAsString
+ ] ifFalse:[
+ self copyBufferAsString.
+ ]
].
drawableId notNil ifTrue:[
- "sorry, cannot fetch a selection, if there is no drawableId.
- Should I borrow a drawableId from another window?"
-
- selection := SelectionFetcher
- requestSelection:selectionId
- type:(self atomIDOf:#'UTF8_STRING')
- onDevice:self for:drawableId.
-
- selection isNil ifTrue:[
- selection := SelectionFetcher
- requestSelection:selectionId
- type:(self atomIDOf:#STRING)
- onDevice:self for:drawableId.
- ].
+ "sorry, cannot fetch a selection, if there is no drawableId.
+ Should I borrow a drawableId from another window?"
+
+ selection := SelectionFetcher
+ requestSelection:selectionId
+ type:(self atomIDOf:#'UTF8_STRING')
+ onDevice:self for:drawableId.
+
+ selection isNil ifTrue:[
+ selection := SelectionFetcher
+ requestSelection:selectionId
+ type:(self atomIDOf:#STRING)
+ onDevice:self for:drawableId.
+ ].
].
^ selection
@@ -10806,110 +10817,72 @@
!XWorkstation methodsFor:'selection sending'!
-copyBufferAs:aTargetAtom
+selectionBuffer:bufferGetSelector as:aTargetAtomID
"convert the current selection to the format defined by aTargetAtom.
- Answer the converted selection"
-
- (aTargetAtom == (self atomIDOf:#STRING)) ifTrue:[
- "/ 'string' printCR.
- "the other view wants the selection as string"
- ^ self copyBufferAsString.
- ].
-
- (aTargetAtom == (self atomIDOf:#UTF8_STRING)) ifTrue:[
- "/ 'utf string' printCR.
- "the other view wants the selection as utf8 string"
- ^ self copyBufferAsString utf8Encoded.
- ].
-
- (aTargetAtom == (self atomIDOf:#TIMESTAMP)) ifTrue:[
- "the other view wants to know when we acquired ownership of the selection"
- ^ selectionTime.
- ].
-
- (aTargetAtom == (self atomIDOf:#TARGETS)) ifTrue:[
- "the other view wants to know which targets we support"
- ^ self supportedTargetAtoms.
- ].
-
- (aTargetAtom == (self atomIDOf:#'ST_OBJECT')) ifTrue:[
- "/ 'st-object' printCR.
- "send the selection in binaryStore format"
- "require libboss to be loaded"
- (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
- 'XWorkstation: cannot use binary store for copy buffer (libboss missing)' errorPrintCR.
- ^ nil
- ].
-
- [
- ^ self getCopyBuffer binaryStoreBytes.
- ] on:Error do:[:ex|
- 'XWorkstation: error on binary store of copy buffer: ' errorPrint.
- ex description errorPrintCR.
- ^ nil.
- ].
- ].
-
- aTargetAtom == (self atomIDOf:#LENGTH) ifTrue:[
- "the other one wants to know the size of our selection.
- LENGTH is deprecated, since we do not know how the selection is
- going to be converted. The client must not rely on the length returned"
-
- ^ self copyBufferAsString size
+ Answer an association with the type of converted selection (an atomID)
+ and the converted selection"
+
+ |buffer bufferAsString|
+
+ buffer := self perform:bufferGetSelector.
+
+ (aTargetAtomID == (self atomIDOf:#'ST_OBJECT')) ifTrue:[
+ "/ 'st-object' printCR.
+ "send the selection in binaryStore format"
+ "require libboss to be loaded"
+ (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
+ 'XWorkstation: cannot use binary store for copy buffer (libboss missing)' errorPrintCR.
+ ^ nil -> nil.
+ ].
+
+ [
+ ^ aTargetAtomID -> (buffer binaryStoreBytes).
+ ] on:Error do:[:ex|
+ 'XWorkstation: error on binary store of copy buffer: ' errorPrint.
+ ex description errorPrintCR.
+ ^ nil.
+ ].
+ ].
+
+ bufferAsString := self class bufferAsString:buffer.
+
+ (aTargetAtomID == (self atomIDOf:#STRING)
+ or:[aTargetAtomID == (self atomIDOf:#'text/plain')]
+ ) ifTrue:[
+ "/ 'string' printCR.
+ "the other view wants the selection as string"
+ ^ aTargetAtomID -> (bufferAsString asSingleByteStringReplaceInvalidWith:$#).
+ ].
+
+ (aTargetAtomID == (self atomIDOf:#UTF8_STRING)
+ or:[aTargetAtomID == (self atomIDOf:#'text/plain;codeset=utf-8')]
+ ) ifTrue:[
+ "/ 'utf string' printCR.
+ "the other view wants the selection as utf8 string"
+ ^ aTargetAtomID -> (bufferAsString utf8Encoded).
+ ].
+
+ aTargetAtomID == (self atomIDOf:#LENGTH) ifTrue:[
+ "the other one wants to know the size of our selection.
+ LENGTH is deprecated, since we do not know how the selection is
+ going to be converted. The client must not rely on the length returned"
+
+ ^ (self atomIDOf:#INTEGER) -> (bufferAsString size).
].
"we do not support the requestet target type"
- ^ nil.
+ ^ nil -> nil.
"Modified: / 23-08-2006 / 15:56:08 / cg"
!
-primaryBufferAs:aTargetAtom
- "convert the current selection to the format defined by aTargetAtom.
- Answer the converted selection"
-
- (aTargetAtom == (self atomIDOf:#STRING)) ifTrue:[
- "the other view wants the selection as string"
- ^ self primaryBufferAsString.
- ].
-
- (aTargetAtom == (self atomIDOf:#UTF8_STRING)) ifTrue:[
- "the other view wants the selection as utf8 string"
- ^ self primaryBufferAsString utf8Encoded.
- ].
-
- (aTargetAtom == (self atomIDOf:#TIMESTAMP)) ifTrue:[
- "the other view wants to know when we acquired ownership of the selection"
- ^ selectionTime.
- ].
-
- (aTargetAtom == (self atomIDOf:#TARGETS)) ifTrue:[
- "the other view wants to know which targets we support"
- ^ self supportedTargetAtoms copyWithoutFirst "/we do not support ST_OBJECT in primary
- ].
-
- aTargetAtom == (self atomIDOf:#LENGTH) ifTrue:[
- "the other one wants to know the size of our selection.
- LENGTH is deprecated, since we do not know how the selection is
- going to be converted. The client must not rely on the length returned"
-
- ^ self primaryBufferAsString size
- ].
-
- "we do not support the requestet target type"
- ^ nil.
-
- "Modified: / 23-08-2006 / 15:56:08 / cg"
- "Created: / 27-03-2012 / 14:49:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
setClipboardObject:anObject owner:aWindowId
"set the object selection, and make aWindowId be the owner.
This can be used by other Smalltalk(X) applications only.
We set only the CLIPBOARD selection"
- selectionTime := lastEventTime.
- self setSelectionOwner:aWindowId of:clipboardAtom time:selectionTime
+ clipboardSelectionTime := lastEventTime.
+ self setSelectionOwner:aWindowId of:clipboardAtom time:clipboardSelectionTime
!
setClipboardText:aString owner:aWindowId
@@ -10919,10 +10892,10 @@
We set both the PRIMARY and CLIPBOARD, so that you can paste
into xterm."
- selectionTime := lastEventTime.
-
- self setSelectionOwner:aWindowId of:clipboardAtom time:selectionTime.
- self setSelectionOwner:aWindowId of:primaryAtom time:selectionTime.
+ clipboardSelectionTime := primarySelectionTime := lastEventTime.
+
+ self setSelectionOwner:aWindowId of:clipboardAtom time:clipboardSelectionTime.
+ self setSelectionOwner:aWindowId of:primaryAtom time:primarySelectionTime.
"Modified: / 17.6.1998 / 19:48:54 / cg"
!
@@ -10932,9 +10905,9 @@
This can be used by any other X application when middle-click
pasting. X Window specific."
- selectionTime := lastEventTime.
-
- self setSelectionOwner:aWindowId of:primaryAtom time:selectionTime.
+ primarySelectionTime := lastEventTime.
+
+ self setSelectionOwner:aWindowId of:primaryAtom time:primarySelectionTime.
"Created: / 27-03-2012 / 14:16:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
@@ -10943,17 +10916,12 @@
"answer an integer array containing the list of supported targets
i.e. supported clipboard formats"
- |supportedTargets numericTargetArray|
-
"Note: some sender code assumes that ST_OBJECT is first"
- supportedTargets := #(ST_OBJECT STRING UTF8_STRING TIMESTAMP TARGETS LENGTH).
-
- numericTargetArray := IntegerArray new:supportedTargets size.
- supportedTargets keysAndValuesDo:[:index :targetSymbol|
- numericTargetArray at:index put:(self atomIDOf:targetSymbol)
- ].
-
- ^ numericTargetArray
+ ^ #(ST_OBJECT STRING UTF8_STRING TIMESTAMP TARGETS LENGTH
+ #'text/plain' #'text/plain;codeset=utf-8'
+ ) collect:[:eachTargetSymbol|
+ self atomIDOf:eachTargetSymbol
+ ] as:IntegerArray.
! !
!XWorkstation methodsFor:'selections-basic'!
@@ -10967,21 +10935,21 @@
|selectionAtomID|
selectionAtomSymbolOrID isString ifTrue:[
- selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
+ selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
] ifFalse:[
- selectionAtomID := selectionAtomSymbolOrID.
+ selectionAtomID := selectionAtomSymbolOrID.
].
%{
Window window;
if (__isAtomID(selectionAtomID) && ISCONNECTED) {
- Display *dpy = myDpy;
-
- ENTER_XLIB();
- window = XGetSelectionOwner(dpy, __AtomVal(selectionAtomID));
- LEAVE_XLIB();
- RETURN ((window == None) ? nil : __MKEXTERNALADDRESS(window));
+ Display *dpy = myDpy;
+
+ ENTER_XLIB();
+ window = XGetSelectionOwner(dpy, __AtomVal(selectionAtomID));
+ LEAVE_XLIB();
+ RETURN ((window == None) ? nil : __MKEXTERNALADDRESS(window));
}
%}.
self primitiveFailedOrClosedConnection.
@@ -11005,34 +10973,34 @@
&& __isAtomID(typeID)
&& __isAtomID(propertyID)
&& __isAtomID(selectionID)) {
- Display *dpy = myDpy;
- Window w;
- Time time;
-
- if (__isExternalAddress(aWindowId)) {
- w = __WindowVal(aWindowId);
- } else if (aWindowId == nil) {
- w = (Window)0;
- } else
- goto err;
-
- if (anIntegerTimestamp == nil) {
- /*
- * the ICCCM convention says: you should set the time to the time when
- * the selection was requested and not to CurrentTime
- */
- time = CurrentTime;
- } else if (__isInteger(anIntegerTimestamp)) {
- time = __unsignedLongIntVal(anIntegerTimestamp);
- } else
- goto err;
-
- ENTER_XLIB();
- XConvertSelection(dpy, __AtomVal(selectionID), __AtomVal(typeID),
- __AtomVal(propertyID), w, time);
- LEAVE_XLIB();
-
- RETURN (true);
+ Display *dpy = myDpy;
+ Window w;
+ Time time;
+
+ if (__isExternalAddress(aWindowId)) {
+ w = __WindowVal(aWindowId);
+ } else if (aWindowId == nil) {
+ w = (Window)0;
+ } else
+ goto err;
+
+ if (anIntegerTimestamp == nil) {
+ /*
+ * the ICCCM convention says: you should set the time to the time when
+ * the selection was requested and not to CurrentTime
+ */
+ time = CurrentTime;
+ } else if (__isInteger(anIntegerTimestamp)) {
+ time = __unsignedLongIntVal(anIntegerTimestamp);
+ } else
+ goto err;
+
+ ENTER_XLIB();
+ XConvertSelection(dpy, __AtomVal(selectionID), __AtomVal(typeID),
+ __AtomVal(propertyID), w, time);
+ LEAVE_XLIB();
+
+ RETURN (true);
err:;
}
%}.
@@ -11041,17 +11009,17 @@
"
Display
- requestSelection:(Display atomIDOf:'PRIMARY')
- property:(Display atomIDOf:'VT_SELECTION')
- type:(Display atomIDOf:'STRING')
- for:Transcript id
+ requestSelection:(Display atomIDOf:'PRIMARY')
+ property:(Display atomIDOf:'VT_SELECTION')
+ type:(Display atomIDOf:'STRING')
+ for:Transcript id
"
"
Display
- requestSelection:(Display atomIDOf:'PRIMARY')
- property:(Display atomIDOf:'VT_SELECTION')
- type:(Display atomIDOf:'C_STRING')
- for:Transcript id
+ requestSelection:(Display atomIDOf:'PRIMARY')
+ property:(Display atomIDOf:'VT_SELECTION')
+ type:(Display atomIDOf:'C_STRING')
+ for:Transcript id
"
!
@@ -11065,72 +11033,72 @@
<context: #return>
%{
if (ISCONNECTED
- && (__isAtomID(propertyID) || propertyID == nil)
- && __isAtomID(targetID) && __isAtomID(selectionID)) {
- Display *dpy = myDpy;
- XEvent ev;
- Window requestor;
- Status result;
-
- if (__isExternalAddress(requestorID)) {
- requestor = __WindowVal(requestorID);
- } else if (__isSmallInteger(requestorID)) {
- requestor = (Window)__smallIntegerVal(requestorID);
- } else if (requestorID == nil) {
- requestor = DefaultRootWindow(dpy);
- } else {
- requestor = (Window)__unsignedLongIntVal(requestorID);
- }
-
- ev.xselection.type = SelectionNotify;
- ev.xselection.display = dpy;
- ev.xselection.selection = __AtomVal(selectionID);
- ev.xselection.target = __AtomVal(targetID);
- ev.xselection.requestor = requestor;
-
- if (__isExternalAddress(aTime)) {
- ev.xselection.time = (INT)(__externalAddressVal(aTime));
- } else if (__isSmallInteger(aTime)) {
- ev.xselection.time = __smallIntegerVal(aTime);
- } else if (aTime == nil) {
- ev.xselection.time = CurrentTime;
- } else {
- ev.xselection.time = (INT)__unsignedLongIntVal(aTime);
- }
+ && (__isAtomID(propertyID) || propertyID == nil)
+ && __isAtomID(targetID) && __isAtomID(selectionID)) {
+ Display *dpy = myDpy;
+ XEvent ev;
+ Window requestor;
+ Status result;
+
+ if (__isExternalAddress(requestorID)) {
+ requestor = __WindowVal(requestorID);
+ } else if (__isSmallInteger(requestorID)) {
+ requestor = (Window)__smallIntegerVal(requestorID);
+ } else if (requestorID == nil) {
+ requestor = DefaultRootWindow(dpy);
+ } else {
+ requestor = (Window)__unsignedLongIntVal(requestorID);
+ }
+
+ ev.xselection.type = SelectionNotify;
+ ev.xselection.display = dpy;
+ ev.xselection.selection = __AtomVal(selectionID);
+ ev.xselection.target = __AtomVal(targetID);
+ ev.xselection.requestor = requestor;
+
+ if (__isExternalAddress(aTime)) {
+ ev.xselection.time = (INT)(__externalAddressVal(aTime));
+ } else if (__isSmallInteger(aTime)) {
+ ev.xselection.time = __smallIntegerVal(aTime);
+ } else if (aTime == nil) {
+ ev.xselection.time = CurrentTime;
+ } else {
+ ev.xselection.time = (INT)__unsignedLongIntVal(aTime);
+ }
#if 0
- console_printf("ev.xselection.selection: %x\n", ev.xselection.selection);
- console_printf("ev.xselection.target: %x\n", ev.xselection.target);
- console_printf("ev.xselection.requestor: %x\n", ev.xselection.requestor);
- console_printf("ev.xselection.time: %x\n", ev.xselection.time);
- console_printf("requestor: %x\n", requestor);
-#endif
-
- /* send nil property if selection cannot be converted */
- if (propertyID == nil)
- ev.xselection.property = None;
- else
- ev.xselection.property = __AtomVal(propertyID);
-
-
- DPRINTF(("sending SelectionNotify sel=%"_lx_" prop=%"_lx_" target=%"_lx_" requestor=%"_lx_" to %"_lx_"\n",
- (INT)ev.xselection.selection,
- (INT)ev.xselection.property,
- (INT)ev.xselection.target,
- (INT)ev.xselection.requestor,
- (INT)requestor));
-
- ENTER_XLIB();
- result = XSendEvent(dpy, requestor, False, 0 , &ev);
- LEAVE_XLIB();
-
- if ((result == BadValue) || (result == BadWindow)) {
- DPRINTF(("bad status\n"));
- RETURN (false);
- }
- ENTER_XLIB();
- XFlush(dpy);
- LEAVE_XLIB();
- RETURN (true)
+ console_printf("ev.xselection.selection: %x\n", ev.xselection.selection);
+ console_printf("ev.xselection.target: %x\n", ev.xselection.target);
+ console_printf("ev.xselection.requestor: %x\n", ev.xselection.requestor);
+ console_printf("ev.xselection.time: %x\n", ev.xselection.time);
+ console_printf("requestor: %x\n", requestor);
+#endif
+
+ /* send nil property if selection cannot be converted */
+ if (propertyID == nil)
+ ev.xselection.property = None;
+ else
+ ev.xselection.property = __AtomVal(propertyID);
+
+
+ DPRINTF(("sending SelectionNotify sel=%"_lx_" prop=%"_lx_" target=%"_lx_" requestor=%"_lx_" to %"_lx_"\n",
+ (INT)ev.xselection.selection,
+ (INT)ev.xselection.property,
+ (INT)ev.xselection.target,
+ (INT)ev.xselection.requestor,
+ (INT)requestor));
+
+ ENTER_XLIB();
+ result = XSendEvent(dpy, requestor, False, 0 , &ev);
+ LEAVE_XLIB();
+
+ if ((result == BadValue) || (result == BadWindow)) {
+ DPRINTF(("bad status\n"));
+ RETURN (false);
+ }
+ ENTER_XLIB();
+ XFlush(dpy);
+ LEAVE_XLIB();
+ RETURN (true)
}
%}.
self primitiveFailedOrClosedConnection.
@@ -11153,9 +11121,9 @@
selectionOwner := aWindowId.
selectionAtomSymbolOrID isString ifTrue:[
- selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
+ selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
] ifFalse:[
- selectionAtomID := selectionAtomSymbolOrID.
+ selectionAtomID := selectionAtomSymbolOrID.
].
%{
@@ -11164,27 +11132,27 @@
if (__isExternalAddress(aWindowId)
&& __isAtomID(selectionAtomID)
&& ISCONNECTED) {
- Display *dpy = myDpy;
- Time time;
-
- win = __WindowVal(aWindowId);
-
- if (anIntegerTimestamp == nil) {
- /*
- * the ICCCM convention says: you should set the time to the time when
- * the selection was acquired and not to CurrentTime
- */
- time = CurrentTime;
- } else if (__isInteger(anIntegerTimestamp)) {
- time = __unsignedLongIntVal(anIntegerTimestamp);
- } else
- goto err;
-
- DPRINTF(("setOwner prop=%"_lx_" win=%"_lx_"\n", (INT)__AtomVal(selectionAtomID), (INT)win));
- ENTER_XLIB();
- XSetSelectionOwner(dpy, __AtomVal(selectionAtomID), win, time);
- RETURN (self);
- LEAVE_XLIB();
+ Display *dpy = myDpy;
+ Time time;
+
+ win = __WindowVal(aWindowId);
+
+ if (anIntegerTimestamp == nil) {
+ /*
+ * the ICCCM convention says: you should set the time to the time when
+ * the selection was acquired and not to CurrentTime
+ */
+ time = CurrentTime;
+ } else if (__isInteger(anIntegerTimestamp)) {
+ time = __unsignedLongIntVal(anIntegerTimestamp);
+ } else
+ goto err;
+
+ DPRINTF(("setOwner prop=%"_lx_" win=%"_lx_"\n", (INT)__AtomVal(selectionAtomID), (INT)win));
+ ENTER_XLIB();
+ XSetSelectionOwner(dpy, __AtomVal(selectionAtomID), win, time);
+ RETURN (self);
+ LEAVE_XLIB();
}
err:;
%}.
@@ -11202,10 +11170,10 @@
allChildIDs := OrderedCollection new.
childIDs := self childIdsOf:aWindowId.
childIDs notNil ifTrue:[
- allChildIDs addAll:childIDs.
- childIDs do:[:eachChildId |
- allChildIDs addAll:(self allChildIdsOf:eachChildId).
- ].
+ allChildIDs addAll:childIDs.
+ childIDs do:[:eachChildId |
+ allChildIDs addAll:(self allChildIdsOf:eachChildId).
+ ].
].
^ allChildIDs
@@ -11219,20 +11187,20 @@
deviceIDAtom := (Display atomIDOf:#'STX_DEVICE_ID').
uuidAtom := (Display atomIDOf:#'UUID').
(Display allChildIdsOf:(Display rootWindowId))
- select:[:id |
- |uuid|
-
- Display
- getProperty:deviceIDAtom
- from:id
- delete:false
- into:[:type :value |
- type == uuidAtom ifTrue:[
- uuid := UUID fromBytes:value.
- ].
- ].
- uuid notNil.
- ]
+ select:[:id |
+ |uuid|
+
+ Display
+ getProperty:deviceIDAtom
+ from:id
+ delete:false
+ into:[:type :value |
+ type == uuidAtom ifTrue:[
+ uuid := UUID fromBytes:value.
+ ].
+ ].
+ uuid notNil.
+ ]
"
!
@@ -11246,35 +11214,35 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- Display *dpy = myDpy;
- Window win = __WindowVal(aWindowId);
- Window rootReturn, parentReturn;
- Window* children = (Window *)0;
- unsigned int numChildren;
- int i;
- int rslt;
-
- ENTER_XLIB();
- rslt = XQueryTree(dpy, win,
- &rootReturn, &parentReturn,
- &children, &numChildren);
- LEAVE_XLIB();
- if (rslt) {
- childIdArray = __ARRAY_NEW_INT(numChildren);
- if (childIdArray != nil) {
- for (i=0; i < numChildren; i++) {
- if (children[i]) {
- OBJ childId;
-
- childId = __MKEXTERNALADDRESS(children[i]);
- __ArrayInstPtr(childIdArray)->a_element[i] = childId;
- __STORE(childIdArray, childId);
- }
- }
- if (children) XFree(children);
- }
- RETURN (childIdArray);
- }
+ Display *dpy = myDpy;
+ Window win = __WindowVal(aWindowId);
+ Window rootReturn, parentReturn;
+ Window* children = (Window *)0;
+ unsigned int numChildren;
+ int i;
+ int rslt;
+
+ ENTER_XLIB();
+ rslt = XQueryTree(dpy, win,
+ &rootReturn, &parentReturn,
+ &children, &numChildren);
+ LEAVE_XLIB();
+ if (rslt) {
+ childIdArray = __ARRAY_NEW_INT(numChildren);
+ if (childIdArray != nil) {
+ for (i=0; i < numChildren; i++) {
+ if (children[i]) {
+ OBJ childId;
+
+ childId = __MKEXTERNALADDRESS(children[i]);
+ __ArrayInstPtr(childIdArray)->a_element[i] = childId;
+ __STORE(childIdArray, childId);
+ }
+ }
+ if (children) XFree(children);
+ }
+ RETURN (childIdArray);
+ }
}
%}.
^ nil.
@@ -11297,17 +11265,17 @@
OBJ id;
if (__INST(rootId) != nil) {
- RETURN (__INST(rootId));
+ RETURN (__INST(rootId));
}
if (ISCONNECTED) {
- root = RootWindow(myDpy, screen);
- if (! root) {
- id = nil;
- } else {
- id = __MKEXTERNALADDRESS(root); __INST(rootId) = id; __STORE(self, id);
- }
- RETURN (id);
+ root = RootWindow(myDpy, screen);
+ if (! root) {
+ id = nil;
+ } else {
+ id = __MKEXTERNALADDRESS(root); __INST(rootId) = id; __STORE(self, id);
+ }
+ RETURN (id);
}
%}.
self primitiveFailedOrClosedConnection.
@@ -11332,92 +11300,92 @@
OBJ id;
if (__INST(virtualRootId) != nil) {
- RETURN (__INST(virtualRootId));
+ RETURN (__INST(virtualRootId));
}
if (ISCONNECTED) {
- Display *dpy = myDpy;
-
- rootWin = RootWindow(dpy, screen);
+ Display *dpy = myDpy;
+
+ rootWin = RootWindow(dpy, screen);
#ifndef IRIS
- /*
- * on IRIS, this creates a badwindow error - why ?
- * children contains a funny window (000034)
- */
-
- /*
- * care for virtual root windows (tvtwm & friends)
- */
- {
- Atom vRootAtom, kwinAtom;
- int i;
- Window rootReturn, parentReturn;
- Window* children = (Window *)0;
- unsigned int numChildren;
- int ignoreVRoot = 0;
-
- /*
- * Take care of KDE 2.1.
- * they define _SWM_ROOT but this is not the parent of
- * the application windows.
- * Instead it is used for background painting
- */
-
- kwinAtom = XInternAtom(dpy, "KWIN_RUNNING", True);
- if (kwinAtom != None) {
- Atom actual_type;
- int actual_format;
- unsigned long nitems, bytesafter;
- unsigned char *retVal = 0;
-
- ignoreVRoot = XGetWindowProperty(dpy, rootWin, kwinAtom,
- 0L, 1L, False, kwinAtom,
- &actual_type, &actual_format,
- &nitems, &bytesafter, &retVal) == Success
- && actual_type != 0;
- if (retVal)
- XFree(retVal);
- }
-
- if (!ignoreVRoot) {
- vRootAtom = XInternAtom(dpy, "__SWM_VROOT", True);
- if (vRootAtom != None) {
- if (XQueryTree(dpy, rootWin,
- &rootReturn, &parentReturn,
- &children, &numChildren)) {
- for (i=0; i < numChildren; i++) {
- Atom actual_type;
- int actual_format;
- unsigned long nitems, bytesafter;
- Window* newRoot = (Window*) 0;
-
- if (children[i]) {
- if (XGetWindowProperty(dpy, children[i], vRootAtom,
- 0L, 1L, False, XA_WINDOW,
- &actual_type, &actual_format,
- &nitems, &bytesafter,
- (unsigned char**) &newRoot
- ) == Success && newRoot) {
- vRootWin = *newRoot;
- XFree(newRoot); /* XXX */
- break;
- }
- }
- }
- if (children) XFree(children);
- }
- }
- }
- }
+ /*
+ * on IRIS, this creates a badwindow error - why ?
+ * children contains a funny window (000034)
+ */
+
+ /*
+ * care for virtual root windows (tvtwm & friends)
+ */
+ {
+ Atom vRootAtom, kwinAtom;
+ int i;
+ Window rootReturn, parentReturn;
+ Window* children = (Window *)0;
+ unsigned int numChildren;
+ int ignoreVRoot = 0;
+
+ /*
+ * Take care of KDE 2.1.
+ * they define _SWM_ROOT but this is not the parent of
+ * the application windows.
+ * Instead it is used for background painting
+ */
+
+ kwinAtom = XInternAtom(dpy, "KWIN_RUNNING", True);
+ if (kwinAtom != None) {
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems, bytesafter;
+ unsigned char *retVal = 0;
+
+ ignoreVRoot = XGetWindowProperty(dpy, rootWin, kwinAtom,
+ 0L, 1L, False, kwinAtom,
+ &actual_type, &actual_format,
+ &nitems, &bytesafter, &retVal) == Success
+ && actual_type != 0;
+ if (retVal)
+ XFree(retVal);
+ }
+
+ if (!ignoreVRoot) {
+ vRootAtom = XInternAtom(dpy, "__SWM_VROOT", True);
+ if (vRootAtom != None) {
+ if (XQueryTree(dpy, rootWin,
+ &rootReturn, &parentReturn,
+ &children, &numChildren)) {
+ for (i=0; i < numChildren; i++) {
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems, bytesafter;
+ Window* newRoot = (Window*) 0;
+
+ if (children[i]) {
+ if (XGetWindowProperty(dpy, children[i], vRootAtom,
+ 0L, 1L, False, XA_WINDOW,
+ &actual_type, &actual_format,
+ &nitems, &bytesafter,
+ (unsigned char**) &newRoot
+ ) == Success && newRoot) {
+ vRootWin = *newRoot;
+ XFree(newRoot); /* XXX */
+ break;
+ }
+ }
+ }
+ if (children) XFree(children);
+ }
+ }
+ }
+ }
#endif
}
if (! vRootWin) {
- vRootWin = rootWin;
- if (! vRootWin) {
- RETURN ( nil );
- }
+ vRootWin = rootWin;
+ if (! vRootWin) {
+ RETURN ( nil );
+ }
}
id = __MKEXTERNALADDRESS(rootWin); __INST(rootId) = id; __STORE(self, id);
id = __MKEXTERNALADDRESS(vRootWin); __INST(virtualRootId) = id; __STORE(self, id);
@@ -11440,21 +11408,21 @@
int w, h;
if (ISCONNECTED) {
- if (__isExternalAddress(aWindowId)
- && __bothSmallInteger(x, y)
- && __bothSmallInteger(width, height)) {
- w = __intVal(width);
- h = __intVal(height);
- /*
- * need this check here: some servers simply dump core with bad args
- */
- if ((w >= 0) && (h >= 0)) {
- ENTER_XLIB();
- XClearArea(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y), w, h, 0);
- LEAVE_XLIB();
- }
- RETURN ( self );
- }
+ if (__isExternalAddress(aWindowId)
+ && __bothSmallInteger(x, y)
+ && __bothSmallInteger(width, height)) {
+ w = __intVal(width);
+ h = __intVal(height);
+ /*
+ * need this check here: some servers simply dump core with bad args
+ */
+ if ((w >= 0) && (h >= 0)) {
+ ENTER_XLIB();
+ XClearArea(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y), w, h, 0);
+ LEAVE_XLIB();
+ }
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection.
@@ -11467,12 +11435,12 @@
%{
if (ISCONNECTED) {
- if (__isExternalAddress(aWindowId)) {
- ENTER_XLIB();
- XClearWindow(myDpy, __WindowVal(aWindowId));
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aWindowId)) {
+ ENTER_XLIB();
+ XClearWindow(myDpy, __WindowVal(aWindowId));
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
%}.
self primitiveFailedOrClosedConnection
@@ -11488,29 +11456,29 @@
int mask = CWSibling | CWStackMode;
if (ISCONNECTED) {
- if (__isExternalAddress(aWindowId)
- && __isExternalAddress(siblingId)) {
- if (modeSymbol == @symbol(above)) {
- chg.stack_mode = Above;
- } else if (modeSymbol == @symbol(below)) {
- chg.stack_mode = Below;
- } else if (modeSymbol == @symbol(topIf)) {
- chg.stack_mode = TopIf;
- } else if (modeSymbol == @symbol(bottomIf)) {
- chg.stack_mode = BottomIf;
- } else if (modeSymbol == @symbol(opposite)) {
- chg.stack_mode = Opposite;
- } else {
- mask = CWSibling;
- }
-
- chg.sibling = __WindowVal(siblingId);
- ENTER_XLIB();
- XConfigureWindow(myDpy, __WindowVal(aWindowId),
- mask, &chg);
- LEAVE_XLIB();
- RETURN ( self );
- }
+ if (__isExternalAddress(aWindowId)
+ && __isExternalAddress(siblingId)) {
+ if (modeSymbol == @symbol(above)) {
+ chg.stack_mode = Above;
+ } else if (modeSymbol == @symbol(below)) {
+ chg.stack_mode = Below;
+ } else if (modeSymbol == @symbol(topIf)) {
+ chg.stack_mode = TopIf;
+ } else if (modeSymbol == @symbol(bottomIf)) {
+ chg.stack_mode = BottomIf;
+ } else if (modeSymbol == @symbol(opposite)) {
+ chg.stack_mode = Opposite;
+ } else {
+ mask = CWSibling;
+ }
+
+ chg.sibling = __WindowVal(siblingId);
+ ENTER_XLIB();
+ XConfigureWindow(myDpy, __WindowVal(aWindowId),
+ mask, &chg);
+ LEAVE_XLIB();
+ RETURN ( self );
+ }
}
bad: ;
%}.
@@ -11533,30 +11501,30 @@
%{
int x_ret, y_ret;
unsigned int width_ret, height_ret,
- border_width_ret, depth_ret;
+ border_width_ret, depth_ret;
Window root_ret;
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- ENTER_XLIB();
- XGetGeometry(myDpy, __WindowVal(aWindowId),
- &root_ret,
- &x_ret, &y_ret,
- &width_ret, &height_ret, &border_width_ret,
- &depth_ret);
- LEAVE_XLIB();
-
- x = __MKSMALLINT(x_ret);
- y = __MKSMALLINT(y_ret);
- width = __MKSMALLINT(width_ret);
- height = __MKSMALLINT(height_ret);
- depth = __MKSMALLINT(depth_ret);
- borderWidth = __MKSMALLINT(border_width_ret);
+ ENTER_XLIB();
+ XGetGeometry(myDpy, __WindowVal(aWindowId),
+ &root_ret,
+ &x_ret, &y_ret,
+ &width_ret, &height_ret, &border_width_ret,
+ &depth_ret);
+ LEAVE_XLIB();
+
+ x = __MKSMALLINT(x_ret);
+ y = __MKSMALLINT(y_ret);
+ width = __MKSMALLINT(width_ret);
+ height = __MKSMALLINT(height_ret);
+ depth = __MKSMALLINT(depth_ret);
+ borderWidth = __MKSMALLINT(border_width_ret);
}
%}.
borderWidth isNil ifTrue:[
- self primitiveFailedOrClosedConnection.
- ^ nil
+ self primitiveFailedOrClosedConnection.
+ ^ nil
].
info := Dictionary new.
info at:#origin put:(x @ y).
@@ -11567,15 +11535,15 @@
"
Transcript topView device
- getGeometryOf:(Transcript id)
+ getGeometryOf:(Transcript id)
"
"
Transcript topView device
- getGeometryOf:(Transcript topView id)
+ getGeometryOf:(Transcript topView id)
"
"
Display
- getGeometryOf:(Display viewIdFromUser)
+ getGeometryOf:(Display viewIdFromUser)
"
"
|d|
@@ -11596,22 +11564,22 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- char *name = NULL;
- Status ok;
- Window root, parent, *children = NULL;
- unsigned int nChildren;
+ char *name = NULL;
+ Status ok;
+ Window root, parent, *children = NULL;
+ unsigned int nChildren;
/* ENTER_XLIB(); */
- ok = XQueryTree(myDpy, __WindowVal(aWindowId),
- &root, &parent, &children, &nChildren);
- if (children) {
- XFree(children);
- }
+ ok = XQueryTree(myDpy, __WindowVal(aWindowId),
+ &root, &parent, &children, &nChildren);
+ if (children) {
+ XFree(children);
+ }
/* LEAVE_XLIB(); */
- if (ok) {
- RETURN (true);
- }
- RETURN (false);
+ if (ok) {
+ RETURN (true);
+ }
+ RETURN (false);
}
%}.
self primitiveFailedOrClosedConnection.
@@ -11641,17 +11609,17 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- ENTER_XLIB();
- XLowerWindow(myDpy, __WindowVal(aWindowId));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XLowerWindow(myDpy, __WindowVal(aWindowId));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
!
mapView:aView id:aWindowId iconified:aBoolean atX:xPos y:yPos
- width:w height:h minExtent:minExt maxExtent:maxExt
+ width:w height:h minExtent:minExt maxExtent:maxExt
<context: #return>
@@ -11663,26 +11631,26 @@
|wicon wiconId iconMaskId wiconView wiconViewId wlabel minW minH maxW maxH|
aBoolean ifTrue:[
- wicon := aView icon.
- wicon notNil ifTrue:[
- wiconId := wicon id.
- wicon mask notNil ifTrue:[
- iconMaskId := wicon mask id.
- ].
- ].
- wiconView := aView iconView.
- wiconView notNil ifTrue:[
- wiconViewId := wiconView id
- ].
- wlabel := aView label.
+ wicon := aView icon.
+ wicon notNil ifTrue:[
+ wiconId := wicon id.
+ wicon mask notNil ifTrue:[
+ iconMaskId := wicon mask id.
+ ].
+ ].
+ wiconView := aView iconView.
+ wiconView notNil ifTrue:[
+ wiconViewId := wiconView id
+ ].
+ wlabel := aView label.
].
minExt notNil ifTrue:[
- minW := minExt x.
- minH := minExt y.
+ minW := minExt x.
+ minH := minExt y.
].
maxExt notNil ifTrue:[
- maxW := maxExt x.
- maxH := maxExt y.
+ maxW := maxExt x.
+ maxH := maxExt y.
].
%{
@@ -11692,91 +11660,91 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- Display *dpy = myDpy;
-
- win = __WindowVal(aWindowId);
-
- szhints.flags = 0;
- if (__bothSmallInteger(xPos, yPos)) {
- szhints.x = __intVal(xPos);
- szhints.y = __intVal(yPos);
- szhints.flags |= USPosition;
- }
- if (__bothSmallInteger(w, h)) {
- szhints.width = __intVal(w);
- szhints.height = __intVal(h);
- szhints.flags |= USSize;
- }
- if (__bothSmallInteger(minW, minH)) {
- szhints.flags |= PMinSize;
- szhints.min_width = __intVal(minW);
- szhints.min_height = __intVal(minH);
- }
- if (__bothSmallInteger(maxW, maxH)) {
- szhints.flags |= PMaxSize;
- szhints.max_width = __intVal(maxW);
- szhints.max_height = __intVal(maxH);
- }
-
- if (aBoolean == true) {
- char *windowName = "";
- Pixmap iconBitmap = (Pixmap)0;
- Pixmap iconMask = (Pixmap)0;
- Window iconWindow = (Window)0;
-
- if (__isExternalAddress(wiconId))
- iconBitmap = __PixmapVal(wiconId);
-
- if (__isExternalAddress(iconMaskId)) {
- iconMask = __PixmapVal(iconMaskId);
- }
-
- if (__isExternalAddress(wiconViewId))
- iconWindow = __WindowVal(wiconViewId);
-
- if (__isStringLike(wlabel))
- windowName = (char *) __stringVal(wlabel);
-
- if (iconBitmap || windowName) {
- ENTER_XLIB();
- XSetStandardProperties(dpy, win,
- windowName, windowName,
- iconBitmap,
- 0, 0, &szhints);
- LEAVE_XLIB();
- }
-
- wmhints.flags = 0;
- if (iconBitmap) {
- wmhints.flags |= IconPixmapHint;
- wmhints.icon_pixmap = iconBitmap;
- }
- if (iconMask) {
- wmhints.flags |= IconMaskHint;
- wmhints.icon_mask = iconMask;
- }
- if (iconWindow) {
- wmhints.flags |= IconWindowHint;
- wmhints.icon_window = iconWindow;
- }
-
- wmhints.initial_state = IconicState;
- wmhints.flags |= StateHint;
- ENTER_XLIB();
- XSetWMHints(dpy, win, &wmhints);
- LEAVE_XLIB();
- }
-
- if (szhints.flags) {
- ENTER_XLIB();
- XSetNormalHints(dpy, win, &szhints);
- LEAVE_XLIB();
- }
-
- ENTER_XLIB();
- XMapWindow(dpy, win);
- LEAVE_XLIB();
- RETURN ( self );
+ Display *dpy = myDpy;
+
+ win = __WindowVal(aWindowId);
+
+ szhints.flags = 0;
+ if (__bothSmallInteger(xPos, yPos)) {
+ szhints.x = __intVal(xPos);
+ szhints.y = __intVal(yPos);
+ szhints.flags |= USPosition;
+ }
+ if (__bothSmallInteger(w, h)) {
+ szhints.width = __intVal(w);
+ szhints.height = __intVal(h);
+ szhints.flags |= USSize;
+ }
+ if (__bothSmallInteger(minW, minH)) {
+ szhints.flags |= PMinSize;
+ szhints.min_width = __intVal(minW);
+ szhints.min_height = __intVal(minH);
+ }
+ if (__bothSmallInteger(maxW, maxH)) {
+ szhints.flags |= PMaxSize;
+ szhints.max_width = __intVal(maxW);
+ szhints.max_height = __intVal(maxH);
+ }
+
+ if (aBoolean == true) {
+ char *windowName = "";
+ Pixmap iconBitmap = (Pixmap)0;
+ Pixmap iconMask = (Pixmap)0;
+ Window iconWindow = (Window)0;
+
+ if (__isExternalAddress(wiconId))
+ iconBitmap = __PixmapVal(wiconId);
+
+ if (__isExternalAddress(iconMaskId)) {
+ iconMask = __PixmapVal(iconMaskId);
+ }
+
+ if (__isExternalAddress(wiconViewId))
+ iconWindow = __WindowVal(wiconViewId);
+
+ if (__isStringLike(wlabel))
+ windowName = (char *) __stringVal(wlabel);
+
+ if (iconBitmap || windowName) {
+ ENTER_XLIB();
+ XSetStandardProperties(dpy, win,
+ windowName, windowName,
+ iconBitmap,
+ 0, 0, &szhints);
+ LEAVE_XLIB();
+ }
+
+ wmhints.flags = 0;
+ if (iconBitmap) {
+ wmhints.flags |= IconPixmapHint;
+ wmhints.icon_pixmap = iconBitmap;
+ }
+ if (iconMask) {
+ wmhints.flags |= IconMaskHint;
+ wmhints.icon_mask = iconMask;
+ }
+ if (iconWindow) {
+ wmhints.flags |= IconWindowHint;
+ wmhints.icon_window = iconWindow;
+ }
+
+ wmhints.initial_state = IconicState;
+ wmhints.flags |= StateHint;
+ ENTER_XLIB();
+ XSetWMHints(dpy, win, &wmhints);
+ LEAVE_XLIB();
+ }
+
+ if (szhints.flags) {
+ ENTER_XLIB();
+ XSetNormalHints(dpy, win, &szhints);
+ LEAVE_XLIB();
+ }
+
+ ENTER_XLIB();
+ XMapWindow(dpy, win);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -11790,10 +11758,10 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- ENTER_XLIB();
- XMapWindow(myDpy, __WindowVal(aWindowId));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XMapWindow(myDpy, __WindowVal(aWindowId));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -11811,16 +11779,16 @@
&& __isExternalAddress(aWindowId)
&& __bothSmallInteger(w, h)
&& __bothSmallInteger(x, y)) {
- newWidth = __intVal(w);
- newHeight = __intVal(h);
- if (newWidth < 1) newWidth = 1;
- if (newHeight < 1) newHeight = 1;
- ENTER_XLIB();
- XMoveResizeWindow(myDpy, __WindowVal(aWindowId),
- __intVal(x), __intVal(y),
- newWidth, newHeight);
- LEAVE_XLIB();
- RETURN ( self );
+ newWidth = __intVal(w);
+ newHeight = __intVal(h);
+ if (newWidth < 1) newWidth = 1;
+ if (newHeight < 1) newHeight = 1;
+ ENTER_XLIB();
+ XMoveResizeWindow(myDpy, __WindowVal(aWindowId),
+ __intVal(x), __intVal(y),
+ newWidth, newHeight);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -11834,10 +11802,10 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId) && __bothSmallInteger(x, y)) {
- ENTER_XLIB();
- XMoveWindow(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XMoveWindow(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -11851,21 +11819,21 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- Status ok;
- Window root, parent, *children = NULL;
- unsigned int nChildren;
+ Status ok;
+ Window root, parent, *children = NULL;
+ unsigned int nChildren;
/* ENTER_XLIB(); */
- ok = XQueryTree(myDpy, __WindowVal(aWindowId),
- &root, &parent, &children, &nChildren);
- if (children) {
- XFree(children);
- }
+ ok = XQueryTree(myDpy, __WindowVal(aWindowId),
+ &root, &parent, &children, &nChildren);
+ if (children) {
+ XFree(children);
+ }
/* LEAVE_XLIB(); */
- if (! ok) {
- RETURN ( nil );
- }
- RETURN ( __MKEXTERNALADDRESS(parent) );
+ if (! ok) {
+ RETURN ( nil );
+ }
+ RETURN ( __MKEXTERNALADDRESS(parent) );
}
%}.
self primitiveFailedOrClosedConnection.
@@ -11887,10 +11855,10 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- ENTER_XLIB();
- XRaiseWindow(myDpy, __WindowVal(aWindowId));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XRaiseWindow(myDpy, __WindowVal(aWindowId));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -11904,32 +11872,32 @@
if (ISCONNECTED
&& __isExternalAddress(windowId)
&& __isExternalAddress(newParentWindowId)) {
- Display *dpy = myDpy;
- Window _child, _newParent;
- int i;
-
- _child = __WindowVal(windowId);
- _newParent = __WindowVal(newParentWindowId);
- ENTER_XLIB();
+ Display *dpy = myDpy;
+ Window _child, _newParent;
+ int i;
+
+ _child = __WindowVal(windowId);
+ _newParent = __WindowVal(newParentWindowId);
+ ENTER_XLIB();
#if 0
- XWithdrawWindow (dpy, _child, DefaultScreen(dpy));
- XSync (dpy, 0);
-#endif
- /*
- * Code 'stolen' from xswallow source ...
- * ... mhmh - what is this loop for ?
- */
- for (i=0; i<5; i++) {
- XReparentWindow (dpy, _child, _newParent, 0, 0);
- XSync (dpy, 0);
- }
+ XWithdrawWindow (dpy, _child, DefaultScreen(dpy));
+ XSync (dpy, 0);
+#endif
+ /*
+ * Code 'stolen' from xswallow source ...
+ * ... mhmh - what is this loop for ?
+ */
+ for (i=0; i<5; i++) {
+ XReparentWindow (dpy, _child, _newParent, 0, 0);
+ XSync (dpy, 0);
+ }
#if 0
- XMapWindow (dpy, _child);
- XSync (dpy, 0);
-#endif
- LEAVE_XLIB();
- RETURN ( true );
+ XMapWindow (dpy, _child);
+ XSync (dpy, 0);
+#endif
+ LEAVE_XLIB();
+ RETURN ( true );
}
%}.
self primitiveFailedOrClosedConnection
@@ -11945,14 +11913,14 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId) && __bothSmallInteger(w, h)) {
- newWidth = __intVal(w);
- newHeight = __intVal(h);
- if (newWidth < 1) newWidth = 1;
- if (newHeight < 1) newHeight = 1;
- ENTER_XLIB();
- XResizeWindow(myDpy, __WindowVal(aWindowId), newWidth, newHeight);
- LEAVE_XLIB();
- RETURN ( self );
+ newWidth = __intVal(w);
+ newHeight = __intVal(h);
+ if (newWidth < 1) newWidth = 1;
+ if (newHeight < 1) newHeight = 1;
+ ENTER_XLIB();
+ XResizeWindow(myDpy, __WindowVal(aWindowId), newWidth, newHeight);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -11968,18 +11936,18 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- if (__INST(ignoreBackingStore) != true) {
- if (how == @symbol(always)) wa.backing_store = Always;
- else if (how == @symbol(whenMapped)) wa.backing_store = WhenMapped;
- else if (how == true) wa.backing_store = Always;
- else wa.backing_store = 0;
-
- ENTER_XLIB();
- XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBackingStore, &wa);
- LEAVE_XLIB();
-
- }
- RETURN ( self );
+ if (__INST(ignoreBackingStore) != true) {
+ if (how == @symbol(always)) wa.backing_store = Always;
+ else if (how == @symbol(whenMapped)) wa.backing_store = WhenMapped;
+ else if (how == true) wa.backing_store = Always;
+ else wa.backing_store = 0;
+
+ ENTER_XLIB();
+ XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBackingStore, &wa);
+ LEAVE_XLIB();
+
+ }
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -11995,34 +11963,34 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- if (how == @symbol(NorthWest)) {
- wa.bit_gravity = NorthWestGravity;
- } else if (how == @symbol(NorthEast)) {
- wa.bit_gravity = NorthEastGravity;
- } else if (how == @symbol(SouthWest)) {
- wa.bit_gravity = SouthWestGravity;
- } else if (how == @symbol(SouthEast)) {
- wa.bit_gravity = SouthEastGravity;
- } else if (how == @symbol(Center)) {
- wa.bit_gravity = CenterGravity;
- } else if (how == @symbol(North)) {
- wa.bit_gravity = NorthGravity;
- } else if (how == @symbol(South)) {
- wa.bit_gravity = SouthGravity;
- } else if (how == @symbol(West)) {
- wa.bit_gravity = WestGravity;
- } else if (how == @symbol(East)) {
- wa.bit_gravity = EastGravity;
- } else {
- wa.bit_gravity = NorthWestGravity;
- }
-
-
- ENTER_XLIB();
- XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBitGravity, &wa);
- LEAVE_XLIB();
-
- RETURN ( self );
+ if (how == @symbol(NorthWest)) {
+ wa.bit_gravity = NorthWestGravity;
+ } else if (how == @symbol(NorthEast)) {
+ wa.bit_gravity = NorthEastGravity;
+ } else if (how == @symbol(SouthWest)) {
+ wa.bit_gravity = SouthWestGravity;
+ } else if (how == @symbol(SouthEast)) {
+ wa.bit_gravity = SouthEastGravity;
+ } else if (how == @symbol(Center)) {
+ wa.bit_gravity = CenterGravity;
+ } else if (how == @symbol(North)) {
+ wa.bit_gravity = NorthGravity;
+ } else if (how == @symbol(South)) {
+ wa.bit_gravity = SouthGravity;
+ } else if (how == @symbol(West)) {
+ wa.bit_gravity = WestGravity;
+ } else if (how == @symbol(East)) {
+ wa.bit_gravity = EastGravity;
+ } else {
+ wa.bit_gravity = NorthWestGravity;
+ }
+
+
+ ENTER_XLIB();
+ XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBitGravity, &wa);
+ LEAVE_XLIB();
+
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12037,16 +12005,16 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)
&& __isExternalAddress(aCursorId)) {
- Display *dpy = myDpy;
- Window w = __WindowVal(aWindowId);
- Cursor c = __CursorVal(aCursorId);
-
- if (w && c) {
- ENTER_XLIB();
- XDefineCursor(dpy, w, c);
- LEAVE_XLIB();
- }
- RETURN ( self );
+ Display *dpy = myDpy;
+ Window w = __WindowVal(aWindowId);
+ Cursor c = __CursorVal(aCursorId);
+
+ if (w && c) {
+ ENTER_XLIB();
+ XDefineCursor(dpy, w, c);
+ LEAVE_XLIB();
+ }
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12062,18 +12030,18 @@
activeWindowAtom := self atomIDOf:#'_NET_ACTIVE_WINDOW' create:false.
activeWindowAtom notNil ifTrue:[
- self
- sendClientEvent:activeWindowAtom
- format:32
- to:(self rootWindowId)
- propagate:false
- eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
- window:aWindowId
- data1:2 "activate request from pager. This is a trick: kwm ignores requests from applications (1)"
- data2:nil
- data3:nil
- data4:nil
- data5:nil.
+ self
+ sendClientEvent:activeWindowAtom
+ format:32
+ to:(self rootWindowId)
+ propagate:false
+ eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
+ window:aWindowId
+ data1:2 "activate request from pager. This is a trick: kwm ignores requests from applications (1)"
+ data2:nil
+ data3:nil
+ data4:nil
+ data5:nil.
].
"
@@ -12092,10 +12060,10 @@
utf8String := aString utf8Encoded.
aString isWideString ifTrue:[
- "/ X does not like 2-byte labels ...
- simpleString := aString asSingleByteStringReplaceInvalidWith:$?
+ "/ X does not like 2-byte labels ...
+ simpleString := aString asSingleByteStringReplaceInvalidWith:$?
] ifFalse:[
- simpleString := aString.
+ simpleString := aString.
].
%{
@@ -12106,17 +12074,17 @@
&& __isStringLike(simpleString)
&& __isExternalAddress(aWindowId)) {
- titleProperty.value = __stringVal(utf8String);
- titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
- titleProperty.format = 8;
- titleProperty.nitems = __stringSize(utf8String);
-
- ENTER_XLIB();
- XSetIconName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
- /* alternative settings for UTF8-Strings */
- XSetWMIconName(myDpy, __WindowVal(aWindowId), &titleProperty);
- LEAVE_XLIB();
- RETURN ( self );
+ titleProperty.value = __stringVal(utf8String);
+ titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
+ titleProperty.format = 8;
+ titleProperty.nitems = __stringSize(utf8String);
+
+ ENTER_XLIB();
+ XSetIconName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
+ /* alternative settings for UTF8-Strings */
+ XSetWMIconName(myDpy, __WindowVal(aWindowId), &titleProperty);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12132,13 +12100,13 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- if (__INST(hasSaveUnder) == true) {
- wa.save_under = (yesOrNo == true) ? 1 : 0;
- ENTER_XLIB();
- XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWSaveUnder, &wa);
- LEAVE_XLIB();
- }
- RETURN ( self );
+ if (__INST(hasSaveUnder) == true) {
+ wa.save_under = (yesOrNo == true) ? 1 : 0;
+ ENTER_XLIB();
+ XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWSaveUnder, &wa);
+ LEAVE_XLIB();
+ }
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12152,21 +12120,21 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- Window w;
-
- if ((aMainWindowId == nil) || (aMainWindowId == __MKSMALLINT(0))) {
- w = (Window) 0;
- } else {
- if (__isExternalAddress(aMainWindowId)) {
- w = __WindowVal(aMainWindowId);
- } else {
- goto getOutOfHere;
- }
- }
- ENTER_XLIB();
- XSetTransientForHint(myDpy, __WindowVal(aWindowId), w);
- LEAVE_XLIB();
- RETURN ( self );
+ Window w;
+
+ if ((aMainWindowId == nil) || (aMainWindowId == __MKSMALLINT(0))) {
+ w = (Window) 0;
+ } else {
+ if (__isExternalAddress(aMainWindowId)) {
+ w = __WindowVal(aMainWindowId);
+ } else {
+ goto getOutOfHere;
+ }
+ }
+ ENTER_XLIB();
+ XSetTransientForHint(myDpy, __WindowVal(aWindowId), w);
+ LEAVE_XLIB();
+ RETURN ( self );
}
getOutOfHere: ;
%}.
@@ -12184,10 +12152,10 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)
&& __isSmallInteger(aColorIndex)) {
- ENTER_XLIB();
- XSetWindowBackground(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XSetWindowBackground(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12205,10 +12173,10 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)
&& __isExternalAddress(aPixmapId)) {
- ENTER_XLIB();
- XSetWindowBackgroundPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XSetWindowBackgroundPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12223,10 +12191,10 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)
&& __isSmallInteger(aColorIndex)) {
- ENTER_XLIB();
- XSetWindowBorder(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XSetWindowBorder(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12241,10 +12209,10 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)
&& __isExternalAddress(aPixmapId)) {
- ENTER_XLIB();
- XSetWindowBorderPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XSetWindowBorderPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12263,17 +12231,17 @@
Pixmap shapeBitmap;
if (__isExternalAddress(aPixmapId))
- shapeBitmap = __PixmapVal(aPixmapId);
+ shapeBitmap = __PixmapVal(aPixmapId);
else
- shapeBitmap = (Pixmap)0;
+ shapeBitmap = (Pixmap)0;
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- ENTER_XLIB();
- XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeBounding,
- 0, 0, shapeBitmap, ShapeSet);
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeBounding,
+ 0, 0, shapeBitmap, ShapeSet);
+ LEAVE_XLIB();
+ RETURN ( self );
}
#endif
%}.
@@ -12289,10 +12257,10 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)
&& __isSmallInteger(aNumber)) {
- ENTER_XLIB();
- XSetWindowBorderWidth(myDpy, __WindowVal(aWindowId), __intVal(aNumber));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XSetWindowBorderWidth(myDpy, __WindowVal(aWindowId), __intVal(aNumber));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12307,24 +12275,24 @@
%{
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- XClassHint classhint;
-
- classhint.res_class = classhint.res_name = 0;
-
- if (__isStringLike(wClass)) {
- classhint.res_class = (char *) __stringVal(wClass);
- } else if (wClass != nil)
- goto error;
-
- if (__isStringLike(wName)) {
- classhint.res_name = (char *) __stringVal(wName);
- } else if (wName != nil)
- goto error;
-
- ENTER_XLIB();
- XSetClassHint(myDpy, __WindowVal(aWindowId), &classhint);
- LEAVE_XLIB();
- RETURN ( self );
+ XClassHint classhint;
+
+ classhint.res_class = classhint.res_name = 0;
+
+ if (__isStringLike(wClass)) {
+ classhint.res_class = (char *) __stringVal(wClass);
+ } else if (wClass != nil)
+ goto error;
+
+ if (__isStringLike(wName)) {
+ classhint.res_name = (char *) __stringVal(wName);
+ } else if (wName != nil)
+ goto error;
+
+ ENTER_XLIB();
+ XSetClassHint(myDpy, __WindowVal(aWindowId), &classhint);
+ LEAVE_XLIB();
+ RETURN ( self );
error:;
}
%}.
@@ -12341,34 +12309,34 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- if (how == @symbol(NorthWest)) {
- wa.win_gravity = NorthWestGravity;
- } else if (how == @symbol(NorthEast)) {
- wa.win_gravity = NorthEastGravity;
- } else if (how == @symbol(SouthWest)) {
- wa.win_gravity = SouthWestGravity;
- } else if (how == @symbol(SouthEast)) {
- wa.win_gravity = SouthEastGravity;
- } else if (how == @symbol(Center)) {
- wa.win_gravity = CenterGravity;
- } else if (how == @symbol(North)) {
- wa.win_gravity = NorthGravity;
- } else if (how == @symbol(South)) {
- wa.win_gravity = SouthGravity;
- } else if (how == @symbol(West)) {
- wa.win_gravity = WestGravity;
- } else if (how == @symbol(East)) {
- wa.win_gravity = EastGravity;
- } else {
- wa.win_gravity = NorthWestGravity;
- }
-
-
- ENTER_XLIB();
- XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWWinGravity, &wa);
- LEAVE_XLIB();
-
- RETURN ( self );
+ if (how == @symbol(NorthWest)) {
+ wa.win_gravity = NorthWestGravity;
+ } else if (how == @symbol(NorthEast)) {
+ wa.win_gravity = NorthEastGravity;
+ } else if (how == @symbol(SouthWest)) {
+ wa.win_gravity = SouthWestGravity;
+ } else if (how == @symbol(SouthEast)) {
+ wa.win_gravity = SouthEastGravity;
+ } else if (how == @symbol(Center)) {
+ wa.win_gravity = CenterGravity;
+ } else if (how == @symbol(North)) {
+ wa.win_gravity = NorthGravity;
+ } else if (how == @symbol(South)) {
+ wa.win_gravity = SouthGravity;
+ } else if (how == @symbol(West)) {
+ wa.win_gravity = WestGravity;
+ } else if (how == @symbol(East)) {
+ wa.win_gravity = EastGravity;
+ } else {
+ wa.win_gravity = NorthWestGravity;
+ }
+
+
+ ENTER_XLIB();
+ XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWWinGravity, &wa);
+ LEAVE_XLIB();
+
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12382,20 +12350,20 @@
|iconId|
aForm notNil ifTrue:[
- iconId := aForm id
+ iconId := aForm id
].
%{
if (ISCONNECTED
&& __isExternalAddress(iconId)
&& __isExternalAddress(aWindowId)) {
- XWMHints hints;
-
- hints.icon_pixmap = __PixmapVal(iconId);
- hints.flags = IconPixmapHint;
- ENTER_XLIB();
- XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
- LEAVE_XLIB();
- RETURN ( self );
+ XWMHints hints;
+
+ hints.icon_pixmap = __PixmapVal(iconId);
+ hints.flags = IconPixmapHint;
+ ENTER_XLIB();
+ XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12409,28 +12377,28 @@
|iconId maskId|
aForm notNil ifTrue:[
- iconId := aForm id
+ iconId := aForm id
].
aMaskForm notNil ifTrue:[
- maskId := aMaskForm id.
+ maskId := aMaskForm id.
].
%{
if (ISCONNECTED
&& __isExternalAddress(iconId)
&& __isExternalAddress(aWindowId)) {
- XWMHints hints;
-
- hints.icon_pixmap = __PixmapVal(iconId);
- hints.flags = IconPixmapHint;
- if ((maskId != nil)
- && __isExternalAddress(maskId)) {
- hints.icon_mask = __PixmapVal(maskId);
- hints.flags |= IconMaskHint;
- }
- ENTER_XLIB();
- XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
- LEAVE_XLIB();
- RETURN ( self );
+ XWMHints hints;
+
+ hints.icon_pixmap = __PixmapVal(iconId);
+ hints.flags = IconPixmapHint;
+ if ((maskId != nil)
+ && __isExternalAddress(maskId)) {
+ hints.icon_mask = __PixmapVal(maskId);
+ hints.flags |= IconMaskHint;
+ }
+ ENTER_XLIB();
+ XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12445,20 +12413,20 @@
|iconWindowId|
aView notNil ifTrue:[
- iconWindowId := aView id
+ iconWindowId := aView id
].
%{
if (ISCONNECTED
&& __isExternalAddress(iconWindowId)
&& __isExternalAddress(aWindowId)) {
- XWMHints wmhints;
-
- wmhints.icon_window = __WindowVal(iconWindowId);
- wmhints.flags = IconWindowHint;
- ENTER_XLIB();
- XSetWMHints(myDpy, __WindowVal(aWindowId), &wmhints);
- LEAVE_XLIB();
- RETURN ( self );
+ XWMHints wmhints;
+
+ wmhints.icon_window = __WindowVal(iconWindowId);
+ wmhints.flags = IconWindowHint;
+ ENTER_XLIB();
+ XSetWMHints(myDpy, __WindowVal(aWindowId), &wmhints);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12472,29 +12440,29 @@
%{
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- Display *dpy = myDpy;
- XSizeHints szhints;
- Window win;
-
- win = __WindowVal(aWindowId);
-
- szhints.flags = 0;
- if (__bothSmallInteger(minW, minH)) {
- szhints.flags |= PMinSize;
- szhints.min_width = __intVal(minW);
- szhints.min_height = __intVal(minH);
- }
- if (__bothSmallInteger(maxW, maxH)) {
- szhints.flags |= PMaxSize;
- szhints.max_width = __intVal(maxW);
- szhints.max_height = __intVal(maxH);
- }
-
- if (szhints.flags) {
- ENTER_XLIB();
- XSetNormalHints(dpy, win, &szhints);
- LEAVE_XLIB();
- }
+ Display *dpy = myDpy;
+ XSizeHints szhints;
+ Window win;
+
+ win = __WindowVal(aWindowId);
+
+ szhints.flags = 0;
+ if (__bothSmallInteger(minW, minH)) {
+ szhints.flags |= PMinSize;
+ szhints.min_width = __intVal(minW);
+ szhints.min_height = __intVal(minH);
+ }
+ if (__bothSmallInteger(maxW, maxH)) {
+ szhints.flags |= PMaxSize;
+ szhints.max_width = __intVal(maxW);
+ szhints.max_height = __intVal(maxH);
+ }
+
+ if (szhints.flags) {
+ ENTER_XLIB();
+ XSetNormalHints(dpy, win, &szhints);
+ LEAVE_XLIB();
+ }
}
%}.
!
@@ -12510,10 +12478,10 @@
utf8String := aString utf8Encoded.
aString isWideString ifTrue:[
- "/ X does not like 2-byte labels ...
- simpleString := aString asSingleByteStringReplaceInvalidWith:$?
+ "/ X does not like 2-byte labels ...
+ simpleString := aString asSingleByteStringReplaceInvalidWith:$?
] ifFalse:[
- simpleString := aString.
+ simpleString := aString.
].
%{
@@ -12525,17 +12493,17 @@
&& __isStringLike(simpleString)
&& __isExternalAddress(aWindowId)) {
- titleProperty.value = __stringVal(utf8String);
- titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
- titleProperty.format = 8;
- titleProperty.nitems = __stringSize(utf8String);
-
- ENTER_XLIB();
- XStoreName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
- /* alternative settings for UTF8-Strings */
- XSetWMName(myDpy, __WindowVal(aWindowId), &titleProperty);
- LEAVE_XLIB();
- RETURN ( self );
+ titleProperty.value = __stringVal(utf8String);
+ titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
+ titleProperty.format = 8;
+ titleProperty.nitems = __stringSize(utf8String);
+
+ ENTER_XLIB();
+ XStoreName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
+ /* alternative settings for UTF8-Strings */
+ XSetWMName(myDpy, __WindowVal(aWindowId), &titleProperty);
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailedOrClosedConnection
@@ -12574,18 +12542,18 @@
Pixmap shapeBitmap;
if (__isExternalAddress(aPixmapId))
- shapeBitmap = __PixmapVal(aPixmapId);
+ shapeBitmap = __PixmapVal(aPixmapId);
else
- shapeBitmap = (Pixmap)0;
+ shapeBitmap = (Pixmap)0;
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- ENTER_XLIB();
- XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeClip,
- 0, 0,
- shapeBitmap, ShapeSet);
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeClip,
+ 0, 0,
+ shapeBitmap, ShapeSet);
+ LEAVE_XLIB();
+ RETURN ( self );
}
#endif
%}.
@@ -12602,18 +12570,18 @@
stateAtom := self atomIDOf:aSymbol create:false.
(netWmWindowStateAtom notNil and:[stateAtom notNil]) ifTrue:[
- self
- sendClientEvent:netWmWindowStateAtom
- format:32
- to:(self rootWindowId)
- propagate:true
- eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
- window:aWindowId
- data1:(self atomIDOf:#'_NET_WM_STATE_ADD' create:false)
- data2:stateAtom
- data3:nil
- data4:1
- data5:nil.
+ self
+ sendClientEvent:netWmWindowStateAtom
+ format:32
+ to:(self rootWindowId)
+ propagate:true
+ eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
+ window:aWindowId
+ data1:(self atomIDOf:#'_NET_WM_STATE_ADD' create:false)
+ data2:stateAtom
+ data3:nil
+ data4:1
+ data5:nil.
] ifFalse:[self halt.].
"
@@ -12646,30 +12614,30 @@
| nameAtom typeAtom valueAtom |
self assert:(#(_NET_WM_WINDOW_TYPE_DESKTOP
- _NET_WM_WINDOW_TYPE_DOCK
- _NET_WM_WINDOW_TYPE_TOOLBAR
- _NET_WM_WINDOW_TYPE_MENU
- _NET_WM_WINDOW_TYPE_UTILITY
- _NET_WM_WINDOW_TYPE_SPLASH
- _NET_WM_WINDOW_TYPE_DIALOG
- _NET_WM_WINDOW_TYPE_NORMAL) includes: aSymbol).
+ _NET_WM_WINDOW_TYPE_DOCK
+ _NET_WM_WINDOW_TYPE_TOOLBAR
+ _NET_WM_WINDOW_TYPE_MENU
+ _NET_WM_WINDOW_TYPE_UTILITY
+ _NET_WM_WINDOW_TYPE_SPLASH
+ _NET_WM_WINDOW_TYPE_DIALOG
+ _NET_WM_WINDOW_TYPE_NORMAL) includes: aSymbol).
nameAtom := self atomIDOf:#'_NET_WM_WINDOW_TYPE' create:false.
nameAtom isNil ifTrue:[
- "/Hmm, no such property, not running under EWMH compliant WM?
- self breakPoint: #jv.
- ^self
+ "/Hmm, no such property, not running under EWMH compliant WM?
+ self breakPoint: #jv.
+ ^self
].
"/ Hmm, hmm, no access to XA_ATOM, XA_INTEGER and so on...
typeAtom := self atomIDOf:#'ATOM' create:false.
typeAtom isNil ifTrue:[
- self error:'Oops, no ATOM atom'.
+ self error:'Oops, no ATOM atom'.
].
valueAtom := self atomIDOf: aSymbol create:false.
valueAtom isNil ifTrue:[
- "/Hmm, no such property, not running under EWMH compliant WM?
- self breakPoint: #jv.
- ^self
+ "/Hmm, no such property, not running under EWMH compliant WM?
+ self breakPoint: #jv.
+ ^self
].
self setProperty: nameAtom type: typeAtom value: valueAtom for: aWindowId.
@@ -12723,14 +12691,14 @@
* ignore closed connection
*/
if (! ISCONNECTED) {
- RETURN ( self );
+ RETURN ( self );
}
if (__isExternalAddress(aWindowId)) {
- ENTER_XLIB();
- XUnmapWindow(myDpy, __WindowVal(aWindowId));
- LEAVE_XLIB();
- RETURN ( self );
+ ENTER_XLIB();
+ XUnmapWindow(myDpy, __WindowVal(aWindowId));
+ LEAVE_XLIB();
+ RETURN ( self );
}
%}.
self primitiveFailed
@@ -12745,28 +12713,28 @@
if (ISCONNECTED
&& __isExternalAddress(aWindowId)) {
- Atom JunkAtom;
- int JunkInt;
- unsigned long WinState,JunkLong;
- unsigned char *Property;
- Atom WM_STATE_Atom;
-
- if (__INST(wmStateAtom) != nil) {
- WM_STATE_Atom = __AtomVal(__INST(wmStateAtom));
-
- ENTER_XLIB();
- XGetWindowProperty(myDpy, __WindowVal(aWindowId),
- WM_STATE_Atom,
- 0L, 2L, False, AnyPropertyType,
- &JunkAtom,&JunkInt,&WinState,&JunkLong,
- &Property);
- LEAVE_XLIB();
- WinState=(unsigned long)(*((long*)Property));
- if (WinState==3) {
- RETURN (true);
- }
- }
- RETURN (false);
+ Atom JunkAtom;
+ int JunkInt;
+ unsigned long WinState,JunkLong;
+ unsigned char *Property;
+ Atom WM_STATE_Atom;
+
+ if (__INST(wmStateAtom) != nil) {
+ WM_STATE_Atom = __AtomVal(__INST(wmStateAtom));
+
+ ENTER_XLIB();
+ XGetWindowProperty(myDpy, __WindowVal(aWindowId),
+ WM_STATE_Atom,
+ 0L, 2L, False, AnyPropertyType,
+ &JunkAtom,&JunkInt,&WinState,&JunkLong,
+ &Property);
+ LEAVE_XLIB();
+ WinState=(unsigned long)(*((long*)Property));
+ if (WinState==3) {
+ RETURN (true);
+ }
+ }
+ RETURN (false);
}
%}.
self primitiveFailedOrClosedConnection.
@@ -12785,7 +12753,7 @@
process that requests the clipboard.
[author:]
- Stefan Vogel (stefan@zwerg)
+ Stefan Vogel (stefan@zwerg)
[instance variables:]
@@ -12814,47 +12782,47 @@
|selection|
buffer isNil ifTrue:[
- ^ nil.
+ ^ nil.
].
targetID == (display atomIDOf:#STRING) ifTrue:[
- display clipboardEncoding notNil ifTrue:[
- selection := buffer decodeFrom:display clipboardEncoding
- ].
- selection := buffer.
+ display clipboardEncoding notNil ifTrue:[
+ selection := buffer decodeFrom:display clipboardEncoding
+ ].
+ selection := buffer.
] ifFalse:[targetID == (display atomIDOf:#'UTF8_STRING') ifTrue:[
"/ Transcript show:'UTF8: '; showCR:buffer storeString.
- selection := CharacterArray fromUTF8Bytes:buffer
+ selection := CharacterArray fromUTF8Bytes:buffer
] ifFalse:[targetID == (display atomIDOf:#TEXT) ifTrue:[
"/ Transcript show:'TEXT: '; showCR:buffer storeString.
- selection := buffer asString
+ selection := buffer asString
] ifFalse:[targetID == (display atomIDOf:#'COMPOUND_TEXT') ifTrue:[
"/ Transcript show:'COMPOUND_TEXT: '; showCR:buffer storeString.
- selection := buffer asString
+ selection := buffer asString
]]]].
selection notNil ifTrue:[
- (selection endsWith:Character cr) ifTrue:[
- selection := selection asStringCollection copyWith:''
- ].
- ^ selection.
+ (selection endsWith:Character cr) ifTrue:[
+ selection := selection asStringCollection copyWith:''
+ ].
+ ^ selection.
].
targetID == (display atomIDOf:#'TARGETS') ifTrue:[
- ^ buffer
+ ^ buffer
].
targetID == (display atomIDOf:#'ST_OBJECT') ifTrue:[
- "require libboss to be loaded"
- (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
- 'SelectionFetch: cannot decode object (libboss library missing)' errorPrintCR.
- ^ nil
- ].
- ^ (Object
- readBinaryFrom:(ReadStream on:buffer)
- onError:[:ex |
- ('SelectionFetch: error while decoding binary object: ',ex description) errorPrintCR.
- nil
- ])
+ "require libboss to be loaded"
+ (Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
+ 'SelectionFetch: cannot decode object (libboss library missing)' errorPrintCR.
+ ^ nil
+ ].
+ ^ (Object
+ readBinaryFrom:(ReadStream on:buffer)
+ onError:[:ex |
+ ('SelectionFetch: error while decoding binary object: ',ex description) errorPrintCR.
+ nil
+ ])
].
'XWorkstation: unimplemented property targetID: ' infoPrint. (display atomName:targetID) infoPrint.
@@ -12871,16 +12839,16 @@
Save and wake up waiters"
aMessage selector == #propertyChange:property:state:time: ifTrue:[
- (aMessage arguments at:2) ~~ propertyID ifTrue:[
- "I am only interested in changes of the property used to
- store the selection"
- ^ self.
- ].
- message notNil ifTrue:[
- "this should not happen - bad selection holder?"
- 'XWorkstation(error): message overflow: ' errorPrint. display errorPrintCR.
- ^ self.
- ].
+ (aMessage arguments at:2) ~~ propertyID ifTrue:[
+ "I am only interested in changes of the property used to
+ store the selection"
+ ^ self.
+ ].
+ message notNil ifTrue:[
+ "this should not happen - bad selection holder?"
+ 'XWorkstation(error): message overflow: ' errorPrint. display errorPrintCR.
+ ^ self.
+ ].
].
"we get a propertyChange before the selectionNotify.
@@ -12897,26 +12865,26 @@
|property propertyValue|
incremental ifFalse:[
- "ignore property changes until we are in incremental mode"
- ^ self.
+ "ignore property changes until we are in incremental mode"
+ ^ self.
].
property := display getProperty:propertyID from:drawableID delete:true.
propertyValue := property value.
propertyValue size == 0 ifTrue:[
- "property with size 0 signals end of transfer"
- done := true.
+ "property with size 0 signals end of transfer"
+ done := true.
] ifFalse:[
- buffer isNil ifTrue:[
- targetID := property key.
- buffer := propertyValue.
- ] ifFalse:[
- targetID ~= property key ifTrue:[
- 'XWorkstation(warning): targetID change in incremental select: ' errorPrint. display errorPrintCR.
- ].
- buffer := buffer, propertyValue.
- ].
+ buffer isNil ifTrue:[
+ targetID := property key.
+ buffer := propertyValue.
+ ] ifFalse:[
+ targetID ~= property key ifTrue:[
+ 'XWorkstation(warning): targetID change in incremental select: ' errorPrint. display errorPrintCR.
+ ].
+ buffer := buffer, propertyValue.
+ ].
].
!
@@ -12931,39 +12899,39 @@
|property propertyKey atomName|
aSelectionID ~~ selectionID ifTrue:[
- "ignore notification that is not for our selection"
- ^ self.
+ "ignore notification that is not for our selection"
+ ^ self.
].
aPropertyID == 0 ifTrue:[
- "the selection owner could not convert the selection to our target type"
- done := true.
- ^ self.
+ "the selection owner could not convert the selection to our target type"
+ done := true.
+ ^ self.
].
property := display getProperty:aPropertyID from:drawableID delete:true.
property isNil ifTrue:[
- "the property does not exist in the specified window"
- done := true.
- ^ self
+ "the property does not exist in the specified window"
+ done := true.
+ ^ self
].
propertyKey := property key.
propertyKey == aTargetID ifTrue:[
- "good, the property is consistent with our request.
- The whole selection is in the property"
- buffer := property value.
- done := true.
+ "good, the property is consistent with our request.
+ The whole selection is in the property"
+ buffer := property value.
+ done := true.
] ifFalse:[propertyKey == (display atomIDOf:#INCR) ifTrue:[
- "this is an incremental transfer. Wait for property change"
- incremental := true.
+ "this is an incremental transfer. Wait for property change"
+ incremental := true.
] ifFalse:[
- atomName := (display atomName:propertyKey) ? propertyKey.
- 'XWorkstation(error): unexpected targetID (' errorPrint.
- atomName errorPrint.
- ') in selectionNotify: ' errorPrint.
- display errorPrintCR.
- done := true.
+ atomName := (display atomName:propertyKey) ? propertyKey.
+ 'XWorkstation(error): unexpected targetID (' errorPrint.
+ atomName errorPrint.
+ ') in selectionNotify: ' errorPrint.
+ display errorPrintCR.
+ done := true.
]].
! !
@@ -12984,31 +12952,31 @@
incremental := false.
[
- |timeout|
-
- display registerSelectionFetcher:self.
-
- display
- requestSelection:aSelectionId
- type:aTargetId
- for:drawableID
- intoProperty:propertyID.
-
- timeout := display xlibTimeout.
- [
- |currentMessage|
-
- (sema waitWithTimeout:timeout) isNil ifTrue:[
- "the selection owner didn't respond within reasonable time"
- 'XWorkstation(error): selection owner does not respond:' infoPrint. display infoPrintCR.
- ^ nil.
- ].
- currentMessage := message.
- message := nil.
- currentMessage notNil ifTrue:[currentMessage sendTo:self].
- ] doUntil:[done].
+ |timeout|
+
+ display registerSelectionFetcher:self.
+
+ display
+ requestSelection:aSelectionId
+ type:aTargetId
+ for:drawableID
+ intoProperty:propertyID.
+
+ timeout := display xlibTimeout.
+ [
+ |currentMessage|
+
+ (sema waitWithTimeout:timeout) isNil ifTrue:[
+ "the selection owner didn't respond within reasonable time"
+ 'XWorkstation(error): selection owner does not respond:' infoPrint. display infoPrintCR.
+ ^ nil.
+ ].
+ currentMessage := message.
+ message := nil.
+ currentMessage notNil ifTrue:[currentMessage sendTo:self].
+ ] doUntil:[done].
] ensure:[
- display unregisterSelectionFetcher:self.
+ display unregisterSelectionFetcher:self.
].
^ self getSelection
@@ -13030,14 +12998,14 @@
is newer mapped.
[author:]
- Jan Vrany <jan.vrany@fit.cvut.cz>
+ Jan Vrany <jan.vrany@fit.cvut.cz>
[instance variables:]
[class variables:]
[see also:]
- Inter-Client Communication Conventions Manual [http://tronche.com/gui/x/icccm/]
+ Inter-Client Communication Conventions Manual [http://tronche.com/gui/x/icccm/]
"
@@ -13046,11 +13014,11 @@
!XWorkstation class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.575 2013-11-25 10:51:46 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.576 2013-11-25 11:00:04 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.575 2013-11-25 10:51:46 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.576 2013-11-25 11:00:04 stefan Exp $'
!
version_SVN