From c4ee0463aad57ed0b6e52a8cbb691efb048e9953 Mon Sep 17 00:00:00 2001 From: Alex Kornitzer Date: Sun, 10 May 2020 22:43:55 +0100 Subject: [PATCH] cocoa: don't update mouse events when outside nswindow --- ui/drivers/ui_cocoa.m | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 0947e632bf..0a090051f5 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -131,26 +131,26 @@ static void app_terminate(void) pos.x = 0; pos.y = 0; - /* Relative */ - apple->mouse_rel_x += (int16_t)event.deltaX; - apple->mouse_rel_y += (int16_t)event.deltaY; - - /* Absolute */ #if defined(HAVE_COCOA_METAL) pos = [apple_platform.renderView convertPoint:[event locationInWindow] fromView:nil]; #elif defined(HAVE_COCOA) pos = [[CocoaView get] convertPoint:[event locationInWindow] fromView:nil]; #endif + + NSInteger window_number = [[[NSApplication sharedApplication] keyWindow] windowNumber]; + if ([NSWindow windowNumberAtPoint:pos belowWindowWithWindowNumber:0] != window_number) { + return; + } + + /* Relative */ + apple->mouse_rel_x += (int16_t)event.deltaX; + apple->mouse_rel_y += (int16_t)event.deltaY; + + /* Absolute */ apple->touches[0].screen_x = (int16_t)pos.x; apple->touches[0].screen_y = (int16_t)pos.y; - -#if defined(HAVE_COCOA_METAL) - mouse_pos = [apple_platform.renderView convertPoint:[event locationInWindow] fromView:nil]; -#elif defined(HAVE_COCOA) - mouse_pos = [[CocoaView get] convertPoint:[event locationInWindow] fromView:nil]; -#endif - apple->window_pos_x = (int16_t)mouse_pos.x; - apple->window_pos_y = (int16_t)mouse_pos.y; + apple->window_pos_x = (int16_t)pos.x; + apple->window_pos_y = (int16_t)pos.y; } break; #if defined(HAVE_COCOA_METAL)