Fix duplicate event dispatch in Cocoa event pump
Prevent mouse and keyboard events from being processed twice by skipping [super sendEvent:] for events SDL has already handled via Cocoa_DispatchEvent. Other event types still go through AppKit's normal handling.
This commit is contained in:
@@ -97,6 +97,14 @@ static void Cocoa_DispatchEvent(NSEvent *theEvent)
|
|||||||
{
|
{
|
||||||
if (s_bShouldHandleEventsInSDLApplication) {
|
if (s_bShouldHandleEventsInSDLApplication) {
|
||||||
Cocoa_DispatchEvent(theEvent);
|
Cocoa_DispatchEvent(theEvent);
|
||||||
|
|
||||||
|
// Avoid double-dispatching mouse and keyboard events. They are already handled in Cocoa_DispatchEvent.
|
||||||
|
// Other event types should still go through AppKit's normal handling.
|
||||||
|
NSEventType type = [theEvent type];
|
||||||
|
if ((type >= NSEventTypeLeftMouseDown && type <= NSEventTypeMouseExited) ||
|
||||||
|
(type >= NSEventTypeKeyDown && type <= NSEventTypeFlagsChanged)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[super sendEvent:theEvent];
|
[super sendEvent:theEvent];
|
||||||
|
|||||||
Reference in New Issue
Block a user