diff --git a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm index b933f2a954..e1c3473c98 100644 --- a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm +++ b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm @@ -636,6 +636,9 @@ public: void redirectMouseEnter (NSEvent* ev) { + if (shouldIgnoreMouseEnterExit (ev)) + return; + Desktop::getInstance().getMainMouseSource().forceMouseCursorUpdate(); ModifierKeys::currentModifiers = ModifierKeys::currentModifiers.withoutMouseButtons(); sendMouseEvent (ev); @@ -643,6 +646,9 @@ public: void redirectMouseExit (NSEvent* ev) { + if (shouldIgnoreMouseEnterExit (ev)) + return; + ModifierKeys::currentModifiers = ModifierKeys::currentModifiers.withoutMouseButtons(); sendMouseEvent (ev); } @@ -1513,6 +1519,12 @@ private: static NSView* createViewInstance(); static NSWindow* createWindowInstance(); + bool shouldIgnoreMouseEnterExit (NSEvent* ev) const + { + auto* eventTrackingArea = [ev trackingArea]; + return eventTrackingArea != nil && ! [[view trackingAreas] containsObject: eventTrackingArea]; + } + static void setOwner (id viewOrWindow, NSViewComponentPeer* newOwner) { object_setInstanceVariable (viewOrWindow, "owner", newOwner);