home *** CD-ROM | disk | FTP | other *** search
- #include <Dialogs.h>
- #include "AppleEvent.h"
- #include "LayerManager.h"
- #include "MenuManager.h"
- #include "Window.h"
- #include "WindowManager.h"
- #include "BaseEventManager.h"
-
-
-
-
-
- extern MenuManager *gMenuManager;
- extern WindowManager *gWindowManager;
-
-
-
-
-
- void BaseEventManager::DoDispatch(EventRecord *event,Boolean isSystemWindow)
- {
- if ((event->what != nullEvent) && (event->what != osEvt) && IsDialogEvent(event) &&
- !((event->what == keyDown) && (event->modifiers & cmdKey)))
- {
- HandleDialogEventDispatch(event);
- }
- else
- {
- switch(event->what)
- {
- case nullEvent:
- HandleNullEventDispatch(event);
- break;
-
- case mouseDown:
- HandleMouseDownDispatch(event,isSystemWindow);
- break;
-
- case mouseUp:
- HandleMouseUpDispatch(event);
- break;
-
- case keyDown:
- HandleKeyDownDispatch(event);
- break;
-
- case keyUp:
- HandleKeyUpDispatch(event);
- break;
-
- case autoKey:
- HandleAutoKeyDispatch(event);
- break;
-
- case updateEvt:
- HandleUpdateEvtDispatch(event);
- break;
-
- case activateEvt:
- HandleActivateEvtDispatch(event);
- break;
-
- case osEvt:
- HandleOSEvtDispatch(event);
- break;
-
- case kHighLevelEvent:
- HandleHighLevelEventDispatch(event);
- break;
- }
- }
- }
-
-
-
-
-
- void BaseEventManager::HandleNullEventDispatch(EventRecord *event)
- {
- gWindowManager->DoIdleTime(event,event->where,event->modifiers);
- gMenuManager->DoMenuUpdates();
- }
-
-
-
-
-
- void BaseEventManager::HandleMouseDownDispatch(EventRecord *event,Boolean isSystemWindow)
- {
- WindowPtr window;
- SInt32 part;
- Window *win;
-
-
- part = isSystemWindow ? FindSystemWindow(event->where,&window) : FindWindow(event->where,&window);
- switch(part)
- {
- case inDesk:
- break;
-
- case inMenuBar:
- HandleInMenuBarDispatch(event);
- break;
-
- case inSysWindow:
- SystemClick(event,window);
- break;
-
- case inContent:
- case inDrag:
- case inGrow:
- case inGoAway:
- case inZoomIn:
- case inZoomOut:
- gWindowManager->DoClick(event->where,event->modifiers,window,part);
- break;
- }
- }
-
-
-
-
-
- void BaseEventManager::HandleMouseUpDispatch(EventRecord *event)
- {
-
- }
-
-
-
-
-
- void BaseEventManager::HandleKeyDownDispatch(EventRecord *event)
- {
- UInt32 selection;
- UInt32 key;
- Window *win;
-
-
- key = charCodeMask & event->message;
-
- // Resolve menu item command keys
- if (event->modifiers & cmdKey)
- {
- gMenuManager->DoMenuUpdates();
- selection = MenuKey(key);
- if ((selection >> 16) != 0)
- {
- gMenuManager->DoSelect((selection >> 16),(selection & 0xFFFF));
- return;
- }
- }
-
- // Give it the most eligible window
- if (NULL != (win = gWindowManager->DoGetFrontWindow()))
- win->DoKey(key,event->modifiers);
- }
-
-
-
-
-
- void BaseEventManager::HandleKeyUpDispatch(EventRecord *event)
- {
-
- }
-
-
-
-
-
- void BaseEventManager::HandleAutoKeyDispatch(EventRecord *event)
- {
- HandleKeyDownDispatch(event);
- }
-
-
-
-
-
- void BaseEventManager::HandleUpdateEvtDispatch(EventRecord *event)
- {
- WindowPtr window;
- Window *win;
-
-
- window = (WindowPtr)event->message;
- win = gWindowManager->DoGetWindow(window);
- if (win != NULL)
- win->DoUpdate();
- }
-
-
-
-
-
- void BaseEventManager::HandleActivateEvtDispatch(EventRecord *event)
- {
- WindowPtr window;
-
-
- window = (WindowPtr)event->message;
- gWindowManager->DoActivation(window,event->modifiers & activeFlag);
- gMenuManager->DoMenuUpdates();
- }
-
-
-
-
-
- void BaseEventManager::HandleOSEvtDispatch(EventRecord *event)
- {
- // Is this a suspend/resume event?
- if ((event->message & 0xFF000000) == 0x01000000)
- {
- gWindowManager->DoSuspendResume(event,!(event->message & 1));
- gMenuManager->DoMenuUpdates();
- }
- }
-
-
-
-
-
- void BaseEventManager::HandleHighLevelEventDispatch(EventRecord *event)
- {
- ProcessAppleEvent(event);
- }
-
-
-
-
-
- void BaseEventManager::HandleDialogEventDispatch(EventRecord *event)
- {
- WindowPtr window;
- DialogPtr dialog;
- short item;
- Window *win;
-
-
- win = NULL;
- switch(event->what)
- {
- case mouseDown:
- case mouseUp:
- FindWindow(event->where,&window);
- win = gWindowManager->DoGetWindow(window);
- break;
-
- case keyDown:
- case keyUp:
- case autoKey:
- win = gWindowManager->DoGetFrontWindow();
- break;
-
- case updateEvt:
- window = (WindowPtr)event->message;
- win = gWindowManager->DoGetWindow(window);
- break;
-
- case activateEvt:
- window = (WindowPtr)event->message;
- win = gWindowManager->DoGetWindow(window);
- HandleActivateEvtDispatch(event);
- break;
- }
-
- if (win)
- win->DoDialogEvent(event);
- else
- DialogSelect(event,&dialog,&item);
- }
-
-
-
-
-
- void BaseEventManager::HandleInMenuBarDispatch(EventRecord *event)
- {
- UInt32 selection;
-
-
- gMenuManager->DoMenuUpdates();
- selection = MenuSelect(event->where);
- if ((selection >> 16) != 0)
- gMenuManager->DoSelect((selection >> 16),(selection & 0xFFFF));
- }
-