mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-31 01:00:29 -04:00
Merge from vscode 966b87dd4013be1a9c06e2b8334522ec61905cc2 (#4696)
This commit is contained in:
@@ -336,7 +336,12 @@ export class BreadcrumbsControl {
|
||||
editorViewState = undefined;
|
||||
}
|
||||
this._contextViewService.hideContextView(this);
|
||||
this._revealInEditor(event, data.target, this._getEditorGroup(data.payload && data.payload.originalEvent), (data.payload && data.payload.originalEvent && data.payload.originalEvent.middleButton));
|
||||
|
||||
const group = (picker.useAltAsMultipleSelectionModifier && (data.browserEvent as MouseEvent).metaKey) || (!picker.useAltAsMultipleSelectionModifier && (data.browserEvent as MouseEvent).altKey)
|
||||
? SIDE_GROUP
|
||||
: ACTIVE_GROUP;
|
||||
|
||||
this._revealInEditor(event, data.target, group, (data.browserEvent as MouseEvent).button === 1);
|
||||
/* __GDPR__
|
||||
"breadcrumbs/open" : {
|
||||
"type": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
|
||||
@@ -464,10 +469,10 @@ export class BreadcrumbsControl {
|
||||
}
|
||||
}
|
||||
|
||||
private _getEditorGroup(data: StandardMouseEvent | object): SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | undefined {
|
||||
if (data === BreadcrumbsControl.Payload_RevealAside || (data instanceof StandardMouseEvent && data.altKey)) {
|
||||
private _getEditorGroup(data: object): SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE | undefined {
|
||||
if (data === BreadcrumbsControl.Payload_RevealAside) {
|
||||
return SIDE_GROUP;
|
||||
} else if (data === BreadcrumbsControl.Payload_Reveal || (data instanceof StandardMouseEvent && data.metaKey)) {
|
||||
} else if (data === BreadcrumbsControl.Payload_Reveal) {
|
||||
return ACTIVE_GROUP;
|
||||
} else {
|
||||
return undefined;
|
||||
|
||||
@@ -205,7 +205,7 @@ export class EditorBreadcrumbsModel {
|
||||
let chain: Array<OutlineGroup | OutlineElement> = [];
|
||||
while (item) {
|
||||
chain.push(item);
|
||||
let parent = item.parent;
|
||||
let parent: any = item.parent;
|
||||
if (parent instanceof OutlineModel) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -48,6 +48,11 @@ interface ILayoutInfo {
|
||||
|
||||
type Tree<I, E> = WorkbenchDataTree<I, E, FuzzyScore> | WorkbenchAsyncDataTree<I, E, FuzzyScore>;
|
||||
|
||||
export interface SelectEvent {
|
||||
target: any;
|
||||
browserEvent: UIEvent;
|
||||
}
|
||||
|
||||
export abstract class BreadcrumbsPicker {
|
||||
|
||||
protected readonly _disposables = new Array<IDisposable>();
|
||||
@@ -58,11 +63,11 @@ export abstract class BreadcrumbsPicker {
|
||||
protected _fakeEvent = new UIEvent('fakeEvent');
|
||||
protected _layoutInfo: ILayoutInfo;
|
||||
|
||||
private readonly _onDidPickElement = new Emitter<{ target: any, payload: any }>();
|
||||
readonly onDidPickElement: Event<{ target: any, payload: any }> = this._onDidPickElement.event;
|
||||
private readonly _onDidPickElement = new Emitter<SelectEvent>();
|
||||
readonly onDidPickElement: Event<SelectEvent> = this._onDidPickElement.event;
|
||||
|
||||
private readonly _onDidFocusElement = new Emitter<{ target: any, payload: any }>();
|
||||
readonly onDidFocusElement: Event<{ target: any, payload: any }> = this._onDidFocusElement.event;
|
||||
private readonly _onDidFocusElement = new Emitter<SelectEvent>();
|
||||
readonly onDidFocusElement: Event<SelectEvent> = this._onDidFocusElement.event;
|
||||
|
||||
constructor(
|
||||
parent: HTMLElement,
|
||||
@@ -106,18 +111,18 @@ export abstract class BreadcrumbsPicker {
|
||||
|
||||
this._disposables.push(this._tree.onDidChangeSelection(e => {
|
||||
if (e.browserEvent !== this._fakeEvent) {
|
||||
const target = this._getTargetFromEvent(e.elements[0], e.browserEvent);
|
||||
const target = this._getTargetFromEvent(e.elements[0]);
|
||||
if (target) {
|
||||
setTimeout(_ => {// need to debounce here because this disposes the tree and the tree doesn't like to be disposed on click
|
||||
this._onDidPickElement.fire({ target, payload: undefined });
|
||||
this._onDidPickElement.fire({ target, browserEvent: e.browserEvent || new UIEvent('fake') });
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
}));
|
||||
this._disposables.push(this._tree.onDidChangeFocus(e => {
|
||||
const target = this._getTargetFromEvent(e.elements[0], e.browserEvent);
|
||||
const target = this._getTargetFromEvent(e.elements[0]);
|
||||
if (target) {
|
||||
this._onDidFocusElement.fire({ target, payload: undefined });
|
||||
this._onDidFocusElement.fire({ target, browserEvent: e.browserEvent || new UIEvent('fake') });
|
||||
}
|
||||
}));
|
||||
this._disposables.push(this._tree.onDidChangeContentHeight(() => {
|
||||
@@ -155,9 +160,13 @@ export abstract class BreadcrumbsPicker {
|
||||
|
||||
}
|
||||
|
||||
get useAltAsMultipleSelectionModifier() {
|
||||
return this._tree.useAltAsMultipleSelectionModifier;
|
||||
}
|
||||
|
||||
protected abstract _setInput(element: BreadcrumbElement): Promise<void>;
|
||||
protected abstract _createTree(container: HTMLElement): Tree<any, any>;
|
||||
protected abstract _getTargetFromEvent(element: any, payload: UIEvent | undefined): any | undefined;
|
||||
protected abstract _getTargetFromEvent(element: any): any | undefined;
|
||||
}
|
||||
|
||||
//#region - Files
|
||||
@@ -425,7 +434,7 @@ export class BreadcrumbsFilePicker extends BreadcrumbsPicker {
|
||||
});
|
||||
}
|
||||
|
||||
protected _getTargetFromEvent(element: any, _payload: any): any | undefined {
|
||||
protected _getTargetFromEvent(element: any): any | undefined {
|
||||
// todo@joh
|
||||
if (element && !IWorkspaceFolder.isIWorkspaceFolder(element) && !(element as IFileStat).isDirectory) {
|
||||
return new FileElement((element as IFileStat).resource, FileKind.FILE);
|
||||
|
||||
Reference in New Issue
Block a user