/* Starshatter: The Open Source Project Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. AUTHOR: John DiCamillo OVERVIEW ======== Event Dispatch class */ #ifndef EventDispatch_h #define EventDispatch_h #include "Types.h" #include "EventTarget.h" #include "List.h" // +--------------------------------------------------------------------+ class EventDispatch { public: static const char* TYPENAME() { return "EventDispatch"; } EventDispatch(); virtual ~EventDispatch(); static void Create(); static void Close(); static EventDispatch* GetInstance() { return dispatcher; } virtual void Dispatch(); virtual void Register(EventTarget* tgt); virtual void Unregister(EventTarget* tgt); virtual EventTarget* GetCapture(); virtual int CaptureMouse(EventTarget* tgt); virtual int ReleaseMouse(EventTarget* tgt); virtual EventTarget* GetFocus(); virtual void SetFocus(EventTarget* tgt); virtual void KillFocus(EventTarget* tgt); virtual void MouseEnter(EventTarget* tgt); protected: int mouse_x, mouse_y, mouse_l, mouse_r; List clients; EventTarget* capture; EventTarget* current; EventTarget* focus; EventTarget* click_tgt; static EventDispatch* dispatcher; }; #endif // EventDispatch_h