@@ -48,6 +48,11 @@ interface ILayoutInfo {
4848
4949type Tree < I , E > = WorkbenchDataTree < I , E , FuzzyScore > | WorkbenchAsyncDataTree < I , E , FuzzyScore > ;
5050
51+ export interface SelectEvent {
52+ target : any ;
53+ browserEvent : UIEvent ;
54+ }
55+
5156export 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