Skip to content

Commit

Permalink
💄
Browse files Browse the repository at this point in the history
  • Loading branch information
bpasero committed Aug 26, 2019
1 parent 6f25395 commit 2a7f5b4
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 13 deletions.
14 changes: 9 additions & 5 deletions src/vs/platform/editor/common/editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,17 @@ export interface IResourceInput extends IBaseResourceInput {
export interface IEditorOptions {

/**
* Tells the editor to not receive keyboard focus when the editor is being opened. By default,
* the editor will receive keyboard focus on open.
* Tells the editor to not receive keyboard focus when the editor is being opened. This
* will also prevent the group the editor opens in to become active. This can be overridden
* via the `forceActive` option.
*
* By default, the editor will receive keyboard focus on open.
*/
readonly preserveFocus?: boolean;

/**
* Tells the group the editor opens in to become active. By default, an editor group will not
* become active if either `preserveFocus: true` or `inactive: true`.
* Tells the group the editor opens in to become active even if either `preserveFocus: true`
* or `inactive: true` are specified.
*/
readonly forceActive?: boolean;

Expand Down Expand Up @@ -129,7 +132,8 @@ export interface IEditorOptions {

/**
* An active editor that is opened will show its contents directly. Set to true to open an editor
* in the background.
* in the background. This will also prevent the group the editor opens in to become active. This
* can be overridden via the `forceActive` option.
*/
readonly inactive?: boolean;

Expand Down
14 changes: 9 additions & 5 deletions src/vs/workbench/common/editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -713,14 +713,17 @@ export class EditorOptions implements IEditorOptions {
}

/**
* Tells the editor to not receive keyboard focus when the editor is being opened. By default,
* the editor will receive keyboard focus on open.
* Tells the editor to not receive keyboard focus when the editor is being opened. This
* will also prevent the group the editor opens in to become active. This can be overridden
* via the `forceActive` option.
*
* By default, the editor will receive keyboard focus on open.
*/
preserveFocus: boolean | undefined;

/**
* Tells the group the editor opens in to become active. By default, an editor group will not
* become active if either `preserveFocus: true` or `inactive: true`.
* Tells the group the editor opens in to become active even if either `preserveFocus: true`
* or `inactive: true` are specified.
*/
forceActive: boolean | undefined;

Expand Down Expand Up @@ -754,7 +757,8 @@ export class EditorOptions implements IEditorOptions {

/**
* An active editor that is opened will show its contents directly. Set to true to open an editor
* in the background.
* in the background. This will also prevent the group the editor opens in to become active. This
* can be overridden via the `forceActive` option.
*/
inactive: boolean | undefined;

Expand Down
11 changes: 8 additions & 3 deletions src/vs/workbench/services/editor/browser/editorService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,12 @@ export class EditorService extends Disposable implements EditorServiceImpl {
// Not enforcing this for side groups supports a historic scenario we have: repeated
// Alt-clicking of files in the explorer always open into the same side group and not
// cause a group to be created each time.
if (typedOptions && !typedOptions.inactive && typedOptions.preserveFocus && candidateGroup !== SIDE_GROUP) {
if (
typedOptions && !typedOptions.inactive && // never for inactive editors
typedOptions.preserveFocus && // only if preserveFocus
typeof typedOptions.forceActive !== 'boolean' && // only if forceActive is not already defined (either true or false)
candidateGroup !== SIDE_GROUP // never for the SIDE_GROUP
) {
typedOptions.overwrite({ forceActive: true });
}

Expand All @@ -275,11 +280,11 @@ export class EditorService extends Disposable implements EditorServiceImpl {

// Group: Instance of Group
if (group && typeof group !== 'number') {
return group;
targetGroup = group;
}

// Group: Side by Side
if (group === SIDE_GROUP) {
else if (group === SIDE_GROUP) {
targetGroup = this.findSideBySideGroup();
}

Expand Down

0 comments on commit 2a7f5b4

Please sign in to comment.