@@ -23,6 +23,7 @@ export interface IBaseActionViewItemOptions {
23
23
draggable ?: boolean ;
24
24
isMenu ?: boolean ;
25
25
useEventAsContext ?: boolean ;
26
+ hoverDelegate ?: IHoverDelegate ;
26
27
}
27
28
28
29
export class BaseActionViewItem extends Disposable implements IActionViewItem {
@@ -32,6 +33,8 @@ export class BaseActionViewItem extends Disposable implements IActionViewItem {
32
33
_context : unknown ;
33
34
readonly _action : IAction ;
34
35
36
+ private customHover ?: ICustomHover ;
37
+
35
38
get action ( ) {
36
39
return this . _action ;
37
40
}
@@ -210,8 +213,27 @@ export class BaseActionViewItem extends Disposable implements IActionViewItem {
210
213
// implement in subclass
211
214
}
212
215
216
+ protected getTooltip ( ) : string | undefined {
217
+ return this . getAction ( ) . tooltip ;
218
+ }
219
+
213
220
protected updateTooltip ( ) : void {
214
- // implement in subclass
221
+ if ( ! this . element ) {
222
+ return ;
223
+ }
224
+ const title = this . getTooltip ( ) ?? '' ;
225
+ this . element . setAttribute ( 'aria-label' , title ) ;
226
+ if ( ! this . options . hoverDelegate ) {
227
+ this . element . title = title ;
228
+ } else {
229
+ this . element . title = '' ;
230
+ if ( ! this . customHover ) {
231
+ this . customHover = setupCustomHover ( this . options . hoverDelegate , this . element , title ) ;
232
+ this . _store . add ( this . customHover ) ;
233
+ } else {
234
+ this . customHover . update ( title ) ;
235
+ }
236
+ }
215
237
}
216
238
217
239
protected updateClass ( ) : void {
@@ -236,7 +258,6 @@ export interface IActionViewItemOptions extends IBaseActionViewItemOptions {
236
258
icon ?: boolean ;
237
259
label ?: boolean ;
238
260
keybinding ?: string | null ;
239
- hoverDelegate ?: IHoverDelegate ;
240
261
}
241
262
242
263
export class ActionViewItem extends BaseActionViewItem {
@@ -245,7 +266,6 @@ export class ActionViewItem extends BaseActionViewItem {
245
266
protected override options : IActionViewItemOptions ;
246
267
247
268
private cssClass ?: string ;
248
- private customHover ?: ICustomHover ;
249
269
250
270
constructor ( context : unknown , action : IAction , options : IActionViewItemOptions = { } ) {
251
271
super ( context , action , options ) ;
@@ -317,7 +337,7 @@ export class ActionViewItem extends BaseActionViewItem {
317
337
}
318
338
}
319
339
320
- override updateTooltip ( ) : void {
340
+ override getTooltip ( ) {
321
341
let title : string | null = null ;
322
342
323
343
if ( this . getAction ( ) . tooltip ) {
@@ -330,24 +350,7 @@ export class ActionViewItem extends BaseActionViewItem {
330
350
title = nls . localize ( { key : 'titleLabel' , comment : [ 'action title' , 'action keybinding' ] } , "{0} ({1})" , title , this . options . keybinding ) ;
331
351
}
332
352
}
333
- this . _applyUpdateTooltip ( title ) ;
334
- }
335
-
336
- protected _applyUpdateTooltip ( title : string | undefined | null ) : void {
337
- if ( title && this . label ) {
338
- this . label . setAttribute ( 'aria-label' , title ) ;
339
- if ( ! this . options . hoverDelegate ) {
340
- this . label . title = title ;
341
- } else {
342
- this . label . title = '' ;
343
- if ( ! this . customHover ) {
344
- this . customHover = setupCustomHover ( this . options . hoverDelegate , this . label , title ) ;
345
- this . _store . add ( this . customHover ) ;
346
- } else {
347
- this . customHover . update ( title ) ;
348
- }
349
- }
350
- }
353
+ return title ?? undefined ;
351
354
}
352
355
353
356
override updateClass ( ) : void {
0 commit comments