fix: cleanup the condition for dragging elements (#5555)

This commit is contained in:
Aakansha Doshi 2022-08-10 15:32:40 +05:30 committed by GitHub
parent 2d800feeeb
commit fe56975f19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 44 deletions

View File

@ -4172,21 +4172,15 @@ class App extends React.Component<AppProps, AppState> {
(element) => this.isASelectedElement(element), (element) => this.isASelectedElement(element),
); );
const isSelectingPointsInLineEditor =
this.state.editingLinearElement &&
event.shiftKey &&
this.state.editingLinearElement.elementId ===
pointerDownState.hit.element?.id;
if ( if (
(hasHitASelectedElement || (hasHitASelectedElement ||
pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements) && pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements) &&
// this allows for box-selecting points when clicking inside the !isSelectingPointsInLineEditor
// line's bounding box
(!this.state.editingLinearElement || !event.shiftKey) &&
// box-selecting without shift when editing line, not clicking on a line
(!this.state.editingLinearElement ||
this.state.editingLinearElement?.elementId !==
pointerDownState.hit.element?.id ||
pointerDownState.hit.hasHitElementInside) &&
(!this.state.selectedLinearElement ||
this.state.selectedLinearElement?.elementId !==
pointerDownState.hit.element?.id ||
pointerDownState.hit.hasHitElementInside)
) { ) {
const selectedElements = getSelectedElements( const selectedElements = getSelectedElements(
this.scene.getNonDeletedElements(), this.scene.getNonDeletedElements(),

View File

@ -862,10 +862,7 @@ describe("regression tests", () => {
expect(API.getSelectedElements().length).toBe(0); expect(API.getSelectedElements().length).toBe(0);
}); });
it( it("drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging", () => {
"drags selected elements from point inside common bounding box that doesn't hit any element " +
"and keeps elements selected after dragging",
() => {
UI.clickTool("rectangle"); UI.clickTool("rectangle");
mouse.down(); mouse.down();
mouse.up(10, 10); mouse.up(10, 10);
@ -900,8 +897,7 @@ describe("regression tests", () => {
expect(API.getSelectedElements()[1].y).toEqual(secondElementPrevY + 25); expect(API.getSelectedElements()[1].y).toEqual(secondElementPrevY + 25);
expect(API.getSelectedElements().length).toBe(2); expect(API.getSelectedElements().length).toBe(2);
}, });
);
it( it(
"given a group of selected elements with an element that is not selected inside the group common bounding box " + "given a group of selected elements with an element that is not selected inside the group common bounding box " +