mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-06-01 22:25:12 +00:00
feat: get currentColor from caller instead of parent (#2521)
# Summary Fixes #2520 When an element uses `currentColor`, it should look for color in its caller, not in its parent. Example: ```svg <Svg width="100" height="100" viewBox="0 0 100 100" color="red"> <Defs color="blue"> <G color="green"> <Rect id="a" x="0" y="0" width="50" height="50" fill="currentColor"/> </G> </Defs> <G color="pink"> <Use href="#a"/> <!-- #1 --> </G> <Use href="#a" transform="translate(25 25)"/> <!-- #2 --> <G color="green"> <Use href="#a" transform="translate(50 50)"/> <!-- #3 --> </G> </Svg> ``` * `#1` should be **pink** * `#2` should be **red** * `#3` should be **green**  ## Test Plan Example app -> test -> Test2520 ## Compatibility | OS | Implemented | | ------- | :---------: | | iOS | ✅ | | MacOS | ✅ | | Android | ✅ |
This commit is contained in:
@@ -133,7 +133,7 @@ using namespace facebook::react;
|
||||
if (self.inlineSize != nil && self.inlineSize.value != 0) {
|
||||
if (self.fill) {
|
||||
if (self.fill.class == RNSVGBrush.class) {
|
||||
CGColorRef color = [self.tintColor CGColor];
|
||||
CGColorRef color = [self getCurrentColor];
|
||||
[self drawWrappedText:context gc:gc rect:rect color:color];
|
||||
} else {
|
||||
CGColorRef color = [self.fill getColorWithOpacity:self.fillOpacity];
|
||||
@@ -143,7 +143,7 @@ using namespace facebook::react;
|
||||
}
|
||||
if (self.stroke) {
|
||||
if (self.stroke.class == RNSVGBrush.class) {
|
||||
CGColorRef color = [self.tintColor CGColor];
|
||||
CGColorRef color = [self getCurrentColor];
|
||||
[self drawWrappedText:context gc:gc rect:rect color:color];
|
||||
} else {
|
||||
CGColorRef color = [self.stroke getColorWithOpacity:self.strokeOpacity];
|
||||
|
||||
Reference in New Issue
Block a user