From 26e86f6660528a2be0d619707e476261e8843964 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 29 Jun 2016 07:38:05 +0200 Subject: [PATCH] Preview tab does not have a stable position (fixes #8245) --- .../common/editor/editorStacksModel.ts | 4 +-- .../files/browser/editors/textFileEditor.ts | 2 -- .../common/editor/editorStacksModel.test.ts | 31 ++++++++++++++----- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/common/editor/editorStacksModel.ts b/src/vs/workbench/common/editor/editorStacksModel.ts index ade6d47a83d..af809920c78 100644 --- a/src/vs/workbench/common/editor/editorStacksModel.ts +++ b/src/vs/workbench/common/editor/editorStacksModel.ts @@ -251,8 +251,8 @@ export class EditorGroup implements IEditorGroup { // Replace existing preview with this editor if we have a preview if (this.preview) { const indexOfPreview = this.indexOf(this.preview); - if (targetIndex >= indexOfPreview) { - targetIndex--; + if (targetIndex > indexOfPreview) { + targetIndex--; // accomodate for the fact that the preview editor closes } this.closeEditor(this.preview, !makeActive); // optimization to prevent multiple setActive() in one call diff --git a/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts b/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts index c46a0eeddc2..9ff1826a87e 100644 --- a/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts +++ b/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts @@ -34,7 +34,6 @@ import {IMessageService, Severity, CancelAction} from 'vs/platform/message/commo import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/editorService'; import {IModeService} from 'vs/editor/common/services/modeService'; import {IThemeService} from 'vs/workbench/services/themes/common/themeService'; -import {IHistoryService} from 'vs/workbench/services/history/common/history'; const LEGACY_EDITOR_VIEW_STATE_PREFERENCE_KEY = 'editorViewState'; // TODO@Ben migration const TEXT_EDITOR_VIEW_STATE_PREFERENCE_KEY = 'textEditorViewState'; @@ -56,7 +55,6 @@ export class TextFileEditor extends BaseTextEditor { @ITelemetryService telemetryService: ITelemetryService, @IFileService private fileService: IFileService, @IViewletService private viewletService: IViewletService, - @IHistoryService private historyService: IHistoryService, @IInstantiationService instantiationService: IInstantiationService, @IWorkspaceContextService contextService: IWorkspaceContextService, @IStorageService storageService: IStorageService, diff --git a/src/vs/workbench/test/common/editor/editorStacksModel.test.ts b/src/vs/workbench/test/common/editor/editorStacksModel.test.ts index c268ae33c7e..07116d281ea 100644 --- a/src/vs/workbench/test/common/editor/editorStacksModel.test.ts +++ b/src/vs/workbench/test/common/editor/editorStacksModel.test.ts @@ -29,7 +29,7 @@ function create(): EditorStacksModel { services.set(IWorkspaceContextService, new TestContextService()); const config = new TestConfigurationService(); - config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' }}); + config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' } }); services.set(IConfigurationService, config); let inst = new InstantiationService(services); @@ -644,7 +644,7 @@ suite('Editor Stacks Model', () => { const config = new TestConfigurationService(); services.set(IConfigurationService, config); - config.setUserConfiguration('workbench', { editor: { openPositioning: 'left' }}); + config.setUserConfiguration('workbench', { editor: { openPositioning: 'left' } }); let inst = new InstantiationService(services); @@ -1177,7 +1177,7 @@ suite('Editor Stacks Model', () => { const lifecycle = new TestLifecycleService(); services.set(ILifecycleService, lifecycle); const config = new TestConfigurationService(); - config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' }}); + config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' } }); services.set(IConfigurationService, config); let inst = new InstantiationService(services); @@ -1221,7 +1221,7 @@ suite('Editor Stacks Model', () => { const lifecycle = new TestLifecycleService(); services.set(ILifecycleService, lifecycle); const config = new TestConfigurationService(); - config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' }}); + config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' } }); services.set(IConfigurationService, config); let inst = new InstantiationService(services); @@ -1303,7 +1303,7 @@ suite('Editor Stacks Model', () => { const lifecycle = new TestLifecycleService(); services.set(ILifecycleService, lifecycle); const config = new TestConfigurationService(); - config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' }}); + config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' } }); services.set(IConfigurationService, config); let inst = new InstantiationService(services); @@ -1353,7 +1353,7 @@ suite('Editor Stacks Model', () => { const lifecycle = new TestLifecycleService(); services.set(ILifecycleService, lifecycle); const config = new TestConfigurationService(); - config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' }}); + config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' } }); services.set(IConfigurationService, config); let inst = new InstantiationService(services); @@ -1395,7 +1395,7 @@ suite('Editor Stacks Model', () => { const lifecycle = new TestLifecycleService(); services.set(ILifecycleService, lifecycle); const config = new TestConfigurationService(); - config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' }}); + config.setUserConfiguration('workbench', { editor: { openPositioning: 'right' } }); services.set(IConfigurationService, config); let inst = new InstantiationService(services); @@ -1716,4 +1716,21 @@ suite('Editor Stacks Model', () => { assert.ok(events.changed[5].structural); // close assert.equal(events.changed[5].editor, input1); }); + + test('Preview tab does not have a stable position (https://github.com/Microsoft/vscode/issues/8245)', function () { + const model = create(); + + const group1 = model.openGroup('first'); + + const input1 = input(); + const input2 = input(); + const input3 = input(); + + group1.openEditor(input1, { pinned: true, active: true }); + group1.openEditor(input2, { active: true }); + group1.setActive(input1); + + group1.openEditor(input3, { active: true }); + assert.equal(group1.indexOf(input3), 1); + }); }); \ No newline at end of file -- GitLab