Add back hideHover and use on tree context menu show

Fixes #106268
This commit is contained in:
Alex Ross
2020-09-08 15:48:35 +02:00
parent 2edbe68c84
commit 66ab6580ea
3 changed files with 16 additions and 1 deletions

View File

@@ -113,6 +113,7 @@ export class TreeView extends Disposable implements ITreeView {
@IKeybindingService private readonly keybindingService: IKeybindingService,
@INotificationService private readonly notificationService: INotificationService,
@IViewDescriptorService private readonly viewDescriptorService: IViewDescriptorService,
@IHoverService private readonly hoverService: IHoverService,
@IContextKeyService contextKeyService: IContextKeyService
) {
super();
@@ -434,6 +435,7 @@ export class TreeView extends Disposable implements ITreeView {
}
private onContextMenu(treeMenus: TreeMenus, treeEvent: ITreeContextMenuEvent<ITreeItem>, actionRunner: MultipleSelectionActionRunner): void {
this.hoverService.hideHover();
const node: ITreeItem | null = treeEvent.element;
if (node === null) {
return;
@@ -1026,7 +1028,7 @@ export class CustomTreeView extends TreeView {
@IHoverService hoverService: IHoverService,
@IExtensionService private readonly extensionService: IExtensionService,
) {
super(id, title, themeService, instantiationService, commandService, configurationService, progressService, contextMenuService, keybindingService, notificationService, viewDescriptorService, contextKeyService);
super(id, title, themeService, instantiationService, commandService, configurationService, progressService, contextMenuService, keybindingService, notificationService, viewDescriptorService, hoverService, contextKeyService);
}
setVisibility(isVisible: boolean): void {

View File

@@ -30,6 +30,11 @@ export interface IHoverService {
* ```
*/
showHover(options: IHoverOptions, focus?: boolean): IDisposable | undefined;
/**
* Hides the hover if it was visible.
*/
hideHover(): void;
}
export interface IHoverOptions {

View File

@@ -47,6 +47,14 @@ export class HoverService implements IHoverService {
return hover;
}
hideHover(): void {
if (!this._currentHoverOptions) {
return;
}
this._currentHoverOptions = undefined;
this._contextViewService.hideContextView();
}
private _intersectionChange(entries: IntersectionObserverEntry[], hover: IDisposable): void {
const entry = entries[entries.length - 1];
if (!entry.isIntersecting) {