GLEGram 12.5 — Initial public release

Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
This commit is contained in:
Leeksov
2026-04-06 09:48:12 +03:00
commit 4647310322
39685 changed files with 11052678 additions and 0 deletions
@@ -0,0 +1,66 @@
#import <LegacyComponents/TGModernGalleryScrollView.h>
@interface TGModernGalleryScrollView ()
{
bool _suspendBoundsUpdates;
}
@end
@implementation TGModernGalleryScrollView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self != nil)
{
self.showsHorizontalScrollIndicator = false;
self.showsVerticalScrollIndicator = false;
self.pagingEnabled = true;
self.clipsToBounds = false;
}
return self;
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *view = [super hitTest:point withEvent:event];
bool shouldScroll = true;
id<TGModernGalleryScrollViewDelegate> delegate = self.scrollDelegate;
if ([delegate respondsToSelector:@selector(scrollViewShouldScrollWithTouchAtPoint:)])
shouldScroll = [delegate scrollViewShouldScrollWithTouchAtPoint:point];
self.scrollEnabled = shouldScroll;
return view;
}
- (void)setBounds:(CGRect)bounds
{
[super setBounds:bounds];
if (!_suspendBoundsUpdates)
{
id<TGModernGalleryScrollViewDelegate> scrollDelegate = _scrollDelegate;
[scrollDelegate scrollViewBoundsChanged:bounds];
}
}
- (void)setFrameAndBoundsInTransaction:(CGRect)frame bounds:(CGRect)bounds
{
_suspendBoundsUpdates = true;
self.frame = frame;
self.bounds = bounds;
_suspendBoundsUpdates = false;
id<TGModernGalleryScrollViewDelegate> scrollDelegate = _scrollDelegate;
[scrollDelegate scrollViewBoundsChanged:bounds];
}
- (void)layoutSubviews
{
[super layoutSubviews];
}
@end