home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1998 / MacHack 1998.toast / Papers / C++ Exceptions / µShell / Event Handling / ToolboxEvent.cp < prev    next >
Encoding:
Text File  |  1998-06-01  |  1.3 KB  |  84 lines  |  [TEXT/CWIE]

  1. #include "ToolboxEvent.h"
  2. #include "Toolbox.h"
  3.  
  4. #include "MemUtils.h"
  5.  
  6. ToolboxEvent::ToolboxEvent()
  7. {
  8.     long* p = (long*) &type;
  9.     
  10.     if (qDebug && sizeof(ToolboxEvent) != (6 * sizeof(long)))
  11.     {
  12.         Debugger();
  13.     }
  14.     
  15.     for (int i = 0; i < 6; i++)
  16.     {
  17.         p[i] = 0;
  18.     }
  19.  
  20. //    BlockZero(&type, (Ptr)(&window + 1) - Ptr(&type));
  21. }
  22.  
  23. ToolboxEvent::ToolboxEvent(const EventRecord& evt)
  24. {
  25.     BlockMoveData(&evt, &what, sizeof(EventRecord));
  26.  
  27.     ParseEvent();
  28. }
  29.  
  30. void ToolboxEvent::ParseEvent()
  31. {
  32.     part        = 0;
  33.     window        = nil;
  34.     type        = kEvtUnknown;
  35.  
  36.     switch (what)
  37.     {
  38.     case nullEvent:
  39.         type    = kEvtIdle;
  40.         break;
  41.     
  42.     case mouseDown:
  43.     case mouseUp:
  44.     mouse_event:    // mouseMoved branches back here
  45.         type    = kEvtMouse;
  46.         part    = Toolbox::FindWindow(where, window);
  47.         break;
  48.     
  49.     case keyDown:
  50.     case keyUp:
  51.     case autoKey:
  52.         type    = kEvtKeyboard;
  53.         break;
  54.  
  55.     case diskEvt:
  56.         type    = kEvtDisk;
  57.         break;
  58.  
  59.     case updateEvt:
  60.         type    = kEvtUpdate;
  61.         window    = message.win;
  62.         break;
  63.  
  64.     case activateEvt:
  65.         type    = modifiers.bits.activeFlag ? kEvtActivate : kEvtDectivate;
  66.         window    = message.win;
  67.         break;
  68.     
  69.     case kHighLevelEvent:
  70.         type    = kEvtHighLevel;
  71.         break;
  72.  
  73.     case osEvt:
  74.         switch (message.os.message)
  75.         {
  76.         case mouseMovedMessage:
  77.             goto mouse_event;
  78.  
  79.         case suspendResumeMessage:
  80.             type = message.os.resumeFlag ? kEvtActivate : kEvtDectivate;
  81.         }
  82.     }
  83. }
  84.