diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 57d159651e..3683535c2a 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -11463,7 +11463,14 @@ class App extends React.Component { ): void => { const selectionElement = this.state.selectionElement; const pointerCoords = pointerDownState.lastCoords; - if (selectionElement && this.state.activeTool.type !== "eraser") { + const selectedElements = this.scene.getSelectedElements(this.state); + const onlyBindingElementSelected = + selectedElements?.length === 1 && isBindingElement(selectedElements[0]); + if ( + selectionElement && + this.state.activeTool.type !== "eraser" && + !onlyBindingElementSelected + ) { dragNewElement({ newElement: selectionElement, elementType: this.state.activeTool.type, @@ -11527,25 +11534,27 @@ class App extends React.Component { snapLines, }); - dragNewElement({ - newElement, - elementType: this.state.activeTool.type, - originX: pointerDownState.originInGrid.x, - originY: pointerDownState.originInGrid.y, - x: gridX, - y: gridY, - width: distance(pointerDownState.originInGrid.x, gridX), - height: distance(pointerDownState.originInGrid.y, gridY), - shouldMaintainAspectRatio: isImageElement(newElement) - ? !shouldMaintainAspectRatio(event) - : shouldMaintainAspectRatio(event), - shouldResizeFromCenter: shouldResizeFromCenter(event), - zoom: this.state.zoom.value, - scene: this.scene, - widthAspectRatio: aspectRatio, - originOffset: this.state.originSnapOffset, - informMutation, - }); + if (!isBindingElement(newElement)) { + dragNewElement({ + newElement, + elementType: this.state.activeTool.type, + originX: pointerDownState.originInGrid.x, + originY: pointerDownState.originInGrid.y, + x: gridX, + y: gridY, + width: distance(pointerDownState.originInGrid.x, gridX), + height: distance(pointerDownState.originInGrid.y, gridY), + shouldMaintainAspectRatio: isImageElement(newElement) + ? !shouldMaintainAspectRatio(event) + : shouldMaintainAspectRatio(event), + shouldResizeFromCenter: shouldResizeFromCenter(event), + zoom: this.state.zoom.value, + scene: this.scene, + widthAspectRatio: aspectRatio, + originOffset: this.state.originSnapOffset, + informMutation, + }); + } this.setState({ newElement,