XWorkstation.st
changeset 4067 95d3cc7b4f62
parent 4061 10f8f47f03a3
child 4082 cb6eb58e8311
equal deleted inserted replaced
4066:0855c2c499c6 4067:95d3cc7b4f62
       
     1 "{ Encoding: utf8 }"
       
     2 
     1 "
     3 "
     2 COPYRIGHT (c) 1989 by Claus Gittinger
     4 COPYRIGHT (c) 1989 by Claus Gittinger
     3 	      All Rights Reserved
     5 	      All Rights Reserved
     4 
     6 
     5  This software is furnished under a license and may be used
     7  This software is furnished under a license and may be used
  5080     }
  5082     }
  5081     RETURN ( rslt );
  5083     RETURN ( rslt );
  5082 %}
  5084 %}
  5083 !
  5085 !
  5084 
  5086 
  5085 getEventFor:aViewIdOrNil withMask:eventMask
       
  5086     "read and dispose the next event"
       
  5087 
       
  5088     ^ self getEventFor:aViewIdOrNil withMask:eventMask into:nil
       
  5089 !
       
  5090 
       
  5091 getEventFor:aViewIdOrNil withMask:eventMask into:anEventArray
  5087 getEventFor:aViewIdOrNil withMask:eventMask into:anEventArray
  5092     "read next event if there is one and put events data into anEventArray. 
  5088     "read next event if there is one and put events data into anEventArray. 
  5093      If aViewIdOrNil is nil, events for any view are fetched; 
  5089      If aViewIdOrNil is nil, events for any view are fetched; 
  5094      otherwise only events for that specific view will be fetched.
  5090      otherwise only events for that specific view will be fetched.
  5095      Returns true, if there was an event, false otherwise.
  5091      Returns true, if there was an event, false otherwise.
  5096      This method may block - so you better check for pending events
  5092      This method may block - so you better check for pending events
  5097      before calling for it.
  5093      before calling for it.
  5098 
  5094 
  5099      The event fields are placed them into anEventArray (must be at least size 13):
  5095      The event fields are placed them into anEventArray (must be at least size 13):
  5100      the fields are:
  5096      the fields are:
  5101 	1:      windowID
  5097         1:      windowID
  5102 	2:      eventType-ID
  5098         2:      eventType-ID
  5103 	3:      eventTypeSymbol
  5099         3:      eventTypeSymbol
  5104 
  5100 
  5105 	4..     args
  5101         4..     args
  5106 
  5102 
  5107      Sorry I had to split dispatch into this fetch method and a separate
  5103      Sorry I had to split dispatch into this fetch method and a separate
  5108      handler method to allow UNLIMITEDSTACK here.
  5104      handler method to allow UNLIMITEDSTACK here.
  5109      (some Xlibs do a big alloca there which cannot be done in 
  5105      (some Xlibs do a big alloca there which cannot be done in 
  5110       #dispatchEvent:, since it dispatches out into ST-methods).
  5106       #dispatchEvent:, since it dispatches out into ST-methods).
  5124     char keySymStringBuffer[32];
  5120     char keySymStringBuffer[32];
  5125     unsigned INT nextMultiClickTime;
  5121     unsigned INT nextMultiClickTime;
  5126     OBJ arg, sym, t, windowID;
  5122     OBJ arg, sym, t, windowID;
  5127 
  5123 
  5128     if (! ISCONNECTED) {
  5124     if (! ISCONNECTED) {
  5129 	RETURN (false);
  5125         RETURN (false);
  5130     }
  5126     }
  5131 
  5127 
  5132     dpy = myDpy;
  5128     dpy = myDpy;
  5133 
  5129 
  5134     ev.type = 0;
  5130     ev.type = 0;
  5135 
  5131 
  5136     if (__isSmallInteger(eventMask)) {
  5132     if (__isSmallInteger(eventMask)) {
  5137 	evMask = __intVal(eventMask);
  5133         evMask = __intVal(eventMask);
  5138     } else {
  5134     } else {
  5139 	evMask = ~0;
  5135         evMask = ~0;
  5140     }
  5136     }
  5141 
  5137 
  5142     if (__isExternalAddress(aViewIdOrNil)) {
  5138     if (__isExternalAddress(aViewIdOrNil)) {
  5143 	wWanted = __WindowVal(aViewIdOrNil);
  5139         wWanted = __WindowVal(aViewIdOrNil);
  5144 	returnValue = XCheckWindowEvent(dpy, wWanted, evMask, &ev);
  5140         returnValue = XCheckWindowEvent(dpy, wWanted, evMask, &ev);
  5145     } else {
  5141     } else {
  5146 	if (evMask == ~0) {
  5142         if (evMask == ~0) {
  5147 	    XNextEvent(dpy, &ev);
  5143             XNextEvent(dpy, &ev);
  5148 	    returnValue = 1;
  5144             returnValue = 1;
  5149 	} else {
  5145         } else {
  5150 	    returnValue = XCheckMaskEvent(dpy, evMask, &ev);
  5146             returnValue = XCheckMaskEvent(dpy, evMask, &ev);
  5151 	}
  5147         }
  5152     }
  5148     }
  5153     if (!returnValue) {
  5149     if (!returnValue) {
  5154 	/* there is no event */
  5150         /* there is no event */
  5155 	RETURN (false);
  5151         RETURN (false);
  5156     }
  5152     }
  5157 
  5153 
  5158     if (anEventArray == nil) {
  5154     if (anEventArray == nil) {
  5159 	/* sender is not interested in the event */
  5155         /* sender is not interested in the event */
  5160 	RETURN(true);
  5156         RETURN(true);
  5161     }
  5157     }
  5162 
  5158 
  5163     if (!__isArray(anEventArray)) {
  5159     if (!__isArray(anEventArray)) {
  5164 	fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
  5160         fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
  5165 	RETURN (false);
  5161         RETURN (false);
  5166     }
  5162     }
  5167     if (__arraySize(anEventArray) < 11) {
  5163     if (__arraySize(anEventArray) < 11) {
  5168 	fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
  5164         fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
  5169 	RETURN (false);
  5165         RETURN (false);
  5170     }
  5166     }
  5171 
  5167 
  5172 #   define ANYBUTTON   (Button1MotionMask | Button2MotionMask | Button3MotionMask)
  5168 #   define ANYBUTTON   (Button1MotionMask | Button2MotionMask | Button3MotionMask)
  5173 
  5169 
  5174 #   define ae ((XAnyEvent *)&ev)
  5170 #   define ae ((XAnyEvent *)&ev)
  5190 #   define pe ((XPropertyEvent *)&ev)
  5186 #   define pe ((XPropertyEvent *)&ev)
  5191 #   define sce ((XSelectionClearEvent *)&ev)
  5187 #   define sce ((XSelectionClearEvent *)&ev)
  5192 #   define cme ((XColormapEvent *)&ev)
  5188 #   define cme ((XColormapEvent *)&ev)
  5193 
  5189 
  5194     if (((t = __INST(lastId)) != nil)
  5190     if (((t = __INST(lastId)) != nil)
  5195 	 && __isExternalAddress(t)
  5191          && __isExternalAddress(t)
  5196 	 && (__WindowVal(t) == ae->window)) {
  5192          && (__WindowVal(t) == ae->window)) {
  5197 	windowID = t;
  5193         windowID = t;
  5198     } else {
  5194     } else {
  5199 	windowID = __MKEXTERNALADDRESS(ae->window);
  5195         windowID = __MKEXTERNALADDRESS(ae->window);
  5200     }
  5196     }
  5201 
  5197 
  5202     __ArrayInstPtr(anEventArray)->a_element[0] = windowID; __STORE(anEventArray, windowID);
  5198     __ArrayInstPtr(anEventArray)->a_element[0] = windowID; __STORE(anEventArray, windowID);
  5203     __ArrayInstPtr(anEventArray)->a_element[1] = __MKSMALLINT(ev.type);
  5199     __ArrayInstPtr(anEventArray)->a_element[1] = __MKSMALLINT(ev.type);
  5204 
  5200 
  5205     switch (ev.type) {
  5201     switch (ev.type) {
  5206 	case KeyRelease:
  5202         case KeyRelease:
  5207 	    sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:);
  5203             sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:);
  5208 	    goto keyPressAndRelease;
  5204             goto keyPressAndRelease;
  5209 
  5205 
  5210 	case KeyPress:
  5206         case KeyPress:
  5211 	    sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:);
  5207             sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:);
  5212 	    /* FALL INTO */
  5208             /* FALL INTO */
  5213 
  5209 
  5214 	keyPressAndRelease:
  5210         keyPressAndRelease:
  5215 	    arg = nil;
  5211             arg = nil;
  5216 	    nchars = XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL);
  5212             nchars = XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL);
  5217 	    if (nchars 
  5213             if (nchars 
  5218 	     && (((buffer[0] >= ' ') && (buffer[0] <= '~'))
  5214              && (((buffer[0] >= ' ') && (buffer[0] <= '~'))
  5219 		 || (buffer[0] >= 0x80))) {
  5215                  || (buffer[0] >= 0x80))) {
  5220 		arg = _MKCHARACTER(buffer[0])/* *_CharacterTable[buffer[0]] */;
  5216                 arg = __MKCHARACTER(buffer[0])/* *_CharacterTable[buffer[0]] */;
  5221 		keySymString = NULL;
  5217                 keySymString = NULL;
  5222 	    } else {
  5218             } else {
  5223 		keySymString = XKeysymToString(keySym);
  5219                 keySymString = XKeysymToString(keySym);
  5224 		if (keySymString) {
  5220                 if (keySymString) {
  5225 		    arg = __MKSTRING(keySymString);
  5221                     arg = __MKSYMBOL(keySymString, 0);
  5226 		} else {
  5222                 } else {
  5227 		    arg = nil;
  5223                     arg = nil;
  5228 		}
  5224                 }
  5229 	    }
  5225             }
  5230 
  5226 
  5231 #ifdef IGNORE_UNKNOWN_KEYCODES
  5227 #ifdef IGNORE_UNKNOWN_KEYCODES
  5232 	    if (arg == nil) {
  5228             if (arg == nil) {
  5233 		/* happens sometimes (alt-graph on sun has no keysym) */
  5229                 /* happens sometimes (alt-graph on sun has no keysym) */
  5234 		RETURN (false);
  5230                 RETURN (false);
  5235 	    }
  5231             }
  5236 #endif
  5232 #endif
  5237 	    __ArrayInstPtr(anEventArray)->a_element[2] = sym;
  5233             __ArrayInstPtr(anEventArray)->a_element[2] = sym;
  5238 
  5234 
  5239 	    __ArrayInstPtr(anEventArray)->a_element[3] = arg; __STORE(anEventArray, arg);
  5235             __ArrayInstPtr(anEventArray)->a_element[3] = arg; __STORE(anEventArray, arg);
  5240 	    __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKUINT(ke->keycode); __STORE(anEventArray, t);
  5236             __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKUINT(ke->keycode); __STORE(anEventArray, t);
  5241 	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ke->state);
  5237             __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ke->state);
  5242 	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ke->x);
  5238             __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ke->x);
  5243 	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ke->y);
  5239             __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ke->y);
  5244 	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ke->x_root);
  5240             __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ke->x_root);
  5245 	    __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ke->y_root);
  5241             __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ke->y_root);
  5246 	    __ArrayInstPtr(anEventArray)->a_element[10] = t = __MKUINT(ke->time); __STORE(anEventArray, t);
  5242             __ArrayInstPtr(anEventArray)->a_element[10] = t = __MKUINT(ke->time); __STORE(anEventArray, t);
  5247 	    break;
  5243             break;
  5248 
  5244 
  5249 	case ButtonPress:
  5245         case ButtonPress:
  5250 	    sym = @symbol(buttonPress:button:state:x:y:rootX:rootY:time:);
  5246             sym = @symbol(buttonPress:button:state:x:y:rootX:rootY:time:);
  5251 	    goto buttonPressAndRelease;
  5247             goto buttonPressAndRelease;
  5252 
  5248 
  5253 	case ButtonRelease:
  5249         case ButtonRelease:
  5254 	    sym = @symbol(buttonRelease:button:state:x:y:rootX:rootY:time:);
  5250             sym = @symbol(buttonRelease:button:state:x:y:rootX:rootY:time:);
  5255 	    /* fall into */
  5251             /* fall into */
  5256 
  5252 
  5257 	buttonPressAndRelease:
  5253         buttonPressAndRelease:
  5258 	    __ArrayInstPtr(anEventArray)->a_element[2] = sym;
  5254             __ArrayInstPtr(anEventArray)->a_element[2] = sym;
  5259 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(be->button);
  5255             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(be->button);
  5260 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ke->state);
  5256             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ke->state);
  5261 	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(be->x);
  5257             __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(be->x);
  5262 	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(be->y);
  5258             __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(be->y);
  5263 	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(be->x_root);
  5259             __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(be->x_root);
  5264 	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(be->y_root);
  5260             __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(be->y_root);
  5265 	    __ArrayInstPtr(anEventArray)->a_element[9] = t = __MKUINT(be->time); __STORE(anEventArray, t);
  5261             __ArrayInstPtr(anEventArray)->a_element[9] = t = __MKUINT(be->time); __STORE(anEventArray, t);
  5266 	    break;
  5262             break;
  5267 
  5263 
  5268 	case MotionNotify:
  5264         case MotionNotify:
  5269 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(buttonMotion:state:x:y:rootX:rootY:time:);
  5265             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(buttonMotion:state:x:y:rootX:rootY:time:);
  5270 
  5266 
  5271 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(me->state);
  5267             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(me->state);
  5272 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(me->x);
  5268             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(me->x);
  5273 	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(me->y);
  5269             __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(me->y);
  5274 	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(me->x_root);
  5270             __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(me->x_root);
  5275 	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(me->y_root);
  5271             __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(me->y_root);
  5276 	    __ArrayInstPtr(anEventArray)->a_element[8] = t = __MKUINT(me->time); __STORE(anEventArray, t);
  5272             __ArrayInstPtr(anEventArray)->a_element[8] = t = __MKUINT(me->time); __STORE(anEventArray, t);
  5277 	    break;
  5273             break;
  5278 
  5274 
  5279 	case FocusIn:
  5275         case FocusIn:
  5280 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusIn:mode:detail:);
  5276             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusIn:mode:detail:);
  5281 	    goto focusInOut;
  5277             goto focusInOut;
  5282 
  5278 
  5283 	case FocusOut:
  5279         case FocusOut:
  5284 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusOut:mode:detail:);
  5280             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusOut:mode:detail:);
  5285 	    /* fall into */
  5281             /* fall into */
  5286 
  5282 
  5287 	focusInOut:
  5283         focusInOut:
  5288 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(fe->mode);
  5284             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(fe->mode);
  5289 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(fe->detail);
  5285             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(fe->detail);
  5290 	    break;
  5286             break;
  5291 
  5287 
  5292 	case EnterNotify:
  5288         case EnterNotify:
  5293 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerEnter:x:y:rootX:rootY:state:mode:detail:time:);
  5289             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerEnter:x:y:rootX:rootY:state:mode:detail:time:);
  5294 	    goto enterLeave;
  5290             goto enterLeave;
  5295 
  5291 
  5296 	case LeaveNotify:
  5292         case LeaveNotify:
  5297 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerLeave:x:y:rootX:rootY:state:mode:detail:time:);
  5293             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerLeave:x:y:rootX:rootY:state:mode:detail:time:);
  5298 	    /* fall into */
  5294             /* fall into */
  5299 
  5295 
  5300 	enterLeave:
  5296         enterLeave:
  5301 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ele->x);
  5297             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ele->x);
  5302 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ele->y);
  5298             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ele->y);
  5303 	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ele->x_root);
  5299             __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ele->x_root);
  5304 	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ele->y_root);
  5300             __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ele->y_root);
  5305 	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ele->state);
  5301             __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ele->state);
  5306 	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ele->mode);
  5302             __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ele->mode);
  5307 	    __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ele->detail);
  5303             __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ele->detail);
  5308 	    __ArrayInstPtr(anEventArray)->a_element[10] = t = __MKUINT(ele->time); __STORE(anEventArray, t);
  5304             __ArrayInstPtr(anEventArray)->a_element[10] = t = __MKUINT(ele->time); __STORE(anEventArray, t);
  5309 	    break;
  5305             break;
  5310 
  5306 
  5311 	case Expose:
  5307         case Expose:
  5312 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(expose:x:y:width:height:count:);
  5308             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(expose:x:y:width:height:count:);
  5313 	    goto expose;
  5309             goto expose;
  5314 
  5310 
  5315 	case GraphicsExpose:
  5311         case GraphicsExpose:
  5316 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(graphicsExpose:x:y:width:height:count:);
  5312             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(graphicsExpose:x:y:width:height:count:);
  5317 	    /* fall into */
  5313             /* fall into */
  5318 
  5314 
  5319 	expose:
  5315         expose:
  5320 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ee->x);
  5316             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ee->x);
  5321 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ee->y);
  5317             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ee->y);
  5322 	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ee->width);
  5318             __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ee->width);
  5323 	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ee->height);
  5319             __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ee->height);
  5324 	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ee->count);
  5320             __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ee->count);
  5325 	    break;
  5321             break;
  5326 
  5322 
  5327 	case NoExpose:
  5323         case NoExpose:
  5328 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(noExposeView:);
  5324             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(noExposeView:);
  5329 	    break;
  5325             break;
  5330 
  5326 
  5331 	case VisibilityNotify:
  5327         case VisibilityNotify:
  5332 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(visibilityNotify:state:);
  5328             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(visibilityNotify:state:);
  5333 	    switch (ve->state) {
  5329             switch (ve->state) {
  5334 		case VisibilityUnobscured:
  5330                 case VisibilityUnobscured:
  5335 		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(unobscured);
  5331                     __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(unobscured);
  5336 		    break;
  5332                     break;
  5337 		case VisibilityPartiallyObscured:
  5333                 case VisibilityPartiallyObscured:
  5338 		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(partiallyObscured);
  5334                     __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(partiallyObscured);
  5339 		    break;
  5335                     break;
  5340 		case VisibilityFullyObscured:
  5336                 case VisibilityFullyObscured:
  5341 		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(fullyObscured);
  5337                     __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(fullyObscured);
  5342 		    break;
  5338                     break;
  5343 		default:
  5339                 default:
  5344 		    __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(ve->state);
  5340                     __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(ve->state);
  5345 		    break;
  5341                     break;
  5346 	    }
  5342             }
  5347 	    break;
  5343             break;
  5348 
  5344 
  5349 	case CreateNotify:
  5345         case CreateNotify:
  5350 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(createWindow:x:y:width:height:);
  5346             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(createWindow:x:y:width:height:);
  5351 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cre->x);
  5347             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cre->x);
  5352 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cre->y);
  5348             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cre->y);
  5353 	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cre->width);
  5349             __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cre->width);
  5354 	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cre->height);
  5350             __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cre->height);
  5355 	    break;
  5351             break;
  5356 
  5352 
  5357 	case DestroyNotify:
  5353         case DestroyNotify:
  5358 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(destroyedView:);
  5354             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(destroyedView:);
  5359 	    break;
  5355             break;
  5360 
  5356 
  5361 	case UnmapNotify:
  5357         case UnmapNotify:
  5362 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unmappedView:);
  5358             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unmappedView:);
  5363 	    break;
  5359             break;
  5364 
  5360 
  5365 	case MapNotify:
  5361         case MapNotify:
  5366 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappedView:);
  5362             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappedView:);
  5367 	    break;
  5363             break;
  5368 
  5364 
  5369 	case ConfigureNotify:
  5365         case ConfigureNotify:
  5370 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configure:x:y:width:height:above:);
  5366             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configure:x:y:width:height:above:);
  5371 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ce->x);
  5367             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ce->x);
  5372 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->y);
  5368             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->y);
  5373 	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->width);
  5369             __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->width);
  5374 	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->height);
  5370             __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->height);
  5375 	    __ArrayInstPtr(anEventArray)->a_element[7] = nil;
  5371             __ArrayInstPtr(anEventArray)->a_element[7] = nil;
  5376 	    if (ce->above != None) {
  5372             if (ce->above != None) {
  5377 		__ArrayInstPtr(anEventArray)->a_element[7] = t = __MKEXTERNALADDRESS(ce->above); __STORE(anEventArray, t);
  5373                 __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKEXTERNALADDRESS(ce->above); __STORE(anEventArray, t);
  5378 	    }
  5374             }
  5379 	    break;
  5375             break;
  5380 
  5376 
  5381 	case GravityNotify:
  5377         case GravityNotify:
  5382 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(gravityNotify:x:y:);
  5378             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(gravityNotify:x:y:);
  5383 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(gre->x);
  5379             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(gre->x);
  5384 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(gre->y);
  5380             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(gre->y);
  5385 	    break;
  5381             break;
  5386 
  5382 
  5387 	case ResizeRequest:
  5383         case ResizeRequest:
  5388 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(resizeRequest:width:height:);
  5384             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(resizeRequest:width:height:);
  5389 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(rr->width);
  5385             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(rr->width);
  5390 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rr->height);
  5386             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rr->height);
  5391 	    break;
  5387             break;
  5392 
  5388 
  5393 	case ConfigureRequest:
  5389         case ConfigureRequest:
  5394 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configureRequest:x:y:width:height:above:detail:);
  5390             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configureRequest:x:y:width:height:above:detail:);
  5395 	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cr->x);
  5391             __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cr->x);
  5396 	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cr->y);
  5392             __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cr->y);
  5397 	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cr->width);
  5393             __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cr->width);
  5398 	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cr->height);
  5394             __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cr->height);
  5399 	    __ArrayInstPtr(anEventArray)->a_element[7] = nil;
  5395             __ArrayInstPtr(anEventArray)->a_element[7] = nil;
  5400 	    if (cr->above != None) {
  5396             if (cr->above != None) {
  5401 		__ArrayInstPtr(anEventArray)->a_element[7] = t = __MKEXTERNALADDRESS(cr->above); __STORE(anEventArray, t);
  5397                 __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKEXTERNALADDRESS(cr->above); __STORE(anEventArray, t);
  5402 	    }
  5398             }
  5403 	    switch (cr->detail) {
  5399             switch (cr->detail) {
  5404 		case Above:
  5400                 case Above:
  5405 		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(above);
  5401                     __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(above);
  5406 		    break;
  5402                     break;
  5407 		case Below:
  5403                 case Below:
  5408 		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(below);
  5404                     __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(below);
  5409 		    break;
  5405                     break;
  5410 		case TopIf:
  5406                 case TopIf:
  5411 		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(topIf);
  5407                     __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(topIf);
  5412 		    break;
  5408                     break;
  5413 		case BottomIf:
  5409                 case BottomIf:
  5414 		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(bottomIf);
  5410                     __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(bottomIf);
  5415 		    break;
  5411                     break;
  5416 		case Opposite:
  5412                 case Opposite:
  5417 		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(opposite);
  5413                     __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(opposite);
  5418 		    break;
  5414                     break;
  5419 		default:
  5415                 default:
  5420 		    __ArrayInstPtr(anEventArray)->a_element[8] = __MKSMALLINT(cr->detail);
  5416                     __ArrayInstPtr(anEventArray)->a_element[8] = __MKSMALLINT(cr->detail);
  5421 		    break;
  5417                     break;
  5422 	    }
  5418             }
  5423 	    break;
  5419             break;
  5424 
  5420 
  5425 	case CirculateNotify:
  5421         case CirculateNotify:
  5426 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateNotify:place:);
  5422             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateNotify:place:);
  5427 	    goto circulate;
  5423             goto circulate;
  5428 
  5424 
  5429 	case CirculateRequest:
  5425         case CirculateRequest:
  5430 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateRequest:place:);
  5426             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateRequest:place:);
  5431 	    /* fall into */
  5427             /* fall into */
  5432 	circulate:
  5428         circulate:
  5433 	    switch (cie->place) {
  5429             switch (cie->place) {
  5434 		case PlaceOnTop:
  5430                 case PlaceOnTop:
  5435 		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnTop);
  5431                     __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnTop);
  5436 		    break;
  5432                     break;
  5437 		case PlaceOnBottom:
  5433                 case PlaceOnBottom:
  5438 		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnBottom);
  5434                     __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnBottom);
  5439 		    break;
  5435                     break;
  5440 		default:
  5436                 default:
  5441 		    __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(cie->place);
  5437                     __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(cie->place);
  5442 		    break;
  5438                     break;
  5443 	    }
  5439             }
  5444 	    break;
  5440             break;
  5445 
  5441 
  5446 	case PropertyNotify:
  5442         case PropertyNotify:
  5447 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(propertyChange:atom:state:time:);
  5443             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(propertyChange:atom:state:time:);
  5448 	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(pe->atom);
  5444             __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(pe->atom);
  5449 	    switch (pe->state) {
  5445             switch (pe->state) {
  5450 		case PropertyNewValue:
  5446                 case PropertyNewValue:
  5451 		    __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(newValue);
  5447                     __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(newValue);
  5452 		    break;
  5448                     break;
  5453 		case PropertyDelete:
  5449                 case PropertyDelete:
  5454 		    __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(deleted);
  5450                     __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(deleted);
  5455 		    break;
  5451                     break;
  5456 		default:
  5452                 default:
  5457 		    __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(pe->state);
  5453                     __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(pe->state);
  5458 		    break;
  5454                     break;
  5459 	    }
  5455             }
  5460 	    __ArrayInstPtr(anEventArray)->a_element[5] = t = __MKUINT(pe->time); __STORE(anEventArray, t);
  5456             __ArrayInstPtr(anEventArray)->a_element[5] = t = __MKUINT(pe->time); __STORE(anEventArray, t);
  5461 	    break;
  5457             break;
  5462 
  5458 
  5463 	case SelectionClear:
  5459         case SelectionClear:
  5464 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:atom:time:);
  5460             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:atom:time:);
  5465 	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection); 
  5461             __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection); 
  5466 	    __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKUINT(sce->time);         __STORE(anEventArray, t);
  5462             __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKUINT(sce->time);         __STORE(anEventArray, t);
  5467 	    break;
  5463             break;
  5468 
  5464 
  5469 	case SelectionRequest:
  5465         case SelectionRequest:
  5470 	    /*
  5466             /*
  5471 	     * someone wants the selection
  5467              * someone wants the selection
  5472 	     */
  5468              */
  5473 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
  5469             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
  5474 	    __ArrayInstPtr(anEventArray)->a_element[3] = t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __STORE(anEventArray, t);
  5470             __ArrayInstPtr(anEventArray)->a_element[3] = t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __STORE(anEventArray, t);
  5475 	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselectionrequest.selection); 
  5471             __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselectionrequest.selection); 
  5476 	    __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselectionrequest.target);    
  5472             __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselectionrequest.target);    
  5477 	    __ArrayInstPtr(anEventArray)->a_element[6] = __MKATOMOBJ(ev.xselectionrequest.property);  
  5473             __ArrayInstPtr(anEventArray)->a_element[6] = __MKATOMOBJ(ev.xselectionrequest.property);  
  5478 	    __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKUINT(ev.xselectionrequest.time);         __STORE(anEventArray, t);
  5474             __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKUINT(ev.xselectionrequest.time);         __STORE(anEventArray, t);
  5479 	    break;
  5475             break;
  5480 
  5476 
  5481 	case SelectionNotify:
  5477         case SelectionNotify:
  5482 	    /*
  5478             /*
  5483 	     * returned selection value (answer from SelectionRequest)
  5479              * returned selection value (answer from SelectionRequest)
  5484 	     */
  5480              */
  5485 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionNotify:selection:target:property:requestor:time:);
  5481             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionNotify:selection:target:property:requestor:time:);
  5486 	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xselection.selection); 
  5482             __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xselection.selection); 
  5487 	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselection.target);    
  5483             __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselection.target);    
  5488 	    __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselection.property);  
  5484             __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselection.property);  
  5489 	    __ArrayInstPtr(anEventArray)->a_element[6] = t = __MKEXTERNALADDRESS(ev.xselection.requestor); __STORE(anEventArray, t);
  5485             __ArrayInstPtr(anEventArray)->a_element[6] = t = __MKEXTERNALADDRESS(ev.xselection.requestor); __STORE(anEventArray, t);
  5490 	    __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKUINT(ev.xselection.time); __STORE(anEventArray, t);
  5486             __ArrayInstPtr(anEventArray)->a_element[7] = t = __MKUINT(ev.xselection.time); __STORE(anEventArray, t);
  5491 	    break;
  5487             break;
  5492 
  5488 
  5493 	case ColormapNotify:
  5489         case ColormapNotify:
  5494 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(colormapNotify:state:);
  5490             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(colormapNotify:state:);
  5495 	    __ArrayInstPtr(anEventArray)->a_element[3] = cme->state == ColormapInstalled ? true : false;
  5491             __ArrayInstPtr(anEventArray)->a_element[3] = cme->state == ColormapInstalled ? true : false;
  5496 	    break;
  5492             break;
  5497 
  5493 
  5498 	case ClientMessage:
  5494         case ClientMessage:
  5499 	    if (ev.xclient.message_type == (int) __AtomVal(__INST(protocolsAtom))) {
  5495             if (ev.xclient.message_type == (int) __AtomVal(__INST(protocolsAtom))) {
  5500 		if ((ev.xclient.data.l[0] == (int) __AtomVal(__INST(quitAppAtom)))
  5496                 if ((ev.xclient.data.l[0] == (int) __AtomVal(__INST(quitAppAtom)))
  5501 		 || (ev.xclient.data.l[0] == (int) __AtomVal(__INST(deleteWindowAtom)))) {
  5497                  || (ev.xclient.data.l[0] == (int) __AtomVal(__INST(deleteWindowAtom)))) {
  5502 		    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(terminateView:);
  5498                     __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(terminateView:);
  5503 		    break;
  5499                     break;
  5504 		}
  5500                 }
  5505 		if (ev.xclient.data.l[0] == (int) __AtomVal(__INST(saveYourselfAtom))) {
  5501                 if (ev.xclient.data.l[0] == (int) __AtomVal(__INST(saveYourselfAtom))) {
  5506 		    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(saveAndTerminateView:);
  5502                     __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(saveAndTerminateView:);
  5507 		    break;
  5503                     break;
  5508 		}
  5504                 }
  5509 	    }
  5505             }
  5510 	    /*
  5506             /*
  5511 	     * any other client message
  5507              * any other client message
  5512 	     */
  5508              */
  5513 printf("clientMessage type:%d format:%d\n", ev.xclient.message_type, ev.xclient.format);
  5509 printf("clientMessage type:%d format:%d\n", ev.xclient.message_type, ev.xclient.format);
  5514 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(clientMessage:type:format:data:);
  5510             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(clientMessage:type:format:data:);
  5515 	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xclient.message_type);
  5511             __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xclient.message_type);
  5516 	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(ev.xclient.format);
  5512             __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(ev.xclient.format);
  5517 	    __ArrayInstPtr(anEventArray)->a_element[5] = t = __MKBYTEARRAY(ev.xclient.data, sizeof(ev.xclient.data)); __STORE(anEventArray, t);
  5513             __ArrayInstPtr(anEventArray)->a_element[5] = t = __MKBYTEARRAY(ev.xclient.data, sizeof(ev.xclient.data)); __STORE(anEventArray, t);
  5518 	    break;
  5514             break;
  5519 
  5515 
  5520 	case MappingNotify:
  5516         case MappingNotify:
  5521 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappingNotify:request:event:);
  5517             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappingNotify:request:event:);
  5522 	    switch(mape->request) {
  5518             switch(mape->request) {
  5523 		case MappingModifier:
  5519                 case MappingModifier:
  5524 		    arg = @symbol(mappingModifier);
  5520                     arg = @symbol(mappingModifier);
  5525 		    break;
  5521                     break;
  5526 		case MappingKeyboard:
  5522                 case MappingKeyboard:
  5527 		    arg = @symbol(mappingKeyboard);
  5523                     arg = @symbol(mappingKeyboard);
  5528 		    break;
  5524                     break;
  5529 		case MappingPointer:
  5525                 case MappingPointer:
  5530 		    arg = @symbol(mappingPointer);
  5526                     arg = @symbol(mappingPointer);
  5531 		    break;
  5527                     break;
  5532 		default:
  5528                 default:
  5533 		    arg = __MKSMALLINT(mape->request);
  5529                     arg = __MKSMALLINT(mape->request);
  5534 		    break;
  5530                     break;
  5535 	    }
  5531             }
  5536 	    __ArrayInstPtr(anEventArray)->a_element[3] = arg;
  5532             __ArrayInstPtr(anEventArray)->a_element[3] = arg;
  5537 	    __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKBYTEARRAY(&ev, sizeof(*mape));
  5533             __ArrayInstPtr(anEventArray)->a_element[4] = t = __MKBYTEARRAY(&ev, sizeof(*mape));
  5538 	    __STORE(anEventArray, t);
  5534             __STORE(anEventArray, t);
  5539 	    break;
  5535             break;
  5540 
  5536 
  5541 	case KeymapNotify:
  5537         case KeymapNotify:
  5542 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(keymapNotify:);
  5538             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(keymapNotify:);
  5543 	    break;
  5539             break;
  5544 
  5540 
  5545 	case MapRequest:
  5541         case MapRequest:
  5546 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mapRequest:);
  5542             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mapRequest:);
  5547 	    break;
  5543             break;
  5548 
  5544 
  5549 	case ReparentNotify:
  5545         case ReparentNotify:
  5550 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(reparentedView:);
  5546             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(reparentedView:);
  5551 	    break;
  5547             break;
  5552 
  5548 
  5553 	default:
  5549         default:
  5554 	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
  5550             __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
  5555 	    break;
  5551             break;
  5556     }
  5552     }
  5557 #undef ae
  5553 #undef ae
  5558 #undef ee
  5554 #undef ee
  5559 #undef ke
  5555 #undef ke
  5560 #undef be
  5556 #undef be
  7715 initializeModifierMappings
  7711 initializeModifierMappings
  7716     "initialize keyboard modifiers.
  7712     "initialize keyboard modifiers.
  7717      We assume that mod1 are the META modifiers and mod2 are the ALT modifiers,
  7713      We assume that mod1 are the META modifiers and mod2 are the ALT modifiers,
  7718      but if any of them contains the Num_Lock key, it is disregarded."
  7714      but if any of them contains the Num_Lock key, it is disregarded."
  7719 
  7715 
  7720     |map mod|
  7716     |map|
  7721 
  7717 
  7722     super initializeModifierMappings.                                     
  7718     super initializeModifierMappings.                                     
  7723 
  7719 
  7724     rawKeySymTranslation := RawKeySymTranslation.
  7720     rawKeySymTranslation := RawKeySymTranslation.
  7725 
  7721 
  7726     map := self modifierMapping.
  7722     map := self modifierMapping.
  7727     map isNil ifTrue:[
  7723     map isNil ifTrue:[
  7728 	"/
  7724         "/
  7729 	"/ mhmh - a crippled Xlib which does not provide modifier mappings
  7725         "/ mhmh - a crippled Xlib which does not provide modifier mappings
  7730 	"/ setup some reasonable default. If that is not sufficient,
  7726         "/ setup some reasonable default. If that is not sufficient,
  7731 	"/ you have to change things from your display.rc file.
  7727         "/ you have to change things from your display.rc file.
  7732 	"/
  7728         "/
  7733 	altModifierMask := self modifier1Mask.
  7729         altModifierMask := self modifier1Mask.
  7734 	metaModifierMask := self modifier2Mask.
  7730         metaModifierMask := self modifier2Mask.
  7735     ] ifFalse:[
  7731     ] ifFalse:[
  7736 	altModifierMask := 0.
  7732         | mod stringFromKeyCode nonNilOnes |
  7737 	metaModifierMask := 0.
  7733 
  7738 
  7734         altModifierMask := 0.
  7739 	mod := map at:1.
  7735         metaModifierMask := 0.
  7740 	mod notNil ifTrue:[
  7736 
  7741 	    shiftModifiers := mod collect:[ :key | self stringFromKeycode:key ].
  7737         stringFromKeyCode := [:key | 
  7742 	].
  7738                                     |s| 
  7743 	mod := map at:3.
  7739                                     s := self stringFromKeycode:key. 
  7744 	mod notNil ifTrue:[
  7740                                     s notNil 
  7745 	    ctrlModifiers  := mod collect:[ :key | self stringFromKeycode:key ].
  7741                                         ifTrue:[s asSymbol] 
  7746 	].
  7742                                         ifFalse:[nil]
  7747 	mod := map at:4.
  7743                              ].
  7748 	mod notNil ifTrue:[
  7744         nonNilOnes := [:str | str notNil].
  7749 	    mod := mod collect:[ :key | self stringFromKeycode:key ].
  7745 
  7750 	    (mod includes:'Num_Lock') ifFalse:[
  7746         mod := map at:1.
  7751 		metaModifiers := mod.
  7747         mod notNil ifTrue:[
  7752 		metaModifierMask := 1 bitShift:(4-1).
  7748             shiftModifiers := mod collect:stringFromKeyCode thenSelect:nonNilOnes.
  7753 	    ].
  7749         ].
  7754 	].
  7750         mod := map at:3.
  7755 	mod := map at:5.
  7751         mod notNil ifTrue:[
  7756 	mod notNil ifTrue:[
  7752             ctrlModifiers  := mod collect:stringFromKeyCode thenSelect:nonNilOnes.
  7757 	    mod := mod collect:[ :key | self stringFromKeycode:key ].    
  7753         ].
  7758 	    (mod includes:'Num_Lock') ifFalse:[
  7754         mod := map at:4.
  7759 		altModifiers   := mod.    
  7755         mod notNil ifTrue:[
  7760 		altModifierMask := 1 bitShift:(5-1).
  7756             mod := mod collect:stringFromKeyCode thenSelect:nonNilOnes.
  7761 	    ].
  7757             (mod includes:'Num_Lock') ifFalse:[
  7762 	]
  7758                 metaModifiers := mod.
       
  7759                 metaModifierMask := 1 bitShift:(4-1).
       
  7760             ].
       
  7761         ].
       
  7762         mod := map at:5.
       
  7763         mod notNil ifTrue:[
       
  7764             mod := mod collect:stringFromKeyCode thenSelect:nonNilOnes.
       
  7765             (mod includes:'Num_Lock') ifFalse:[
       
  7766                 altModifiers   := mod.
       
  7767                 altModifierMask := 1 bitShift:(5-1).
       
  7768             ].
       
  7769         ]
  7763     ].                                                          
  7770     ].                                                          
  7764 
  7771 
  7765     "
  7772     "
  7766       Display initializeModifierMappings
  7773      Display initializeModifierMappings
  7767     "
  7774     "
  7768 
  7775 
  7769     "Modified: 1.12.1995 / 23:44:40 / stefan"
  7776     "Modified: 1.12.1995 / 23:44:40 / stefan"
  7770 
       
  7771 !
  7777 !
  7772 
  7778 
  7773 initializeScreenProperties
  7779 initializeScreenProperties
  7774     |masks|
  7780     |masks|
  7775 
  7781 
 11298 ! !
 11304 ! !
 11299 
 11305 
 11300 !XWorkstation class methodsFor:'documentation'!
 11306 !XWorkstation class methodsFor:'documentation'!
 11301 
 11307 
 11302 version
 11308 version
 11303     ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.449 2004-03-03 08:41:41 cg Exp $'
 11309     ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.450 2004-03-05 11:12:16 cg Exp $'
 11304 ! !
 11310 ! !
 11305 
 11311 
 11306 XWorkstation initialize!
 11312 XWorkstation initialize!