2021-09-01 15:32:00 +02:00
|
|
|
extern struct event_loop g_event_loop;
|
|
|
|
|
|
|
|
static pascal OSStatus mouse_handler(EventHandlerCallRef next, EventRef e, void *data) {
|
|
|
|
switch (GetEventKind(e)) {
|
|
|
|
case kEventMouseUp: {
|
|
|
|
struct event *event = event_create(&g_event_loop, MOUSE_UP, (void *) CFRetain(CopyEventCGEvent(e)));
|
|
|
|
event_loop_post(&g_event_loop, event);
|
|
|
|
break;
|
|
|
|
}
|
2021-10-11 23:38:55 +02:00
|
|
|
case kEventMouseEntered: {
|
2021-10-12 21:08:34 +02:00
|
|
|
struct event *event = event_create(&g_event_loop, MOUSE_ENTERED, (void *) CFRetain(CopyEventCGEvent(e)));
|
|
|
|
event_loop_post(&g_event_loop, event);
|
2021-10-11 23:38:55 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case kEventMouseExited: {
|
2021-10-12 21:08:34 +02:00
|
|
|
struct event *event = event_create(&g_event_loop, MOUSE_EXITED, (void *) CFRetain(CopyEventCGEvent(e)));
|
|
|
|
event_loop_post(&g_event_loop, event);
|
2021-10-11 23:38:55 +02:00
|
|
|
break;
|
|
|
|
}
|
2021-09-01 15:32:00 +02:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return CallNextEventHandler(next, e);
|
|
|
|
}
|
|
|
|
|
|
|
|
void mouse_begin(void) {
|
|
|
|
EventTargetRef target = GetEventDispatcherTarget();
|
2021-10-11 23:38:55 +02:00
|
|
|
InstallEventHandler(target, NewEventHandlerUPP(mouse_handler), GetEventTypeCount(mouse_events), mouse_events, 0, 0);
|
2021-09-01 15:32:00 +02:00
|
|
|
}
|