Fix disabled check button glitches

This commit is contained in:
Ali 2019-11-02 22:59:49 +04:00
parent ff1c7ed2c4
commit 9978ef6725
4 changed files with 19 additions and 12 deletions

View File

@ -6,6 +6,7 @@
@interface TGAttachmentAssetCell ()
{
SMetaDisposable *_itemSelectedDisposable;
bool _ignoreSetSelected;
}
@end
@ -126,14 +127,16 @@
- (void)checkButtonPressed
{
[_checkButton setSelected:!_checkButton.selected animated:true];
_ignoreSetSelected = true;
[self.selectionContext setItem:(id<TGMediaSelectableItem>)self.asset selected:_checkButton.selected animated:false sender:_checkButton];
[self.selectionContext setItem:(id<TGMediaSelectableItem>)self.asset selected:!_checkButton.selected animated:true sender:_checkButton];
bool value = [self.selectionContext isItemSelected:(id<TGMediaSelectableItem>)self.asset];
if (value != _checkButton.selected) {
[_checkButton setSelected:value animated:false];
[_checkButton setSelected:value animated:true];
}
_ignoreSetSelected = false;
}
- (void)setChecked:(bool)checked animated:(bool)animated

View File

@ -483,7 +483,7 @@ static CGAffineTransform TGCheckButtonDefaultTransform;
{
_numberLabel = [[UILabel alloc] init];
_numberLabel.backgroundColor = [UIColor clearColor];
_numberLabel.frame = CGRectMake(0.0f, -TGScreenPixel, _wrapperView.frame.size.width, _wrapperView.frame.size.height);
_numberLabel.frame = CGRectMake(0.0f, -TGScreenPixel, _wrapperView.bounds.size.width, _wrapperView.bounds.size.height);
_numberLabel.textColor = _checkColor;
_numberLabel.textAlignment = NSTextAlignmentCenter;
_numberLabel.userInteractionEnabled = false;

View File

@ -96,8 +96,7 @@
- (void)checkButtonPressed
{
[_checkButton setSelected:!_checkButton.selected animated:true];
[self.selectionContext setItem:(id<TGMediaSelectableItem>)self.item selected:_checkButton.selected animated:false sender:_checkButton];
[self.selectionContext setItem:(id<TGMediaSelectableItem>)self.item selected:!_checkButton.selected animated:false sender:_checkButton];
bool value = [self.selectionContext isItemSelected:(id<TGMediaSelectableItem>)self.item];
if (value != _checkButton.selected) {
[_checkButton setSelected:value animated:true];

View File

@ -64,6 +64,7 @@
TGModernButton *_muteButton;
TGCheckButtonView *_checkButton;
bool _ignoreSetSelected;
TGMediaPickerPhotoCounterButton *_photoCounterButton;
TGMediaPickerGroupButton *_groupButton;
TGMediaPickerCameraButton *_cameraButton;
@ -531,7 +532,9 @@
if ([_currentItem conformsToProtocol:@protocol(TGModernGallerySelectableItem)])
selectableItem = ((id<TGModernGallerySelectableItem>)_currentItem).selectableMediaItem;
if (!_ignoreSetSelected) {
[_checkButton setSelected:[_selectionContext isItemSelected:selectableItem] animated:false];
}
[_checkButton setNumber:[_selectionContext indexOfItem:selectableItem]];
signal = [_selectionContext itemInformativeSelectedSignal:selectableItem];
[_itemSelectedDisposable setDisposable:[signal startWithNext:^(TGMediaSelectionChange *next)
@ -669,15 +672,17 @@
if ([_currentItem conformsToProtocol:@protocol(TGModernGallerySelectableItem)])
selectableItem = ((id<TGModernGallerySelectableItem>)_currentItem).selectableMediaItem;
[_checkButton setSelected:!_checkButton.selected animated:true];
_ignoreSetSelected = true;
if (selectableItem != nil) {
[_selectionContext setItem:selectableItem selected:_checkButton.selected animated:animated sender:_checkButton];
[_selectionContext setItem:selectableItem selected:!_checkButton.selected animated:animated sender:_checkButton];
bool value = [_selectionContext isItemSelected:selectableItem];
if (value != _checkButton.selected) {
[_checkButton setSelected:value animated:true];
} else {
[_checkButton setSelected:!_checkButton.selected animated:true];
}
}
_ignoreSetSelected = false;
}
- (void)photoCounterButtonPressed