From eb066597115d64e3b153bbf6e3e560fdcbf9e2f6 Mon Sep 17 00:00:00 2001 From: Alex Akers Date: Tue, 14 Jul 2015 01:59:28 -0700 Subject: [PATCH] [React Native] Update code comments about layout-only view --- Libraries/Components/View/View.js | 6 ++++++ Libraries/ReactNative/ReactNativeViewAttributes.js | 6 +++++- React/Views/RCTShadowView.m | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Libraries/Components/View/View.js b/Libraries/Components/View/View.js index 0cb6e4a4f..6912c05db 100644 --- a/Libraries/Components/View/View.js +++ b/Libraries/Components/View/View.js @@ -44,6 +44,12 @@ var AccessibilityTraits = [ 'pageTurn', ]; +// <<<<< WARNING >>>>> +// If adding any properties to View that could change the way layout-only status +// works on iOS, make sure to update ReactNativeViewAttributes.js and +// RCTShadowView.m (in the -[RCTShadowView isLayoutOnly] method). +// <<<<< WARNING >>>>> + /** * The most fundamental component for building UI, `View` is a * container that supports layout with flexbox, style, some touch handling, and diff --git a/Libraries/ReactNative/ReactNativeViewAttributes.js b/Libraries/ReactNative/ReactNativeViewAttributes.js index eb3a396ca..367c6be2d 100644 --- a/Libraries/ReactNative/ReactNativeViewAttributes.js +++ b/Libraries/ReactNative/ReactNativeViewAttributes.js @@ -26,7 +26,11 @@ ReactNativeViewAttributes.UIView = { onMagicTap: true, collapsible: true, - // If any below are set, view should not be collapsible! + // If editing layout-only view attributes, make sure + // -[RCTShadowView isLayoutOnly] in RCTShadowView.m + // is up-to-date! If any property below is set, the + // view should not be collapsible, but this is done + // on the native side. onMoveShouldSetResponder: true, onResponderGrant: true, onResponderMove: true, diff --git a/React/Views/RCTShadowView.m b/React/Views/RCTShadowView.m index 2c350b18b..e5cccbd3f 100644 --- a/React/Views/RCTShadowView.m +++ b/React/Views/RCTShadowView.m @@ -439,12 +439,15 @@ static void RCTProcessMetaProps(const float metaProps[META_PROP_COUNT], float st @"flex", }; layoutKeys = [NSSet setWithObjects:layoutKeyStrings count:sizeof(layoutKeyStrings)/sizeof(*layoutKeyStrings)]; + // layoutKeys are the only keys whose presence does not reject layout-only status. static NSString *const specialKeyStrings[] = { @"accessible", @"collapsible", }; specialKeys = [NSSet setWithObjects:specialKeyStrings count:sizeof(specialKeyStrings)/sizeof(*specialKeyStrings)]; + // specialKeys are keys whose presence does not indicate whether layout-only or not + // their values must be tested below } NSNumber *collapsible = self.allProps[@"collapsible"];