mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-02-13 15:23:34 +00:00
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.
(cherry picked from commit dd52dd8995)
This commit is contained in:
@@ -97,6 +97,14 @@ static void Cocoa_DispatchEvent(NSEvent *theEvent)
|
||||
{
|
||||
if (s_bShouldHandleEventsInSDLApplication) {
|
||||
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];
|
||||
|
||||
Reference in New Issue
Block a user