@@ -19,7 +19,14 @@ export const booleanCellRenderer: InternalCellRenderer<BooleanCell> = {
19
19
useLabel : false ,
20
20
needsHoverPosition : true ,
21
21
measure : ( ) => 50 ,
22
- draw : a => drawBoolean ( a , a . cell . data , booleanCellIsEditable ( a . cell ) , a . cell . maxSize ?? defaultCellMaxSize ) ,
22
+ draw : a =>
23
+ drawBoolean (
24
+ a ,
25
+ a . cell . data ,
26
+ booleanCellIsEditable ( a . cell ) ,
27
+ a . cell . maxSize ?? defaultCellMaxSize ,
28
+ a . cell . hoverEffectIntensity ?? 0.35
29
+ ) ,
23
30
onDelete : c => ( {
24
31
...c ,
25
32
data : false ,
@@ -70,7 +77,8 @@ function drawBoolean(
70
77
args : BaseDrawArgs ,
71
78
data : boolean | BooleanEmpty | BooleanIndeterminate ,
72
79
canEdit : boolean ,
73
- maxSize ?: number
80
+ maxSize : number ,
81
+ hoverEffectIntensity : number
74
82
) {
75
83
if ( ! canEdit && data === BooleanEmpty ) {
76
84
return ;
@@ -87,18 +95,26 @@ function drawBoolean(
87
95
} = args ;
88
96
const { x, y, width : w , height : h } = rect ;
89
97
90
- const hoverEffect = 0.35 ;
98
+ // Don't set the global alpha unnecessarily
99
+ let shouldRestoreAlpha = false ;
100
+ if ( hoverEffectIntensity > 0 ) {
101
+ let alpha = canEdit ? 1 - hoverEffectIntensity + hoverEffectIntensity * hoverAmount : 0.4 ;
102
+ if ( data === BooleanEmpty ) {
103
+ alpha *= hoverAmount ;
104
+ }
105
+ if ( alpha === 0 ) {
106
+ return ;
107
+ }
91
108
92
- let alpha = canEdit ? 1 - hoverEffect + hoverEffect * hoverAmount : 0.4 ;
93
- if ( data === BooleanEmpty ) {
94
- alpha *= hoverAmount ;
95
- }
96
- if ( alpha === 0 ) {
97
- return ;
109
+ if ( alpha < 1 ) {
110
+ shouldRestoreAlpha = true ;
111
+ ctx . globalAlpha = alpha ;
112
+ }
98
113
}
99
- ctx . globalAlpha = alpha ;
100
114
101
115
drawCheckbox ( ctx , theme , data , x , y , w , h , highlighted , hoverX , hoverY , maxSize , contentAlign ) ;
102
116
103
- ctx . globalAlpha = 1 ;
117
+ if ( shouldRestoreAlpha ) {
118
+ ctx . globalAlpha = 1 ;
119
+ }
104
120
}
0 commit comments