|  | @@ -1074,7 +1074,6 @@ export class App extends React.Component<any, AppState> {
 | 
	
		
			
				|  |  |                    multiElement.isSelected = true;
 | 
	
		
			
				|  |  |                    multiElement.points.push([x - rx, y - ry]);
 | 
	
		
			
				|  |  |                    multiElement.shape = null;
 | 
	
		
			
				|  |  | -                  this.setState({ draggingElement: multiElement });
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                    element.isSelected = false;
 | 
	
		
			
				|  |  |                    element.points.push([0, 0]);
 | 
	
	
		
			
				|  | @@ -1548,7 +1547,13 @@ export class App extends React.Component<any, AppState> {
 | 
	
		
			
				|  |  |                    if (draggingElement!.points.length > 1) {
 | 
	
		
			
				|  |  |                      history.resumeRecording();
 | 
	
		
			
				|  |  |                    }
 | 
	
		
			
				|  |  | -                  if (!draggingOccurred && !multiElement) {
 | 
	
		
			
				|  |  | +                  if (!draggingOccurred && draggingElement && !multiElement) {
 | 
	
		
			
				|  |  | +                    const { x, y } = viewportCoordsToSceneCoords(e, this.state);
 | 
	
		
			
				|  |  | +                    draggingElement.points.push([
 | 
	
		
			
				|  |  | +                      x - draggingElement.x,
 | 
	
		
			
				|  |  | +                      y - draggingElement.y,
 | 
	
		
			
				|  |  | +                    ]);
 | 
	
		
			
				|  |  | +                    draggingElement.shape = null;
 | 
	
		
			
				|  |  |                      this.setState({ multiElement: this.state.draggingElement });
 | 
	
		
			
				|  |  |                    } else if (draggingOccurred && !multiElement) {
 | 
	
		
			
				|  |  |                      this.state.draggingElement!.isSelected = true;
 | 
	
	
		
			
				|  | @@ -1751,13 +1756,28 @@ export class App extends React.Component<any, AppState> {
 | 
	
		
			
				|  |  |                  return;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                const hasDeselectedButton = Boolean(e.buttons);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +              const { x, y } = viewportCoordsToSceneCoords(e, this.state);
 | 
	
		
			
				|  |  | +              if (this.state.multiElement) {
 | 
	
		
			
				|  |  | +                const { multiElement } = this.state;
 | 
	
		
			
				|  |  | +                const originX = multiElement.x;
 | 
	
		
			
				|  |  | +                const originY = multiElement.y;
 | 
	
		
			
				|  |  | +                const points = multiElement.points;
 | 
	
		
			
				|  |  | +                const pnt = points[points.length - 1];
 | 
	
		
			
				|  |  | +                pnt[0] = x - originX;
 | 
	
		
			
				|  |  | +                pnt[1] = y - originY;
 | 
	
		
			
				|  |  | +                multiElement.shape = null;
 | 
	
		
			
				|  |  | +                this.setState({});
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                if (
 | 
	
		
			
				|  |  |                  hasDeselectedButton ||
 | 
	
		
			
				|  |  |                  this.state.elementType !== "selection"
 | 
	
		
			
				|  |  |                ) {
 | 
	
		
			
				|  |  |                  return;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  | -              const { x, y } = viewportCoordsToSceneCoords(e, this.state);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                const selectedElements = elements.filter(e => e.isSelected)
 | 
	
		
			
				|  |  |                  .length;
 | 
	
		
			
				|  |  |                if (selectedElements === 1) {
 |