[desktop_drop] Fix mouse event blocking for PlatformView in macOS #436
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The
desktop_drop
plugin was blocking mouse events for nativePlatformView
components in macOS Flutter applications. This occurred because theDropTarget
view was overlaying the entire screen and intercepting all mouse events, preventing interaction with platform views.Solution
Modified the native macOS implementation to properly handle mouse event forwarding while preserving drag & drop functionality:
Key Changes:
hitTest(_:)
to forward mouse events down the responder chain when not handling drag operationsisDragging
variable andisDragEvent(_:)
method to accurately determine when to handle eventsmouseDown
,mouseUp
,mouseDragged
,mouseMoved
,rightMouseDown
,rightMouseUp
) to forward events to the next responder when not in drag modedraggingEnded(_:)
method and reset state in all drag completion methodsDropTarget
transparent for better compatibility with other viewsTechnical Details:
Testing
Impact
This fix resolves the blocking issue while maintaining full drag & drop capabilities, allowing seamless integration with native platform views in macOS Flutter applications.