Skip to content

Commit f7c5fc7

Browse files
authored
Custom hover keeps lingering around (#106228)
@Tyriar has fixed this for the September release, but for August we will not use the custom hover in the custom tree view by default. This change is mostly a revert of 874c98d. In the September iteration, we will go back to using custom hovers by default in the custom tree view. Fixes #106096
1 parent e4256dd commit f7c5fc7

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/vs/workbench/contrib/views/browser/treeView.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import { isFalsyOrWhitespace } from 'vs/base/common/strings';
4040
import { SIDE_BAR_BACKGROUND, PANEL_BACKGROUND } from 'vs/workbench/common/theme';
4141
import { IHoverService, IHoverOptions, IHoverTarget } from 'vs/workbench/services/hover/browser/hover';
4242
import { ActionViewItem } from 'vs/base/browser/ui/actionbar/actionViewItems';
43-
import { IMarkdownString } from 'vs/base/common/htmlContent';
4443
import { isMacintosh } from 'vs/base/common/platform';
4544

4645
class Root implements ITreeItem {
@@ -756,6 +755,8 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
756755
}) : undefined;
757756
const icon = this.themeService.getColorTheme().type === LIGHT ? node.icon : node.iconDark;
758757
const iconUrl = icon ? URI.revive(icon) : null;
758+
const canResolve = node instanceof ResolvableTreeItem && node.hasResolve;
759+
const title = node.tooltip ? (isString(node.tooltip) ? node.tooltip : undefined) : (resource ? undefined : (canResolve ? undefined : label));
759760

760761
// reset
761762
templateData.actionBar.clear();
@@ -765,7 +766,7 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
765766
const labelResource = resource ? resource : URI.parse('missing:_icon_resource');
766767
templateData.resourceLabel.setResource({ name: label, description, resource: labelResource }, {
767768
fileKind: this.getFileKind(node),
768-
title: '',
769+
title,
769770
hideIcon: !!iconUrl,
770771
fileDecorations,
771772
extraClasses: ['custom-view-tree-node-item-resourceLabel'],
@@ -775,7 +776,7 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
775776
fallbackHover = this.labelService.getUriLabel(labelResource);
776777
} else {
777778
templateData.resourceLabel.setResource({ name: label, description }, {
778-
title: '',
779+
title,
779780
hideIcon: true,
780781
extraClasses: ['custom-view-tree-node-item-resourceLabel'],
781782
matches: matches ? matches : createMatches(element.filterData),
@@ -810,6 +811,11 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
810811
}
811812

812813
private setupHovers(node: ITreeItem, htmlElement: HTMLElement, disposableStore: DisposableStore, label: string | undefined): void {
814+
if (!(node instanceof ResolvableTreeItem) || (node.tooltip && isString(node.tooltip)) || (!node.tooltip && !node.hasResolve)) {
815+
return;
816+
}
817+
const resolvableNode: ResolvableTreeItem = node;
818+
813819
const hoverService = this.hoverService;
814820
// Testing has indicated that on Windows and Linux 500 ms matches the native hovers most closely.
815821
// On Mac, the delay is 1500.
@@ -827,10 +833,8 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
827833
this.addEventListener(DOM.EventType.MOUSE_LEAVE, mouseLeave, { passive: true });
828834
this.addEventListener(DOM.EventType.MOUSE_MOVE, mouseMove, { passive: true });
829835
setTimeout(async () => {
830-
if (node instanceof ResolvableTreeItem) {
831-
await node.resolve();
832-
}
833-
let tooltip: IMarkdownString | string | undefined = node.tooltip ?? label;
836+
await resolvableNode.resolve();
837+
const tooltip = resolvableNode.tooltip ?? label;
834838
if (isHovering && tooltip) {
835839
if (!hoverOptions) {
836840
const target: IHoverTarget = {

0 commit comments

Comments
 (0)