MSClassHook(UINavigationBar)
MSClassHook(UIToolbar)
+MSClassHook(CKBalloonView)
MSClassHook(CKMessageCell)
MSClassHook(CKTimestampView)
MSClassHook(CKTranscriptCell)
}
static NSArray *$useScale$(NSArray *files, bool use = true) {
- if (Scale_ == 0) {
+ if (use && Scale_ == 0) {
UIScreen *screen([UIScreen mainScreen]);
if ([screen respondsToSelector:@selector(scale)])
Scale_ = [screen scale];
static NSArray *Wallpapers_;
static bool Papered_;
static bool Docked_;
+static bool SMSBackgrounded_;
static NSString *WallpaperFile_;
static UIImageView *WallpaperImage_;
static UIWebDocumentView *WallpaperPage_;
}
// ChatKit {{{
+MSInstanceMessageHook2(id, CKBalloonView, initWithFrame,delegate, CGRect, frame, id, delegate) {
+ if ((self = MSOldCall(frame, delegate)) != nil) {
+ [self setBackgroundColor:[UIColor clearColor]];
+ } return self;
+}
+
+MSInstanceMessageHook0(BOOL, CKBalloonView, _canUseLayerBackedBalloon) {
+ return SMSBackgrounded_ ? NO : MSOldCall();
+}
+
MSInstanceMessageHook0(void, CKTranscriptHeaderView, layoutSubviews) {
[self wb$setBackgroundColor:[UIColor clearColor]];
return MSOldCall();
if (NSString *path = $getTheme$($useScale$([NSArray arrayWithObjects:@"SMSBackground.png", @"SMSBackground.jpg", nil])))
if (UIImage *image = $getImage$(path)) {
+ SMSBackgrounded_ = true;
+
UIView *&_transcriptTable(MSHookIvar<UIView *>(self, "_transcriptTable"));
UIView *&_transcriptLayer(MSHookIvar<UIView *>(self, "_transcriptLayer"));
UIView *table;
if (SpringBoard_) {
Wallpapers_ = [[NSArray arrayWithObjects:@"Wallpaper.mp4", @"Wallpaper@2x.png", @"Wallpaper@2x.jpg", @"Wallpaper.png", @"Wallpaper.jpg", @"Wallpaper.html", nil] retain];
Papered_ = $getTheme$(Wallpapers_) != nil;
- Docked_ = $getTheme$([NSArray arrayWithObjects:@"Dock.png", nil]);
+ Docked_ = $getTheme$([NSArray arrayWithObjects:@"Dock.png", nil]) != nil;
CFNotificationCenterAddObserver(
CFNotificationCenterGetDarwinNotifyCenter(),