Skip to content

Commit 83fc24f

Browse files
committed
Implement feature flag
1 parent b8d1587 commit 83fc24f

File tree

6 files changed

+19
-8
lines changed

6 files changed

+19
-8
lines changed

packages/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#import "RCTTextInputComponentView.h"
99

10+
#import <react/featureflags/ReactNativeFeatureFlags.h>
1011
#import <react/renderer/components/iostextinput/TextInputComponentDescriptor.h>
1112
#import <react/renderer/textlayoutmanager/RCTAttributedTextUtils.h>
1213
#import <react/renderer/textlayoutmanager/TextLayoutManager.h>
@@ -128,7 +129,7 @@ - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
128129
{
129130
[super traitCollectionDidChange:previousTraitCollection];
130131

131-
if (UITraitCollection.currentTraitCollection.preferredContentSizeCategory !=
132+
if (facebook::react::ReactNativeFeatureFlags::enableFontScaleChangesUpdatingLayout() && UITraitCollection.currentTraitCollection.preferredContentSizeCategory !=
132133
previousTraitCollection.preferredContentSizeCategory) {
133134
const auto &newTextInputProps = static_cast<const TextInputProps &>(*_props);
134135
_backedTextInputView.defaultTextAttributes =

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.facebook.react.interfaces.TaskInterface;
2727
import com.facebook.react.interfaces.fabric.ReactSurface;
2828
import com.facebook.react.interfaces.fabric.SurfaceHandler;
29+
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags;
2930
import com.facebook.react.modules.i18nmanager.I18nUtil;
3031
import com.facebook.react.runtime.internal.bolts.Task;
3132
import com.facebook.react.uimanager.events.EventDispatcher;
@@ -248,7 +249,11 @@ private static float getPixelDensity(Context context) {
248249
}
249250

250251
private static float getFontScale(Context context) {
251-
return context.getResources().getConfiguration().fontScale;
252+
if (ReactNativeFeatureFlags.enableFontScaleChangesUpdatingLayout()) {
253+
return context.getResources().getConfiguration().fontScale;
254+
}
255+
256+
return 1f;
252257
}
253258

254259
private static boolean isRTL(Context context) {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1084,7 +1084,10 @@ public void onStartTemporaryDetach() {
10841084
@Override
10851085
public void onConfigurationChanged(Configuration newConfig) {
10861086
super.onConfigurationChanged(newConfig);
1087-
applyTextAttributes();
1087+
1088+
if (ReactNativeFeatureFlags.enableBridgelessArchitecture() && ReactNativeFeatureFlags.enableFontScaleChangesUpdatingLayout()) {
1089+
applyTextAttributes();
1090+
}
10881091
}
10891092

10901093
@Override

packages/react-native/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <cmath>
1111

1212
#include <react/debug/react_native_assert.h>
13+
#include <react/featureflags/ReactNativeFeatureFlags.h>
1314
#include <react/renderer/attributedstring/AttributedStringBox.h>
1415
#include <react/renderer/components/view/ViewShadowNode.h>
1516
#include <react/renderer/components/view/conversions.h>
@@ -36,8 +37,8 @@ ParagraphShadowNode::ParagraphShadowNode(
3637

3738
if (!fragment.children && !fragment.props &&
3839
sourceParagraphShadowNode.getIsLayoutClean() &&
39-
fontSizeMultiplier_ ==
40-
state.attributedString.getBaseTextAttributes().fontSizeMultiplier) {
40+
(!ReactNativeFeatureFlags::enableFontScaleChangesUpdatingLayout() || fontSizeMultiplier_ ==
41+
state.attributedString.getBaseTextAttributes().fontSizeMultiplier)) {
4142
// This ParagraphShadowNode was cloned but did not change
4243
// in a way that affects its layout. Let's mark it clean
4344
// to stop Yoga from traversing it.

packages/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputShadowNode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ class BaseTextInputShadowNode : public ConcreteViewShadowNode<
193193
const LayoutContext& layoutContext) const {
194194
bool meaningfulState = BaseShadowNode::getState() &&
195195
BaseShadowNode::getState()->getRevision() !=
196-
State::initialRevisionValue;
196+
State::initialRevisionValue && BaseShadowNode::getStateData().reactTreeAttributedString.getBaseTextAttributes().fontSizeMultiplier == layoutContext.fontSizeMultiplier;
197197
if (meaningfulState) {
198198
const auto& stateData = BaseShadowNode::getStateData();
199199
auto attributedStringBox = stateData.attributedStringBox;

packages/react-native/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include <cxxreact/TraceSection.h>
1111
#include <react/debug/react_native_assert.h>
12+
#include <react/featureflags/ReactNativeFeatureFlags.h>
1213
#include <react/renderer/uimanager/UIManager.h>
1314

1415
namespace facebook::react {
@@ -319,8 +320,8 @@ void SurfaceHandler::constraintLayout(
319320
propsParserContext, layoutConstraints, layoutContext);
320321

321322
// Dirty all measurable nodes when the fontSizeMultiplier changes to
322-
// trigger remeasurement.
323-
if (layoutContext.fontSizeMultiplier !=
323+
// trigger re-measurement.
324+
if (ReactNativeFeatureFlags::enableFontScaleChangesUpdatingLayout() && layoutContext.fontSizeMultiplier !=
324325
oldRootShadowNode.getConcreteProps()
325326
.layoutContext.fontSizeMultiplier) {
326327
dirtyMeasurableNodes(*newRoot);

0 commit comments

Comments
 (0)