MCPcopy Create free account
hub / github.com/NetHack/NetHack / ProcessMessage

Function ProcessMessage

sys/amiga/amiwind.c:368–508  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

366 */
367
368static void
369ProcessMessage(struct IntuiMessage *message)
370{
371 int c;
372 int cnt;
373 menu_item *mip;
374 static int skip_mouse = 0; /* need to ignore next mouse event on
375 * a window activation */
376 struct Window *w = message->IDCMPWindow;
377
378 switch (message->Class) {
379 case ACTIVEWINDOW:
380 skip_mouse = 1;
381 break;
382
383 case MOUSEBUTTONS: {
384 if (skip_mouse) {
385 skip_mouse = 0;
386 break;
387 }
388
389 if (!amii_wins[WIN_MAP] || w != amii_wins[WIN_MAP]->win)
390 break;
391
392 if (message->Code == SELECTDOWN) {
393 lastevent.type = WEMOUSE;
394 lastevent.un.mouse.x = message->MouseX;
395 lastevent.un.mouse.y = message->MouseY;
396 /* With shift equals RUN */
397 lastevent.un.mouse.qual =
398 (message->Qualifier
399 & (IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT)) != 0;
400 }
401 } break;
402
403 case MENUPICK: {
404 USHORT thismenu;
405 struct MenuItem *item;
406
407 thismenu = message->Code;
408 while (thismenu != MENUNULL) {
409 item = ItemAddress(MenuStrip, (ULONG) thismenu);
410 if (KbdBuffered < KBDBUFFER)
411 BufferQueueChar((char) (GTMENUITEM_USERDATA(item)));
412 thismenu = item->NextSelect;
413 }
414 } break;
415
416 case REFRESHWINDOW:
417 break;
418
419 case CLOSEWINDOW:
420 if (WIN_INVEN != WIN_ERR && w == amii_wins[WIN_INVEN]->win) {
421 dismiss_nhwindow(WIN_INVEN);
422 }
423 if (WINVERS_AMIV
424 && (WIN_OVER != WIN_ERR && w == amii_wins[WIN_OVER]->win)) {
425 destroy_nhwindow(WIN_OVER);

Callers 1

amikbhitFunction · 0.85

Calls 5

dismiss_nhwindowFunction · 0.85
ConvertKeyFunction · 0.85
ReDisplayDataFunction · 0.85
amii_cliparoundFunction · 0.85
amii_destroy_nhwindowFunction · 0.85

Tested by

no test coverage detected