未验证 提交 f7c5fc79 编写于 作者: A Alex Ross 提交者: GitHub

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 874c98d8. In the September iteration, we will go back to using custom hovers by default in the custom tree view.
Fixes #106096
上级 e4256dd1
......@@ -40,7 +40,6 @@ import { isFalsyOrWhitespace } from 'vs/base/common/strings';
import { SIDE_BAR_BACKGROUND, PANEL_BACKGROUND } from 'vs/workbench/common/theme';
import { IHoverService, IHoverOptions, IHoverTarget } from 'vs/workbench/services/hover/browser/hover';
import { ActionViewItem } from 'vs/base/browser/ui/actionbar/actionViewItems';
import { IMarkdownString } from 'vs/base/common/htmlContent';
import { isMacintosh } from 'vs/base/common/platform';
class Root implements ITreeItem {
......@@ -756,6 +755,8 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
}) : undefined;
const icon = this.themeService.getColorTheme().type === LIGHT ? node.icon : node.iconDark;
const iconUrl = icon ? URI.revive(icon) : null;
const canResolve = node instanceof ResolvableTreeItem && node.hasResolve;
const title = node.tooltip ? (isString(node.tooltip) ? node.tooltip : undefined) : (resource ? undefined : (canResolve ? undefined : label));
// reset
templateData.actionBar.clear();
......@@ -765,7 +766,7 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
const labelResource = resource ? resource : URI.parse('missing:_icon_resource');
templateData.resourceLabel.setResource({ name: label, description, resource: labelResource }, {
fileKind: this.getFileKind(node),
title: '',
title,
hideIcon: !!iconUrl,
fileDecorations,
extraClasses: ['custom-view-tree-node-item-resourceLabel'],
......@@ -775,7 +776,7 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
fallbackHover = this.labelService.getUriLabel(labelResource);
} else {
templateData.resourceLabel.setResource({ name: label, description }, {
title: '',
title,
hideIcon: true,
extraClasses: ['custom-view-tree-node-item-resourceLabel'],
matches: matches ? matches : createMatches(element.filterData),
......@@ -810,6 +811,11 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
}
private setupHovers(node: ITreeItem, htmlElement: HTMLElement, disposableStore: DisposableStore, label: string | undefined): void {
if (!(node instanceof ResolvableTreeItem) || (node.tooltip && isString(node.tooltip)) || (!node.tooltip && !node.hasResolve)) {
return;
}
const resolvableNode: ResolvableTreeItem = node;
const hoverService = this.hoverService;
// Testing has indicated that on Windows and Linux 500 ms matches the native hovers most closely.
// On Mac, the delay is 1500.
......@@ -827,10 +833,8 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
this.addEventListener(DOM.EventType.MOUSE_LEAVE, mouseLeave, { passive: true });
this.addEventListener(DOM.EventType.MOUSE_MOVE, mouseMove, { passive: true });
setTimeout(async () => {
if (node instanceof ResolvableTreeItem) {
await node.resolve();
}
let tooltip: IMarkdownString | string | undefined = node.tooltip ?? label;
await resolvableNode.resolve();
const tooltip = resolvableNode.tooltip ?? label;
if (isHovering && tooltip) {
if (!hoverOptions) {
const target: IHoverTarget = {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册