Skip to content

Commit d5152c6

Browse files
committed
breadcrumbs - fix open to side issue
1 parent 01a3f15 commit d5152c6

2 files changed

Lines changed: 28 additions & 14 deletions

File tree

src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,12 @@ export class BreadcrumbsControl {
336336
editorViewState = undefined;
337337
}
338338
this._contextViewService.hideContextView(this);
339-
this._revealInEditor(event, data.target, this._getEditorGroup(data.payload && data.payload.originalEvent), (data.payload && data.payload.originalEvent && data.payload.originalEvent.middleButton));
339+
340+
const group = (picker.useAltAsMultipleSelectionModifier && (data.browserEvent as MouseEvent).metaKey) || (!picker.useAltAsMultipleSelectionModifier && (data.browserEvent as MouseEvent).altKey)
341+
? SIDE_GROUP
342+
: ACTIVE_GROUP;
343+
344+
this._revealInEditor(event, data.target, group, (data.browserEvent as MouseEvent).button === 1);
340345
/* __GDPR__
341346
"breadcrumbs/open" : {
342347
"type": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
@@ -464,10 +469,10 @@ export class BreadcrumbsControl {
464469
}
465470
}
466471

467-
private _getEditorGroup(data: StandardMouseEvent | object): SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | undefined {
468-
if (data === BreadcrumbsControl.Payload_RevealAside || (data instanceof StandardMouseEvent && data.altKey)) {
472+
private _getEditorGroup(data: object): SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | undefined {
473+
if (data === BreadcrumbsControl.Payload_RevealAside) {
469474
return SIDE_GROUP;
470-
} else if (data === BreadcrumbsControl.Payload_Reveal || (data instanceof StandardMouseEvent && data.metaKey)) {
475+
} else if (data === BreadcrumbsControl.Payload_Reveal) {
471476
return ACTIVE_GROUP;
472477
} else {
473478
return undefined;

src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ interface ILayoutInfo {
4848

4949
type Tree<I, E> = WorkbenchDataTree<I, E, FuzzyScore> | WorkbenchAsyncDataTree<I, E, FuzzyScore>;
5050

51+
export interface SelectEvent {
52+
target: any;
53+
browserEvent: UIEvent;
54+
}
55+
5156
export abstract class BreadcrumbsPicker {
5257

5358
protected readonly _disposables = new Array<IDisposable>();
@@ -58,11 +63,11 @@ export abstract class BreadcrumbsPicker {
5863
protected _fakeEvent = new UIEvent('fakeEvent');
5964
protected _layoutInfo: ILayoutInfo;
6065

61-
private readonly _onDidPickElement = new Emitter<{ target: any, payload: any }>();
62-
readonly onDidPickElement: Event<{ target: any, payload: any }> = this._onDidPickElement.event;
66+
private readonly _onDidPickElement = new Emitter<SelectEvent>();
67+
readonly onDidPickElement: Event<SelectEvent> = this._onDidPickElement.event;
6368

64-
private readonly _onDidFocusElement = new Emitter<{ target: any, payload: any }>();
65-
readonly onDidFocusElement: Event<{ target: any, payload: any }> = this._onDidFocusElement.event;
69+
private readonly _onDidFocusElement = new Emitter<SelectEvent>();
70+
readonly onDidFocusElement: Event<SelectEvent> = this._onDidFocusElement.event;
6671

6772
constructor(
6873
parent: HTMLElement,
@@ -106,18 +111,18 @@ export abstract class BreadcrumbsPicker {
106111

107112
this._disposables.push(this._tree.onDidChangeSelection(e => {
108113
if (e.browserEvent !== this._fakeEvent) {
109-
const target = this._getTargetFromEvent(e.elements[0], e.browserEvent);
114+
const target = this._getTargetFromEvent(e.elements[0]);
110115
if (target) {
111116
setTimeout(_ => {// need to debounce here because this disposes the tree and the tree doesn't like to be disposed on click
112-
this._onDidPickElement.fire({ target, payload: undefined });
117+
this._onDidPickElement.fire({ target, browserEvent: e.browserEvent || new UIEvent('fake') });
113118
}, 0);
114119
}
115120
}
116121
}));
117122
this._disposables.push(this._tree.onDidChangeFocus(e => {
118-
const target = this._getTargetFromEvent(e.elements[0], e.browserEvent);
123+
const target = this._getTargetFromEvent(e.elements[0]);
119124
if (target) {
120-
this._onDidFocusElement.fire({ target, payload: undefined });
125+
this._onDidFocusElement.fire({ target, browserEvent: e.browserEvent || new UIEvent('fake') });
121126
}
122127
}));
123128
this._disposables.push(this._tree.onDidChangeContentHeight(() => {
@@ -155,9 +160,13 @@ export abstract class BreadcrumbsPicker {
155160

156161
}
157162

163+
get useAltAsMultipleSelectionModifier() {
164+
return this._tree.useAltAsMultipleSelectionModifier;
165+
}
166+
158167
protected abstract _setInput(element: BreadcrumbElement): Promise<void>;
159168
protected abstract _createTree(container: HTMLElement): Tree<any, any>;
160-
protected abstract _getTargetFromEvent(element: any, payload: UIEvent | undefined): any | undefined;
169+
protected abstract _getTargetFromEvent(element: any): any | undefined;
161170
}
162171

163172
//#region - Files
@@ -425,7 +434,7 @@ export class BreadcrumbsFilePicker extends BreadcrumbsPicker {
425434
});
426435
}
427436

428-
protected _getTargetFromEvent(element: any, _payload: any): any | undefined {
437+
protected _getTargetFromEvent(element: any): any | undefined {
429438
// todo@joh
430439
if (element && !IWorkspaceFolder.isIWorkspaceFolder(element) && !(element as IFileStat).isDirectory) {
431440
return new FileElement((element as IFileStat).resource, FileKind.FILE);

0 commit comments

Comments
 (0)