From 8d3f2bf45b079749c4cc8f1d87546534cfc6fc71 Mon Sep 17 00:00:00 2001 From: rebornix Date: Wed, 12 Apr 2017 15:35:38 -0700 Subject: [PATCH] Fix #24553. We should allow paste content besides the selection. --- src/vs/editor/contrib/dnd/browser/dnd.ts | 6 +++++- src/vs/editor/contrib/dnd/common/dragAndDropCommand.ts | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/dnd/browser/dnd.ts b/src/vs/editor/contrib/dnd/browser/dnd.ts index a0fc7384956..3ac1950eb80 100644 --- a/src/vs/editor/contrib/dnd/browser/dnd.ts +++ b/src/vs/editor/contrib/dnd/browser/dnd.ts @@ -123,7 +123,11 @@ export class DragAndDropController implements editorCommon.IEditorContribution { } }); this._editor.setSelections(newSelections); - } else if (!this._dragSelection.containsPosition(newCursorPosition)) { + } else if (!this._dragSelection.containsPosition(newCursorPosition) || ( + mouseEvent.event[DragAndDropController.TRIGGER_MODIFIER] && ( + this._dragSelection.getEndPosition().equals(newCursorPosition) || this._dragSelection.getStartPosition().equals(newCursorPosition) + ) // we allow users to paste content beside the selection + )) { this._editor.executeCommand(DragAndDropController.ID, new DragAndDropCommand(this._dragSelection, newCursorPosition, mouseEvent.event[DragAndDropController.TRIGGER_MODIFIER])); } } diff --git a/src/vs/editor/contrib/dnd/common/dragAndDropCommand.ts b/src/vs/editor/contrib/dnd/common/dragAndDropCommand.ts index 280390c993f..b77a1785480 100644 --- a/src/vs/editor/contrib/dnd/common/dragAndDropCommand.ts +++ b/src/vs/editor/contrib/dnd/common/dragAndDropCommand.ts @@ -30,7 +30,11 @@ export class DragAndDropCommand implements editorCommon.ICommand { } builder.addEditOperation(new Range(this.targetPosition.lineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.targetPosition.column), text); - if (this.selection.containsPosition(this.targetPosition)) { + if (this.selection.containsPosition(this.targetPosition) && !( + this.copy && ( + this.selection.getEndPosition().equals(this.targetPosition) || this.selection.getStartPosition().equals(this.targetPosition) + ) // we allow users to paste content beside the selection + )) { this.targetSelection = this.selection; return; } -- GitLab