Anchor show-taps overlay window to the host view#5
Open
takahirom wants to merge 2 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #3.
Stacked on #4 and contains its commits (GitHub can't stack cross-fork PRs, so this PR's diff includes the reproducer from #4 plus the fix commit on top). Review just the last commit ("Anchor show-taps overlay window to the host view") for the actual change.
The fix
MatchParentSizePopupadded the overlay window with only width/height set, leavingWindowManager.LayoutParams.gravityat its default (0). With gravity0, WindowManager centers the window on screen, so an overlay smaller than the screen is drawn offset from the host view — and from the taps, which are drawn at the host's coordinates.This anchors the overlay explicitly:
gravity = Gravity.TOP or Gravity.LEFTand initializex/yfromhostView.getLocationOnScreen(...).x/y(as well as width/height) from the host's current location in the existingdoOnEveryLayout { ... }block, since the host can move, not just resize.LEFTis used deliberately instead ofSTART:x/yare absolute screen coordinates, andSTARTwould be mirrored under RTL layout direction, reintroducing the offset on RTL locales.Verification
The reproducer test added in #4 passes with this fix, and
touchrobot-core:check+touchrobot-paparazzi:check(including the Paparazzi snapshot verification) are green — the fix does not change any existing screenshots.