Skip to content

Commit

Permalink
Fix border width precedence issue
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Akers committed Jul 30, 2015
1 parent 90b80e3 commit f2b3057
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 13 deletions.
24 changes: 12 additions & 12 deletions React/Views/RCTShadowView.m
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@ @implementation RCTShadowView
NSMutableArray *_reactSubviews;
BOOL _recomputePadding;
BOOL _recomputeMargin;
BOOL _recomputeBorder;
float _paddingMetaProps[META_PROP_COUNT];
float _marginMetaProps[META_PROP_COUNT];
float _borderMetaProps[META_PROP_COUNT];
}

@synthesize reactTag = _reactTag;
Expand Down Expand Up @@ -247,6 +249,7 @@ - (instancetype)init
for (int ii = 0; ii < META_PROP_COUNT; ii++) {
_paddingMetaProps[ii] = CSS_UNDEFINED;
_marginMetaProps[ii] = CSS_UNDEFINED;
_borderMetaProps[ii] = CSS_UNDEFINED;
}

_newView = YES;
Expand Down Expand Up @@ -449,27 +452,20 @@ - (UIEdgeInsets)paddingAsInsets
#define RCT_BORDER_PROPERTY(prop, metaProp) \
- (void)setBorder##prop##Width:(CGFloat)value \
{ \
_cssNode->style.border[CSS_##metaProp] = value; \
[self dirtyLayout]; \
_borderMetaProps[META_PROP_##metaProp] = value; \
_recomputeBorder = YES; \
} \
- (CGFloat)border##prop##Width \
{ \
return _cssNode->style.border[META_PROP_##metaProp]; \
return _borderMetaProps[META_PROP_##metaProp]; \
}

RCT_BORDER_PROPERTY(, ALL)
RCT_BORDER_PROPERTY(Top, TOP)
RCT_BORDER_PROPERTY(Left, LEFT)
RCT_BORDER_PROPERTY(Bottom, BOTTOM)
RCT_BORDER_PROPERTY(Right, RIGHT)

- (void)setBorderWidth:(CGFloat)value
{
for (int i = 0; i < 4; i++) {
_cssNode->style.border[i] = value;
}
[self dirtyLayout];
}

// Dimensions

#define RCT_DIMENSIONS_PROPERTY(setProp, getProp, cssProp) \
Expand Down Expand Up @@ -562,12 +558,16 @@ - (void)updateLayout
if (_recomputeMargin) {
RCTProcessMetaProps(_marginMetaProps, _cssNode->style.margin);
}
if (_recomputePadding || _recomputeMargin) {
if (_recomputeBorder) {
RCTProcessMetaProps(_borderMetaProps, _cssNode->style.border);
}
if (_recomputePadding || _recomputeMargin || _recomputeBorder) {
[self dirtyLayout];
}
[self fillCSSNode:_cssNode];
_recomputeMargin = NO;
_recomputePadding = NO;
_recomputeBorder = NO;
}

@end
3 changes: 2 additions & 1 deletion React/Views/RCTView.m
Original file line number Diff line number Diff line change
Expand Up @@ -523,7 +523,7 @@ - (void)displayLayer:(CALayer *)layer
_backgroundColor.CGColor,
self.clipsToBounds);

const CGRect contentsCenter = ({
CGRect contentsCenter = ({
CGSize size = image.size;
UIEdgeInsets insets = image.capInsets;
CGRectMake(
Expand All @@ -540,6 +540,7 @@ - (void)displayLayer:(CALayer *)layer
[image drawInRect:(CGRect){CGPointZero, size}];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
contentsCenter = CGRectMake(0, 0, 1, 1);
}

layer.backgroundColor = NULL;
Expand Down

0 comments on commit f2b3057

Please sign in to comment.