From af226ef949f3a21ef68a6e6b9fbd4cc06fa05152 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Sun, 7 Jan 2018 18:21:37 -0800 Subject: [PATCH] Designated methods to control dirty propagation Summary: Those are supposed to replace all `dirtyText`, `dirtyPropagation`, `isPropagationDirty`, `setTextComputed`, `isTextDirty` and so on. We will use it widely soon (and remove all old ones). Reviewed By: mmmulani Differential Revision: D6665634 fbshipit-source-id: 3c1db7154e90b71446756f2495627b163c779996 --- React/Views/RCTShadowView+Layout.h | 19 +++++++++++++++++++ React/Views/RCTShadowView+Layout.m | 14 ++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/React/Views/RCTShadowView+Layout.h b/React/Views/RCTShadowView+Layout.h index f80ef434c..917b5f4a5 100644 --- a/React/Views/RCTShadowView+Layout.h +++ b/React/Views/RCTShadowView+Layout.h @@ -13,9 +13,28 @@ @interface RCTShadowView (Layout) +#pragma mark - Computed Layout-Inferred Metrics + @property (nonatomic, readonly) UIEdgeInsets paddingAsInsets; @property (nonatomic, readonly) UIEdgeInsets borderAsInsets; @property (nonatomic, readonly) UIEdgeInsets compoundInsets; @property (nonatomic, readonly) CGSize availableSize; +#pragma mark - Dirty Propagation Control + +/** + * Designated method to control dirty propagation mechanism. + * Dirties the shadow view (and all affected shadow views, usually a superview) + * in terms of layout. + * The default implementaion does nothing. + */ +- (void)dirtyLayout; + +/** + * Designated method to control dirty propagation mechanism. + * Clears (makes not dirty) the shadow view. + * The default implementaion does nothing. + */ +- (void)clearLayout; + @end diff --git a/React/Views/RCTShadowView+Layout.m b/React/Views/RCTShadowView+Layout.m index 783ea95b2..b5e11e8d6 100644 --- a/React/Views/RCTShadowView+Layout.m +++ b/React/Views/RCTShadowView+Layout.m @@ -13,6 +13,8 @@ @implementation RCTShadowView (Layout) +#pragma mark - Computed Layout-Inferred Metrics + - (UIEdgeInsets)paddingAsInsets { YGNodeRef yogaNode = self.yogaNode; @@ -53,4 +55,16 @@ return UIEdgeInsetsInsetRect((CGRect){CGPointZero, self.frame.size}, self.compoundInsets).size; } +#pragma mark - Dirty Propagation Control + +- (void)dirtyLayout +{ + // The default implementaion does nothing. +} + +- (void)clearLayout +{ + // The default implementaion does nothing. +} + @end