[BUGFIX] Avoid re-paints and re-layouts in page tree on drag&drop
When using drag&drop in the page tree, many style changes happen: * a shadow node is rendered that is moved around * the content within the shadow node changes depending on whether dropping is allowed * CSS classes are changed The previous implementation was not optimal in several ways: * the nodes wrapper (aka the "tree") was updated twice which each `dragover` event, being expensive on huge trees * adding and removing CSS classes may have become redundant in some cases, triggering a re-paint every time All these cases are handled in this patch by executing tasks only when absolutely necessary. Resolves: #99786 Releases: main, 11.5 Change-Id: Ibc8cbce2785e2de646e254590b4eddbdc42839c1 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77669 Reviewed-by:Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Fernandez <a.fernandez@scripting-base.de>
Showing
- Build/Sources/TypeScript/backend/Resources/Public/TypeScript/PageTree/PageTreeElement.ts 2 additions, 1 deletion...d/Resources/Public/TypeScript/PageTree/PageTreeElement.ts
- Build/Sources/TypeScript/backend/Resources/Public/TypeScript/Tree/DragDrop.ts 11 additions, 13 deletions...ript/backend/Resources/Public/TypeScript/Tree/DragDrop.ts
- typo3/sysext/backend/Resources/Public/JavaScript/PageTree/PageTreeElement.js 1 addition, 1 deletion...d/Resources/Public/JavaScript/PageTree/PageTreeElement.js
- typo3/sysext/backend/Resources/Public/JavaScript/Tree/DragDrop.js 2 additions, 2 deletions...sext/backend/Resources/Public/JavaScript/Tree/DragDrop.js
Please register or sign in to comment