@@ -40,7 +40,6 @@ import { isFalsyOrWhitespace } from 'vs/base/common/strings';
40
40
import { SIDE_BAR_BACKGROUND , PANEL_BACKGROUND } from 'vs/workbench/common/theme' ;
41
41
import { IHoverService , IHoverOptions , IHoverTarget } from 'vs/workbench/services/hover/browser/hover' ;
42
42
import { ActionViewItem } from 'vs/base/browser/ui/actionbar/actionViewItems' ;
43
- import { IMarkdownString } from 'vs/base/common/htmlContent' ;
44
43
import { isMacintosh } from 'vs/base/common/platform' ;
45
44
46
45
class Root implements ITreeItem {
@@ -756,6 +755,8 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
756
755
} ) : undefined ;
757
756
const icon = this . themeService . getColorTheme ( ) . type === LIGHT ? node . icon : node . iconDark ;
758
757
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 ) ) ;
759
760
760
761
// reset
761
762
templateData . actionBar . clear ( ) ;
@@ -765,7 +766,7 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
765
766
const labelResource = resource ? resource : URI . parse ( 'missing:_icon_resource' ) ;
766
767
templateData . resourceLabel . setResource ( { name : label , description, resource : labelResource } , {
767
768
fileKind : this . getFileKind ( node ) ,
768
- title : '' ,
769
+ title,
769
770
hideIcon : ! ! iconUrl ,
770
771
fileDecorations,
771
772
extraClasses : [ 'custom-view-tree-node-item-resourceLabel' ] ,
@@ -775,7 +776,7 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
775
776
fallbackHover = this . labelService . getUriLabel ( labelResource ) ;
776
777
} else {
777
778
templateData . resourceLabel . setResource ( { name : label , description } , {
778
- title : '' ,
779
+ title,
779
780
hideIcon : true ,
780
781
extraClasses : [ 'custom-view-tree-node-item-resourceLabel' ] ,
781
782
matches : matches ? matches : createMatches ( element . filterData ) ,
@@ -810,6 +811,11 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
810
811
}
811
812
812
813
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
+
813
819
const hoverService = this . hoverService ;
814
820
// Testing has indicated that on Windows and Linux 500 ms matches the native hovers most closely.
815
821
// On Mac, the delay is 1500.
@@ -827,10 +833,8 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
827
833
this . addEventListener ( DOM . EventType . MOUSE_LEAVE , mouseLeave , { passive : true } ) ;
828
834
this . addEventListener ( DOM . EventType . MOUSE_MOVE , mouseMove , { passive : true } ) ;
829
835
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 ;
834
838
if ( isHovering && tooltip ) {
835
839
if ( ! hoverOptions ) {
836
840
const target : IHoverTarget = {
0 commit comments