_itv = true; \
_ltv = _ctv; \
} \
- NSLog(@"%lu.%.6u[%f]:_trace()@%s:%u[%s]\n", \
+ NSLog(@"%lu.%.6u[%f]:WB:_trace()@%s:%u[%s]\n", \
_ctv.tv_sec, _ctv.tv_usec, \
(_ctv.tv_sec - _ltv.tv_sec) + (_ctv.tv_usec - _ltv.tv_usec) / 1000000.0, \
__FILE__, __LINE__, __FUNCTION__\
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();
[[self contentView] wb$setBackgroundColor:[UIColor clearColor]];
}
+// iOS >= 5.0
MSInstanceMessageHook2(id, CKTranscriptCell, initWithStyle,reuseIdentifier, int, style, NSString *, reuse) {
if ((self = MSOldCall(style, reuse)) != nil) {
[self setBackgroundColor:[UIColor clearColor]];
} return self;
}
+// iOS << 5.0
MSInstanceMessageHook2(id, CKMessageCell, initWithStyle,reuseIdentifier, int, style, NSString *, reuse) {
if ((self = MSOldCall(style, reuse)) != nil) {
[self setBackgroundColor:[UIColor clearColor]];
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(),