From 0041358aee31bdfab44adee3b3531b8f03e3721d Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 9 Sep 2019 18:14:06 +0200 Subject: [PATCH] Fixes #80382 --- src/vs/editor/browser/controller/coreCommands.ts | 8 ++------ src/vs/editor/browser/view/viewController.ts | 12 ++++-------- src/vs/editor/common/controller/cursor.ts | 2 +- src/vs/editor/test/browser/controller/cursor.test.ts | 8 ++++---- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/vs/editor/browser/controller/coreCommands.ts b/src/vs/editor/browser/controller/coreCommands.ts index bbef333e01099..94ed9e159cbce 100644 --- a/src/vs/editor/browser/controller/coreCommands.ts +++ b/src/vs/editor/browser/controller/coreCommands.ts @@ -343,12 +343,8 @@ export namespace CoreNavigationCommands { const validatedPosition = context.model.validatePosition(args.position); const validatedViewPosition = context.validateViewPosition(new Position(args.viewPosition.lineNumber, args.viewPosition.column), validatedPosition); - let fromViewLineNumber = prevColumnSelectData.fromViewLineNumber; - let fromViewVisualColumn = prevColumnSelectData.fromViewVisualColumn; - if (!prevColumnSelectData.isReal && args.setAnchorIfNotSet) { - fromViewLineNumber = validatedViewPosition.lineNumber; - fromViewVisualColumn = args.mouseColumn - 1; - } + let fromViewLineNumber = args.doColumnSelect ? prevColumnSelectData.fromViewLineNumber : validatedViewPosition.lineNumber; + let fromViewVisualColumn = args.doColumnSelect ? prevColumnSelectData.fromViewVisualColumn : args.mouseColumn - 1; return ColumnSelection.columnSelect(context.config, context.viewModel, fromViewLineNumber, fromViewVisualColumn, validatedViewPosition.lineNumber, args.mouseColumn - 1); } }); diff --git a/src/vs/editor/browser/view/viewController.ts b/src/vs/editor/browser/view/viewController.ts index 610f54266f698..3cbd1cc286f49 100644 --- a/src/vs/editor/browser/view/viewController.ts +++ b/src/vs/editor/browser/view/viewController.ts @@ -133,11 +133,7 @@ export class ViewController { public dispatchMouse(data: IMouseDispatchData): void { if (data.middleButton) { - if (data.inSelectionMode) { - this._columnSelect(data.position, data.mouseColumn, true); - } else { - this.moveTo(data.position); - } + this._columnSelect(data.position, data.mouseColumn, data.inSelectionMode); } else if (data.startedOnLineNumbers) { // If the dragging started on the gutter, then have operations work on the entire line if (this._hasMulticursorModifier(data)) { @@ -183,7 +179,7 @@ export class ViewController { if (this._hasMulticursorModifier(data)) { if (!this._hasNonMulticursorModifier(data)) { if (data.shiftKey) { - this._columnSelect(data.position, data.mouseColumn, false); + this._columnSelect(data.position, data.mouseColumn, true); } else { // Do multi-cursor operations only when purely alt is pressed if (data.inSelectionMode) { @@ -223,13 +219,13 @@ export class ViewController { this._execMouseCommand(CoreNavigationCommands.MoveToSelect, this._usualArgs(viewPosition)); } - private _columnSelect(viewPosition: Position, mouseColumn: number, setAnchorIfNotSet: boolean): void { + private _columnSelect(viewPosition: Position, mouseColumn: number, doColumnSelect: boolean): void { viewPosition = this._validateViewColumn(viewPosition); this._execMouseCommand(CoreNavigationCommands.ColumnSelect, { position: this._convertViewToModelPosition(viewPosition), viewPosition: viewPosition, mouseColumn: mouseColumn, - setAnchorIfNotSet: setAnchorIfNotSet + doColumnSelect: doColumnSelect }); } diff --git a/src/vs/editor/common/controller/cursor.ts b/src/vs/editor/common/controller/cursor.ts index f218cb9db2e5f..79bd220af75b7 100644 --- a/src/vs/editor/common/controller/cursor.ts +++ b/src/vs/editor/common/controller/cursor.ts @@ -400,7 +400,7 @@ export class Cursor extends viewEvents.ViewEventEmitter implements ICursors { return this._columnSelectData; } const primaryCursor = this._cursors.getPrimaryCursor(); - const primaryPos = primaryCursor.viewState.position; + const primaryPos = primaryCursor.viewState.selectionStart.getStartPosition(); const viewLineNumber = primaryPos.lineNumber; const viewVisualColumn = CursorColumns.visibleColumnFromColumn2(this.context.config, this.context.viewModel, primaryPos); return { diff --git a/src/vs/editor/test/browser/controller/cursor.test.ts b/src/vs/editor/test/browser/controller/cursor.test.ts index eff8a24373fdd..9923e8d5515e2 100644 --- a/src/vs/editor/test/browser/controller/cursor.test.ts +++ b/src/vs/editor/test/browser/controller/cursor.test.ts @@ -711,7 +711,7 @@ suite('Editor Controller - Cursor', () => { position: new Position(4, 4), viewPosition: new Position(4, 4), mouseColumn: 15, - setAnchorIfNotSet: false + doColumnSelect: true }); let expectedSelections = [ @@ -747,7 +747,7 @@ suite('Editor Controller - Cursor', () => { position: new Position(4, 1), viewPosition: new Position(4, 1), mouseColumn: 1, - setAnchorIfNotSet: false + doColumnSelect: true }); assertCursor(cursor, [ @@ -787,7 +787,7 @@ suite('Editor Controller - Cursor', () => { position: new Position(1, 1), viewPosition: new Position(1, 1), mouseColumn: 1, - setAnchorIfNotSet: false + doColumnSelect: true }); assertCursor(cursor, [ new Selection(10, 10, 10, 1), @@ -806,7 +806,7 @@ suite('Editor Controller - Cursor', () => { position: new Position(1, 1), viewPosition: new Position(1, 1), mouseColumn: 1, - setAnchorIfNotSet: false + doColumnSelect: true }); assertCursor(cursor, [ new Selection(10, 10, 10, 1),