mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Merge pull request #1735 from levi/betterFlatten3
[ASLayout] Clean up flattening process of ASLayout
This commit is contained in:
@@ -62,7 +62,9 @@ NSString * const ASRenderingEngineDidDisplayNodesScheduledBeforeTimestamp = @"AS
|
||||
@implementation ASDisplayNode
|
||||
|
||||
// these dynamic properties all defined in ASLayoutOptionsPrivate.m
|
||||
@dynamic spacingAfter, spacingBefore, flexGrow, flexShrink, flexBasis, alignSelf, ascender, descender, sizeRange, layoutPosition;
|
||||
@dynamic spacingAfter, spacingBefore, flexGrow, flexShrink, flexBasis,
|
||||
alignSelf, ascender, descender, sizeRange, layoutPosition, layoutableType;
|
||||
|
||||
@synthesize name = _name;
|
||||
@synthesize preferredFrameSize = _preferredFrameSize;
|
||||
@synthesize isFinalLayoutable = _isFinalLayoutable;
|
||||
@@ -659,6 +661,11 @@ static ASDisplayNodeMethodOverrides GetASDisplayNodeMethodOverrides(Class c)
|
||||
return _layout == nil || _layout.isDirty;
|
||||
}
|
||||
|
||||
- (ASLayoutableType)layoutableType
|
||||
{
|
||||
return ASLayoutableTypeDisplayNode;
|
||||
}
|
||||
|
||||
#pragma mark - Layout Transition
|
||||
|
||||
- (void)transitionLayoutWithAnimation:(BOOL)animated
|
||||
@@ -1916,13 +1923,7 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
|
||||
ASLayoutableValidateLayout(layout);
|
||||
#endif
|
||||
}
|
||||
return [layout flattenedLayoutUsingPredicateBlock:^BOOL(ASLayout *evaluatedLayout) {
|
||||
if (self.usesImplicitHierarchyManagement) {
|
||||
return ASObjectIsEqual(layout, evaluatedLayout) == NO && [evaluatedLayout.layoutableObject isKindOfClass:[ASDisplayNode class]];
|
||||
} else {
|
||||
return [_subnodes containsObject:evaluatedLayout.layoutableObject];
|
||||
}
|
||||
}];
|
||||
return [layout filteredNodeLayoutTree];
|
||||
} else {
|
||||
// If neither -layoutSpecThatFits: nor -calculateSizeThatFits: is overridden by subclassses, preferredFrameSize should be used,
|
||||
// assume that the default implementation of -calculateSizeThatFits: returns it.
|
||||
@@ -2415,7 +2416,7 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
|
||||
|
||||
- (void)__layoutSublayouts
|
||||
{
|
||||
for (ASLayout *subnodeLayout in _layout.immediateSublayouts) {
|
||||
for (ASLayout *subnodeLayout in _layout.sublayouts) {
|
||||
((ASDisplayNode *)subnodeLayout.layoutableObject).frame = [subnodeLayout frame];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user