From 76beb381aea226d302ad6266cc8dc451a1e3879a Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Fri, 12 Nov 2021 12:05:54 +0100 Subject: [PATCH] Only raise non-client click when outside view client area. #6700 implemented non-client click support for macOS but it caused non-client clicks to get sent even for clicks on the client area, causing #6827. Fix this by checking that the click is outside the view's bounds before raising the non-client click. --- native/Avalonia.Native/src/OSX/window.mm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 094c1f7c93..2073e130cb 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -2398,11 +2398,18 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent { case NSEventTypeLeftMouseDown: { - auto avnPoint = [AvnView toAvnPoint:[event locationInWindow]]; - auto point = [self translateLocalPoint:avnPoint]; - AvnVector delta; + AvnView* view = _parent->View; + NSPoint windowPoint = [event locationInWindow]; + NSPoint viewPoint = [view convertPoint:windowPoint fromView:nil]; - _parent->BaseEvents->RawMouseEvent(NonClientLeftButtonDown, [event timestamp] * 1000, AvnInputModifiersNone, point, delta); + if (!NSPointInRect(viewPoint, view.bounds)) + { + auto avnPoint = [AvnView toAvnPoint:windowPoint]; + auto point = [self translateLocalPoint:avnPoint]; + AvnVector delta; + + _parent->BaseEvents->RawMouseEvent(NonClientLeftButtonDown, [event timestamp] * 1000, AvnInputModifiersNone, point, delta); + } } break;