mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
[ASCellNode] Final revisions to behavior of setSelected: & setHighlighted:
This commit is contained in:
@@ -46,4 +46,7 @@
|
||||
*/
|
||||
@property (nonatomic, weak) UIScrollView *scrollView;
|
||||
|
||||
- (void)__setSelectedFromUIKit:(BOOL)selected;
|
||||
- (void)__setHighlightedFromUIKit:(BOOL)highlighted;
|
||||
|
||||
@end
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
ASDisplayNodeDidLoadBlock _viewControllerDidLoadBlock;
|
||||
ASDisplayNode *_viewControllerNode;
|
||||
UIViewController *_viewController;
|
||||
BOOL _suspendInteractionDelegate;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -182,16 +183,38 @@
|
||||
{
|
||||
if (_selected != selected) {
|
||||
_selected = selected;
|
||||
[_interactionDelegate nodeSelectedStateDidChange:self];
|
||||
if (!_suspendInteractionDelegate) {
|
||||
[_interactionDelegate nodeSelectedStateDidChange:self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setHighlighted:(BOOL)highlighted
|
||||
{
|
||||
if (_highlighted != highlighted) {
|
||||
_highlighted = highlighted;
|
||||
_highlighted = highlighted;
|
||||
if (!_suspendInteractionDelegate) {
|
||||
[_interactionDelegate nodeHighlightedStateDidChange:self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)__setSelectedFromUIKit:(BOOL)selected;
|
||||
{
|
||||
if (selected != _selected) {
|
||||
_suspendInteractionDelegate = YES;
|
||||
self.selected = selected;
|
||||
_suspendInteractionDelegate = NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)__setHighlightedFromUIKit:(BOOL)highlighted;
|
||||
{
|
||||
if (highlighted != _highlighted) {
|
||||
_suspendInteractionDelegate = YES;
|
||||
self.highlighted = highlighted;
|
||||
_suspendInteractionDelegate = NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)selected
|
||||
|
||||
@@ -43,31 +43,23 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
|
||||
{
|
||||
_node = node;
|
||||
if (node.selected != self.selected) {
|
||||
node.selected = self.selected;
|
||||
[node __setSelectedFromUIKit:self.selected];
|
||||
}
|
||||
if (node.highlighted != self.highlighted) {
|
||||
node.highlighted = self.highlighted;
|
||||
[node __setHighlightedFromUIKit:self.highlighted];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setSelected:(BOOL)selected
|
||||
{
|
||||
if (selected != self.selected) {
|
||||
[super setSelected:selected];
|
||||
}
|
||||
if (selected != _node.selected) {
|
||||
_node.selected = selected;
|
||||
}
|
||||
[super setSelected:selected];
|
||||
[_node __setSelectedFromUIKit:selected];
|
||||
}
|
||||
|
||||
- (void)setHighlighted:(BOOL)highlighted
|
||||
{
|
||||
if (highlighted != self.highlighted) {
|
||||
[super setHighlighted:highlighted];
|
||||
}
|
||||
if (highlighted != _node.highlighted) {
|
||||
_node.highlighted = highlighted;
|
||||
}
|
||||
[super setHighlighted:highlighted];
|
||||
[_node __setHighlightedFromUIKit:highlighted];
|
||||
}
|
||||
|
||||
- (void)prepareForReuse
|
||||
|
||||
@@ -68,31 +68,23 @@ static NSString * const kCellReuseIdentifier = @"_ASTableViewCell";
|
||||
{
|
||||
_node = node;
|
||||
if (node.selected != self.selected) {
|
||||
node.selected = self.selected;
|
||||
[node __setSelectedFromUIKit:self.selected];
|
||||
}
|
||||
if (node.highlighted != self.highlighted) {
|
||||
node.highlighted = self.highlighted;
|
||||
[node __setHighlightedFromUIKit:self.highlighted];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
|
||||
{
|
||||
if (selected != self.selected) {
|
||||
[super setSelected:selected animated:animated];
|
||||
}
|
||||
if (selected != _node.selected) {
|
||||
_node.selected = selected;
|
||||
}
|
||||
[super setSelected:selected animated:animated];
|
||||
[_node __setSelectedFromUIKit:selected];
|
||||
}
|
||||
|
||||
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
|
||||
{
|
||||
if (highlighted != self.highlighted) {
|
||||
[super setHighlighted:highlighted animated:animated];
|
||||
}
|
||||
if (highlighted != _node.highlighted) {
|
||||
_node.highlighted = highlighted;
|
||||
}
|
||||
[super setHighlighted:highlighted animated:animated];
|
||||
[_node __setHighlightedFromUIKit:highlighted];
|
||||
}
|
||||
|
||||
- (void)prepareForReuse
|
||||
|
||||
@@ -179,9 +179,8 @@
|
||||
[testController.collectionView deselectItemAtIndexPath:indexPath animated:NO];
|
||||
XCTAssertTrue(node.isSelected == NO, @"Deselecting cell should update node selection.");
|
||||
|
||||
// selecting cell should select node
|
||||
UICollectionViewCell *cell = [testController.collectionView cellForItemAtIndexPath:indexPath];
|
||||
cell.selected = YES;
|
||||
// select the cell again, scroll down and back up, and check that the state persisted
|
||||
[testController.collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];
|
||||
XCTAssertTrue(node.isSelected == YES, @"Selecting cell should update node selection.");
|
||||
|
||||
// reload cell (-prepareForReuse is called) & check that selected state is preserved
|
||||
@@ -192,7 +191,7 @@
|
||||
XCTAssertTrue(node.isSelected == YES, @"Reloaded cell should preserve state.");
|
||||
|
||||
// deselecting cell should deselect node
|
||||
cell = [testController.collectionView cellForItemAtIndexPath:indexPath];
|
||||
UICollectionViewCell *cell = [testController.collectionView cellForItemAtIndexPath:indexPath];
|
||||
cell.selected = NO;
|
||||
XCTAssertTrue(node.isSelected == NO, @"Deselecting cell should update node selection.");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user