Skip to content

fix(drag-drop): not starting auto scroll when inside boundary - #19865

Merged
mmalerba merged 1 commit into
angular:masterfrom
crisbeto:18596/drag-drop-scroll-boundary
Jul 8, 2020
Merged

fix(drag-drop): not starting auto scroll when inside boundary#19865
mmalerba merged 1 commit into
angular:masterfrom
crisbeto:18596/drag-drop-scroll-boundary

Conversation

@crisbeto

@crisbeto crisbeto commented Jul 5, 2020

Copy link
Copy Markdown
Member

The logic that starts the auto-scrolling sequence was using the pointer position that is constrained within the boundary element which wasn't allowing it to start auto scrolling. These changes also fix some internal issues that I noticed along the way:

  • We were using the pointer position at the last direction change to re-sort the element while dragging. This is incorrect since the user might not have changed direction. Now we use the position at the last pointer event.
  • The _getConstrainedPointerPosition method was mutating the passed in Point which can throw things off downstream.
  • The logic that updates the ClientRect of the boundary element was doing so on any scroll, even if it comes from inside the boundary. Now we only do it if a parent of the boundary was scrolled.

Fixes #18596.

The logic that starts the auto-scrolling sequence was using the pointer position that is constrained within the boundary element which wasn't allow it to start auto scrolling. These changes also fix some internal issues that I noticed along the way:
* We were using the pointer position at the last direction change to re-sort the element while dragging. This is incorrect since the user might not have changed direction. Now we use the position at the last pointer event.
* The `_getConstrainedPointerPosition` method was mutating the passed in `Point` which can throw things off downstream.
* The logic that updates the `ClientRect` of the boundary element was doing so on any scroll, even if it comes from inside the boundary. Now we only do it if a parent of the boundary was scrolled.

Fixes angular#18596.
@crisbeto crisbeto added P3 An issue that is relevant to core functions, but does not impede progress. Important, but not urgent target: patch This PR is targeted for the next patch release labels Jul 5, 2020
@googlebot googlebot added the cla: yes PR author has agreed to Google's Contributor License Agreement label Jul 5, 2020

@jelbourn jelbourn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@jelbourn jelbourn added lgtm action: merge The PR is ready for merge by the caretaker labels Jul 6, 2020
@mmalerba
mmalerba merged commit 39d48c7 into angular:master Jul 8, 2020
mmalerba pushed a commit that referenced this pull request Jul 8, 2020
The logic that starts the auto-scrolling sequence was using the pointer position that is constrained within the boundary element which wasn't allow it to start auto scrolling. These changes also fix some internal issues that I noticed along the way:
* We were using the pointer position at the last direction change to re-sort the element while dragging. This is incorrect since the user might not have changed direction. Now we use the position at the last pointer event.
* The `_getConstrainedPointerPosition` method was mutating the passed in `Point` which can throw things off downstream.
* The logic that updates the `ClientRect` of the boundary element was doing so on any scroll, even if it comes from inside the boundary. Now we only do it if a parent of the boundary was scrolled.

Fixes #18596.
@angular-automatic-lock-bot

Copy link
Copy Markdown

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot Bot locked and limited conversation to collaborators Aug 8, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

action: merge The PR is ready for merge by the caretaker cla: yes PR author has agreed to Google's Contributor License Agreement P3 An issue that is relevant to core functions, but does not impede progress. Important, but not urgent target: patch This PR is targeted for the next patch release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[drag-drop] Auto-scrolling works poorly with a cdkDragBoundary

4 participants