From 5a47463e1f6e50548ebe74ec4ff95df7d2f1700f Mon Sep 17 00:00:00 2001 From: Genki Kondo Date: Tue, 12 Jul 2022 20:01:52 -0700 Subject: [PATCH] Prevent double application of opacity and backgroundColor on text Summary: The new props parsing path (introduced in https://www.internalfb.com/diff/D37051020 (https://github.com/facebook/react-native/commit/af1eae9ea313b016f111a25b5252b70aea99aedd)) resulted in opacity and backgroundColor being applied twice. Specifically, the new prop setter path basically results in the ParagraphProps' textAttributes (via ConcreteComponentDescriptor.cloneProps, via ParagraphProps.setProp) to include opacity and backgroundColor, which is not desired as they are both applied again on view. Similar issue faced in the past: https://www.internalfb.com/diff/D19764144 (https://github.com/facebook/react-native/commit/8fe6883fea5d92c8378a9642e8369c56f20872a7) Changelog: [Internal] - Prevent double application of opacity and backgroundColor on text Reviewed By: ryancat Differential Revision: D37801663 fbshipit-source-id: 4b5ebe5ff20b80833edb2141df883f33c69ab5d6 --- .../react/renderer/components/text/ParagraphProps.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ReactCommon/react/renderer/components/text/ParagraphProps.cpp b/ReactCommon/react/renderer/components/text/ParagraphProps.cpp index 6d6f778a70b..0ecf15bab4f 100644 --- a/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +++ b/ReactCommon/react/renderer/components/text/ParagraphProps.cpp @@ -58,6 +58,13 @@ void ParagraphProps::setProp( // reuse the same values. ViewProps::setProp(context, hash, propName, value); BaseTextProps::setProp(context, hash, propName, value); + + /* + * These props are applied to `View`, therefore they must not be a part of + * base text attributes. + */ + textAttributes.opacity = std::numeric_limits::quiet_NaN(); + textAttributes.backgroundColor = {}; } #pragma mark - DebugStringConvertible