Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[macOS] Fix FlutterView cursor hit testing #53171

Merged
merged 2 commits into from
Jun 4, 2024

Conversation

bufffun
Copy link
Contributor

@bufffun bufffun commented Jun 3, 2024

fix cursor hit testing in platform view in #52159

We found that the mechanism of [NSView hitTest: view] will handle the flip coordinate automatically. In the previous PR, because the superview of FlutterView was not flipped, we should not convert the point using [self convertPoint:event.locationInWindow fromView:nil] .The FlutterView hit test should run under the window coordinate system; otherwise, FlutterMutatorView will hit a wrong point.

Before the fix:
Actual mouse move: event.locationInWindow (x = 47.45703125, y = 416.86328125)
FlutterView HitTest: (NSPoint) point = (x = 47.45703125, y = 203.13671875)
FlutterMutatorView HitTest: (NSPoint) point = (x = 47.45703125, y = 416.86328125)

After the fix:
Actual mouse move: event.locationInWindow (x = 47.45703125, y = 416.86328125)
FlutterView HitTest: (NSPoint) point = (x = 47.45703125, y = 416.86328125)
FlutterMutatorView HitTest: (NSPoint) point = (x = 47.45703125, y = 203.13671875)

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Copy link

google-cla bot commented Jun 3, 2024

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@bufffun bufffun marked this pull request as draft June 3, 2024 14:28
@bufffun bufffun marked this pull request as ready for review June 3, 2024 14:30
@bufffun
Copy link
Contributor Author

bufffun commented Jun 3, 2024

@knopp @cbracken Could you please have a look?

@bufffun bufffun force-pushed the fix-cursor-hittest branch 4 times, most recently from 2f0dd4f to 304a973 Compare June 3, 2024 17:36
Copy link
Member

@knopp knopp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fix seems good to me. hitTest: location is in superview coordinate space, so I should have used superview to transform the coordinates.

@bufffun bufffun requested a review from knopp June 4, 2024 00:55
@knopp knopp merged commit d4e12ea into flutter:main Jun 4, 2024
25 checks passed
@knopp
Copy link
Member

knopp commented Jun 4, 2024

Thanks!

engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jun 4, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jun 4, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Jun 4, 2024
…149680)

flutter/engine@e211c43...fe00f02

2024-06-04 [email protected] Separate layer-specific data in DisplayListBuilder::SaveInfo (flutter/engine#53186)
2024-06-04 [email protected] [macOS] Fix FlutterView cursor hit testing (flutter/engine#53171)
2024-06-04 [email protected] Roll Dart SDK from 9dce57c343ec to 2d7d6facc2b4 (1 revision) (flutter/engine#53193)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants