diff --git a/submodules/TelegramUI/Components/AnimationCache/Sources/AnimationCache.swift b/submodules/TelegramUI/Components/AnimationCache/Sources/AnimationCache.swift index efb5fd4379..93d442d7f9 100644 --- a/submodules/TelegramUI/Components/AnimationCache/Sources/AnimationCache.swift +++ b/submodules/TelegramUI/Components/AnimationCache/Sources/AnimationCache.swift @@ -456,6 +456,10 @@ private final class AnimationCacheItemWriterImpl: AnimationCacheItemWriter { } func add(with drawingBlock: (AnimationCacheItemDrawingSurface) -> Double?, proposedWidth: Int, proposedHeight: Int) { + if proposedWidth == 0 || proposedHeight == 0 { + self.isFailed = true + return + } if self.isFailed || self.isFinished { return } diff --git a/submodules/TelegramUI/Resources/Animations/anim_botToKey.tgs b/submodules/TelegramUI/Resources/Animations/anim_botToKey.tgs deleted file mode 100644 index 20939237d6..0000000000 Binary files a/submodules/TelegramUI/Resources/Animations/anim_botToKey.tgs and /dev/null differ diff --git a/submodules/TelegramUI/Resources/Animations/anim_keyToBot.tgs b/submodules/TelegramUI/Resources/Animations/anim_keyToBot.tgs deleted file mode 100644 index 2cc3eed104..0000000000 Binary files a/submodules/TelegramUI/Resources/Animations/anim_keyToBot.tgs and /dev/null differ diff --git a/submodules/TelegramUI/Resources/Animations/anim_keyToSmile.tgs b/submodules/TelegramUI/Resources/Animations/anim_keyToSmile.tgs deleted file mode 100644 index 07c99e1a72..0000000000 Binary files a/submodules/TelegramUI/Resources/Animations/anim_keyToSmile.tgs and /dev/null differ diff --git a/submodules/TelegramUI/Resources/Animations/anim_keyToSticker.tgs b/submodules/TelegramUI/Resources/Animations/anim_keyToSticker.tgs deleted file mode 100644 index 8863943a7d..0000000000 Binary files a/submodules/TelegramUI/Resources/Animations/anim_keyToSticker.tgs and /dev/null differ diff --git a/submodules/TelegramUI/Resources/Animations/anim_botToKey.json b/submodules/TelegramUI/Resources/Animations/input_anim_botToKey.json similarity index 100% rename from submodules/TelegramUI/Resources/Animations/anim_botToKey.json rename to submodules/TelegramUI/Resources/Animations/input_anim_botToKey.json diff --git a/submodules/TelegramUI/Resources/Animations/anim_keyToBot.json b/submodules/TelegramUI/Resources/Animations/input_anim_keyToBot.json similarity index 100% rename from submodules/TelegramUI/Resources/Animations/anim_keyToBot.json rename to submodules/TelegramUI/Resources/Animations/input_anim_keyToBot.json diff --git a/submodules/TelegramUI/Resources/Animations/anim_keyToSmile.json b/submodules/TelegramUI/Resources/Animations/input_anim_keyToSmile.json similarity index 100% rename from submodules/TelegramUI/Resources/Animations/anim_keyToSmile.json rename to submodules/TelegramUI/Resources/Animations/input_anim_keyToSmile.json diff --git a/submodules/TelegramUI/Resources/Animations/anim_keyToSticker.json b/submodules/TelegramUI/Resources/Animations/input_anim_keyToSticker.json similarity index 100% rename from submodules/TelegramUI/Resources/Animations/anim_keyToSticker.json rename to submodules/TelegramUI/Resources/Animations/input_anim_keyToSticker.json diff --git a/submodules/TelegramUI/Resources/Animations/anim_smileToKey.json b/submodules/TelegramUI/Resources/Animations/input_anim_smileToKey.json similarity index 100% rename from submodules/TelegramUI/Resources/Animations/anim_smileToKey.json rename to submodules/TelegramUI/Resources/Animations/input_anim_smileToKey.json diff --git a/submodules/TelegramUI/Resources/Animations/anim_smiletosticker.json b/submodules/TelegramUI/Resources/Animations/input_anim_smileToSticker.json similarity index 100% rename from submodules/TelegramUI/Resources/Animations/anim_smiletosticker.json rename to submodules/TelegramUI/Resources/Animations/input_anim_smileToSticker.json diff --git a/submodules/TelegramUI/Resources/Animations/anim_stickerToKey.json b/submodules/TelegramUI/Resources/Animations/input_anim_stickerToKey.json similarity index 100% rename from submodules/TelegramUI/Resources/Animations/anim_stickerToKey.json rename to submodules/TelegramUI/Resources/Animations/input_anim_stickerToKey.json diff --git a/submodules/TelegramUI/Resources/Animations/anim_stickertosmile.json b/submodules/TelegramUI/Resources/Animations/input_anim_stickerToSmile.json similarity index 100% rename from submodules/TelegramUI/Resources/Animations/anim_stickertosmile.json rename to submodules/TelegramUI/Resources/Animations/input_anim_stickerToSmile.json diff --git a/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift b/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift index 8656ef430b..a5986e03e5 100644 --- a/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift @@ -207,60 +207,60 @@ private final class AccessoryItemIconButtonNode: HighlightTrackingButtonNode { case .keyboard: if let previousInputMode = previousInputMode { if case .stickers = previousInputMode { - animationName = "anim_stickerToKey" + animationName = "input_anim_stickerToKey" animationMode = .animating(loop: false) } else if case .emoji = previousInputMode { - animationName = "anim_smileToKey" + animationName = "input_anim_smileToKey" animationMode = .animating(loop: false) } else if case .bot = previousInputMode { - animationName = "anim_botToKey" + animationName = "input_anim_botToKey" animationMode = .animating(loop: false) } else { - animationName = "anim_stickerToKey" + animationName = "input_anim_stickerToKey" } } else { - animationName = "anim_stickerToKey" + animationName = "input_anim_stickerToKey" } case .stickers: if let previousInputMode = previousInputMode { if case .keyboard = previousInputMode { - animationName = "anim_keyToSticker" + animationName = "input_anim_keyToSticker" animationMode = .animating(loop: false) } else if case .emoji = previousInputMode { - animationName = "anim_smileToSticker" + animationName = "input_anim_smileToSticker" animationMode = .animating(loop: false) colorKeys = emojiColorKeys } else { - animationName = "anim_keyToSticker" + animationName = "input_anim_keyToSticker" } } else { - animationName = "anim_keyToSticker" + animationName = "input_anim_keyToSticker" } case .emoji: if let previousInputMode = previousInputMode { if case .keyboard = previousInputMode { - animationName = "anim_keyToSmile" + animationName = "input_anim_keyToSmile" animationMode = .animating(loop: false) } else if case .stickers = previousInputMode { - animationName = "anim_stickerToSmile" + animationName = "input_anim_stickerToSmile" animationMode = .animating(loop: false) colorKeys = emojiColorKeys } else { - animationName = "anim_keyToSmile" + animationName = "input_anim_keyToSmile" } } else { - animationName = "anim_keyToSmile" + animationName = "input_anim_keyToSmile" } case .bot: if let previousInputMode = previousInputMode { if case .keyboard = previousInputMode { - animationName = "anim_keyToBot" + animationName = "input_anim_keyToBot" animationMode = .animating(loop: false) } else { - animationName = "anim_keyToBot" + animationName = "input_anim_keyToBot" } } else { - animationName = "anim_keyToBot" + animationName = "input_anim_keyToBot" } } } else { diff --git a/submodules/UIKitRuntimeUtils/Source/UIKitRuntimeUtils/UIKitUtils.m b/submodules/UIKitRuntimeUtils/Source/UIKitRuntimeUtils/UIKitUtils.m index a58c63b7c8..9241d2297b 100644 --- a/submodules/UIKitRuntimeUtils/Source/UIKitRuntimeUtils/UIKitUtils.m +++ b/submodules/UIKitRuntimeUtils/Source/UIKitRuntimeUtils/UIKitUtils.m @@ -169,46 +169,31 @@ void applySmoothRoundedCornersImpl(CALayer * _Nonnull layer) { } } -/*@interface _UIPortalView : UIView - -@property(nonatomic, getter=_isGeometryFrozen, setter=_setGeometryFrozen:) _Bool _geometryFrozen; // @synthesize _geometryFrozen=__geometryFrozen; -@property(nonatomic) _Bool forwardsClientHitTestingToSourceView; // @synthesize forwardsClientHitTestingToSourceView=_forwardsClientHitTestingToSourceView; -@property(copy, nonatomic) NSString * _Nullable name; // @synthesize name=_name; -@property(nonatomic) __weak UIView * _Nullable sourceView; // @synthesize sourceView=_sourceView; -- (void)setCenter:(struct CGPoint)arg1; -- (void)setBounds:(struct CGRect)arg1; -- (void)setFrame:(struct CGRect)arg1; -- (void)setHidden:(_Bool)arg1; -@property(nonatomic) _Bool allowsHitTesting; // @dynamic allowsHitTesting; -@property(nonatomic) _Bool allowsBackdropGroups; // @dynamic allowsBackdropGroups; -@property(nonatomic) _Bool matchesPosition; // @dynamic matchesPosition; -@property(nonatomic) _Bool matchesTransform; // @dynamic matchesTransform; -@property(nonatomic) _Bool matchesAlpha; // @dynamic matchesAlpha; -@property(nonatomic) _Bool hidesSourceView; // @dynamic hidesSourceView; -- (instancetype _Nonnull)initWithFrame:(struct CGRect)arg1; -- (instancetype _Nonnull)initWithSourceView:(UIView * _Nullable)arg1; - -@end*/ - UIView * _Nullable makePortalView() { - static Class portalViewClass = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - portalViewClass = NSClassFromString([@[@"_", @"UI", @"Portal", @"View"] componentsJoinedByString:@""]); - }); - if (!portalViewClass) { + if (@available(iOS 12.0, *)) { + static Class portalViewClass = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + portalViewClass = NSClassFromString([@[@"_", @"UI", @"Portal", @"View"] componentsJoinedByString:@""]); + }); + if (!portalViewClass) { + return nil; + } + UIView *view = [[portalViewClass alloc] init]; + if (!view) { + return nil; + } + + if (@available(iOS 13.0, *)) { + view.forwardsClientHitTestingToSourceView = false; + } + view.matchesPosition = true; + view.matchesTransform = true; + view.matchesAlpha = false; + view.allowsHitTesting = false; + + return view; + } else { return nil; } - UIView *view = [[portalViewClass alloc] init]; - if (!view) { - return nil; - } - - view.forwardsClientHitTestingToSourceView = false; - view.matchesPosition = true; - view.matchesTransform = true; - view.matchesAlpha = false; - view.allowsHitTesting = false; - - return view; }