@@ -165,6 +165,7 @@ - (instancetype)initWithFrame:(CGRect)frame
165
165
_hitTestEdgeInsets = UIEdgeInsetsZero;
166
166
#if TARGET_OS_OSX // TODO(macOS GH#774)
167
167
_transform3D = CATransform3DIdentity;
168
+ _shadowColor = nil ;
168
169
#endif // TODO(macOS GH#774)
169
170
170
171
_backgroundColor = super.backgroundColor ;
@@ -716,20 +717,49 @@ - (NSString *)description
716
717
#endif // TODO(macOS GH#774)
717
718
718
719
#if TARGET_OS_OSX // [TODO(macOS GH#774)
719
- // Workaround AppKit issue with directly manipulating the view layer's shadow.
720
- - (NSShadow *)shadow
720
+ - (void )setShadowColor:(NSColor *)shadowColor
721
721
{
722
- CALayer *layer = self.layer ;
723
- NSShadow *shadow = nil ;
722
+ if (_shadowColor != shadowColor)
723
+ {
724
+ _shadowColor = shadowColor;
725
+ [self didUpdateShadow ];
726
+ }
727
+ }
724
728
725
- if (layer.shadowColor != nil && layer.shadowOpacity > 0 ) {
726
- shadow = [NSShadow new ];
729
+ - (void )setShadowOffset:(CGSize)shadowOffset
730
+ {
731
+ if (!CGSizeEqualToSize (_shadowOffset, shadowOffset))
732
+ {
733
+ _shadowOffset = shadowOffset;
734
+ [self didUpdateShadow ];
735
+ }
736
+ }
727
737
728
- shadow.shadowColor = [[NSColor colorWithCGColor: layer.shadowColor] colorWithAlphaComponent: layer.shadowOpacity];
729
- shadow.shadowOffset = layer.shadowOffset ;
730
- shadow.shadowBlurRadius = layer.shadowRadius ;
731
- }
732
- return shadow;
738
+ - (void )setShadowOpacity:(CGFloat)shadowOpacity
739
+ {
740
+ if (_shadowOpacity != shadowOpacity)
741
+ {
742
+ _shadowOpacity = shadowOpacity;
743
+ [self didUpdateShadow ];
744
+ }
745
+ }
746
+
747
+ - (void )setShadowRadius:(CGFloat)shadowRadius
748
+ {
749
+ if (_shadowRadius != shadowRadius)
750
+ {
751
+ _shadowRadius = shadowRadius;
752
+ [self didUpdateShadow ];
753
+ }
754
+ }
755
+
756
+ -(void )didUpdateShadow
757
+ {
758
+ NSShadow *shadow = [NSShadow new ];
759
+ shadow.shadowColor = [[self shadowColor ] colorWithAlphaComponent: [self shadowOpacity ]];
760
+ shadow.shadowOffset = [self shadowOffset ];
761
+ shadow.shadowBlurRadius = [self shadowRadius ];
762
+ [self setShadow: shadow];
733
763
}
734
764
735
765
- (void )viewDidMoveToWindow
0 commit comments