Anvil: Fix wrong DnD offset #1829
Open
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.
The DnD should start at the hotspot aka the pointer location. The (0, 0) coordinate already corresponds to the pointer location. By offseting by -hotspot, the dnd is initiated at the top-left of the cursor's surface instead of the hotspot.
You can verify the behaviour is incorrect by running weston-dnd:
Without the patch, when initiating the dnd the element gets offset to the left.
With the patch, the element does not get offset.
(P.S. Even with this patch, there is still a very tiny offset when doing the DnD for me. I believe this is due to conversions between integer and floating point locations using round() instead of floor(). In my experience, floor() produces more correct results than round(). But that's an entirely separate and it might just be my setup.)