From b03c0b0ac2e0afaade2c83f713ce47a1cd49cf8f Mon Sep 17 00:00:00 2001 From: Tako <53405089+Takoooooo@users.noreply.github.com> Date: Wed, 27 Oct 2021 13:49:20 +0300 Subject: [PATCH] Merge pull request #6803 from AvaloniaUI/fixes/osx/non-client-clicks-popup-crash [OSX] fix non-client click detection causing crash on popups. --- native/Avalonia.Native/src/OSX/window.mm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 1fdb7b47b9..3e941f4236 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -2389,7 +2389,10 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent - (void)sendEvent:(NSEvent *)event { - if(_parent != nullptr) + [super sendEvent:event]; + + /// This is to detect non-client clicks. This can only be done on Windows... not popups, hence the dynamic_cast. + if(_parent != nullptr && dynamic_cast(_parent.getRaw()) != nullptr) { switch(event.type) { @@ -2419,8 +2422,6 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent break; } } - - [super sendEvent:event]; } @end