Fix rects measuring on elements change #1094
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.
A fix for #1092, I am not sure if there are any other implications with this change so any input is appreciated.
What was happening?
When using multiple containers
scrollableAncestors
would get updated, but their rects would not.So, let's imagine dragging from one container to another, first we have something like:
Then ancestors get updated to just one element in between switching containers, but rects do not.
Then, this code brings chaos:
dnd-kit/packages/core/src/hooks/utilities/useAutoScroller.ts
Lines 121 to 122 in 5c58f0f
Because for grandparent
scrollContainer
it would use index 0 to access rects, leading toscrollContainerRect
beingparentRect
for grandparent container - causing seemingly random jumps as can be seen in the video from the issue referenced on top.