mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-03 11:44:46 +00:00
Fix synchronous state of node if +viewClass or +layerClass is overwritten #trivial (#776)
* Fix synchronous state of node if +viewClass is overwritten * Also check for _layerClass overwrite for synchronous flag * Update some code style
This commit is contained in:
committed by
GitHub
parent
fef965f78e
commit
20e31f7d70
@@ -253,6 +253,11 @@ static ASDisplayNodeMethodOverrides GetASDisplayNodeMethodOverrides(Class c)
|
||||
|
||||
_viewClass = [self.class viewClass];
|
||||
_layerClass = [self.class layerClass];
|
||||
BOOL isSynchronous = ![_viewClass isSubclassOfClass:[_ASDisplayView class]]
|
||||
|| ![_layerClass isSubclassOfClass:[_ASDisplayLayer class]];
|
||||
setFlag(Synchronous, isSynchronous);
|
||||
|
||||
|
||||
_contentsScaleForDisplay = ASScreenScale();
|
||||
_drawingPriority = ASDefaultDrawingPriority;
|
||||
|
||||
|
||||
@@ -173,6 +173,28 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
||||
|
||||
@end
|
||||
|
||||
@interface ASSynchronousTestDisplayNodeViaViewClass : ASDisplayNode
|
||||
@end
|
||||
|
||||
@implementation ASSynchronousTestDisplayNodeViaViewClass
|
||||
|
||||
+ (Class)viewClass {
|
||||
return [UIView class];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface ASSynchronousTestDisplayNodeViaLayerClass : ASDisplayNode
|
||||
@end
|
||||
|
||||
@implementation ASSynchronousTestDisplayNodeViaLayerClass
|
||||
|
||||
+ (Class)layerClass {
|
||||
return [CALayer class];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface UIDisplayNodeTestView : UIView
|
||||
@end
|
||||
|
||||
@@ -2354,4 +2376,16 @@ static bool stringContainsPointer(NSString *description, id p) {
|
||||
XCTAssertEqual(ASScreenScale(), UIScreen.mainScreen.scale);
|
||||
}
|
||||
|
||||
- (void)testThatIfViewClassIsOverwrittenItsSynchronous
|
||||
{
|
||||
ASSynchronousTestDisplayNodeViaViewClass *node = [[ASSynchronousTestDisplayNodeViaViewClass alloc] init];
|
||||
XCTAssertTrue([node isSynchronous], @"Node should be synchronous if viewClass is ovewritten and not a subclass of _ASDisplayView");
|
||||
}
|
||||
|
||||
- (void)testThatIfLayerClassIsOverwrittenItsSynchronous
|
||||
{
|
||||
ASSynchronousTestDisplayNodeViaLayerClass *node = [[ASSynchronousTestDisplayNodeViaLayerClass alloc] init];
|
||||
XCTAssertTrue([node isSynchronous], @"Node should be synchronous if viewClass is ovewritten and not a subclass of _ASDisplayView");
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user