@@ -541,46 +541,49 @@ export class QuickInputList {
541
541
}
542
542
} ) ) ;
543
543
544
- const delayer = new ThrottledDelayer ( options . hoverDelegate . delay ) ;
545
- // onMouseOver triggers every time a new element has been moused over
546
- // even if it's on the same list item.
547
- this . disposables . push ( this . list . onMouseOver ( async e => {
548
- // If we hover over an anchor element, we don't want to show the hover because
549
- // the anchor may have a tooltip that we want to show instead.
550
- if ( e . browserEvent . target instanceof HTMLAnchorElement ) {
551
- delayer . cancel ( ) ;
552
- return ;
553
- }
554
- if (
555
- // anchors are an exception as called out above so we skip them here
556
- ! ( e . browserEvent . relatedTarget instanceof HTMLAnchorElement ) &&
557
- // check if the mouse is still over the same element
558
- dom . isAncestor ( e . browserEvent . relatedTarget as Node , e . element ?. element as Node )
559
- ) {
560
- return ;
561
- }
562
- try {
563
- await delayer . trigger ( async ( ) => {
564
- if ( e . element ) {
565
- this . showHover ( e . element ) ;
544
+ if ( options . hoverDelegate ) {
545
+ const delayer = new ThrottledDelayer ( options . hoverDelegate . delay ) ;
546
+ // onMouseOver triggers every time a new element has been moused over
547
+ // even if it's on the same list item.
548
+ this . disposables . push ( this . list . onMouseOver ( async e => {
549
+ // If we hover over an anchor element, we don't want to show the hover because
550
+ // the anchor may have a tooltip that we want to show instead.
551
+ if ( e . browserEvent . target instanceof HTMLAnchorElement ) {
552
+ delayer . cancel ( ) ;
553
+ return ;
554
+ }
555
+ if (
556
+ // anchors are an exception as called out above so we skip them here
557
+ ! ( e . browserEvent . relatedTarget instanceof HTMLAnchorElement ) &&
558
+ // check if the mouse is still over the same element
559
+ dom . isAncestor ( e . browserEvent . relatedTarget as Node , e . element ?. element as Node )
560
+ ) {
561
+ return ;
562
+ }
563
+ try {
564
+ await delayer . trigger ( async ( ) => {
565
+ if ( e . element ) {
566
+ this . showHover ( e . element ) ;
567
+ }
568
+ } ) ;
569
+ } catch ( e ) {
570
+ // Ignore cancellation errors due to mouse out
571
+ if ( ! isCancellationError ( e ) ) {
572
+ throw e ;
566
573
}
567
- } ) ;
568
- } catch ( e ) {
569
- // Ignore cancellation errors due to mouse out
570
- if ( ! isCancellationError ( e ) ) {
571
- throw e ;
572
574
}
573
- }
574
- } ) ) ;
575
- this . disposables . push ( this . list . onMouseOut ( e => {
576
- // onMouseOut triggers every time a new element has been moused over
577
- // even if it's on the same list item. We only want one event, so we
578
- // check if the mouse is still over the same element.
579
- if ( dom . isAncestor ( e . browserEvent . relatedTarget as Node , e . element ?. element as Node ) ) {
580
- return ;
581
- }
582
- delayer . cancel ( ) ;
583
- } ) ) ;
575
+ } ) ) ;
576
+ this . disposables . push ( this . list . onMouseOut ( e => {
577
+ // onMouseOut triggers every time a new element has been moused over
578
+ // even if it's on the same list item. We only want one event, so we
579
+ // check if the mouse is still over the same element.
580
+ if ( dom . isAncestor ( e . browserEvent . relatedTarget as Node , e . element ?. element as Node ) ) {
581
+ return ;
582
+ }
583
+ delayer . cancel ( ) ;
584
+ } ) ) ;
585
+ this . disposables . push ( delayer ) ;
586
+ }
584
587
this . disposables . push ( this . _listElementChecked . event ( _ => this . fireCheckedEvents ( ) ) ) ;
585
588
this . disposables . push (
586
589
this . _onChangedAllVisibleChecked ,
@@ -590,8 +593,7 @@ export class QuickInputList {
590
593
this . _onButtonTriggered ,
591
594
this . _onSeparatorButtonTriggered ,
592
595
this . _onLeave ,
593
- this . _onKeyDown ,
594
- delayer
596
+ this . _onKeyDown
595
597
) ;
596
598
}
597
599
@@ -839,10 +841,14 @@ export class QuickInputList {
839
841
* @param element The element to show the hover for
840
842
*/
841
843
private showHover ( element : IListElement ) : void {
844
+ if ( this . options . hoverDelegate === undefined ) {
845
+ return ;
846
+ }
842
847
if ( this . _lastHover && ! this . _lastHover . isDisposed ) {
843
848
this . options . hoverDelegate . onDidHideHover ?.( ) ;
844
849
this . _lastHover ?. dispose ( ) ;
845
850
}
851
+
846
852
if ( ! element . element || ! element . saneTooltip ) {
847
853
return ;
848
854
}
0 commit comments