]> git.saurik.com Git - winterboard.git/blobdiff - Library.mm
Support @2x~ipad suffixes correctly on the iPad 3.
[winterboard.git] / Library.mm
index 54dfec6866017cd6fae72c3e29d82f4dd233356e..bd04b82aee2db8880eec5f4fb299168cc1ad1ab7 100644 (file)
@@ -122,6 +122,7 @@ MSMetaClassHook(UIImage)
 MSClassHook(UINavigationBar)
 MSClassHook(UIToolbar)
 MSClassHook(UIStatusBarTimeItemView)
+MSClassHook(UIWebDocumentView)
 
 MSClassHook(CKBalloonView)
 MSClassHook(CKMessageCell)
@@ -162,6 +163,7 @@ MSClassHook(SBWidgetApplicationIcon)
 extern "C" void WKSetCurrentGraphicsContext(CGContextRef);
 
 static struct MSFixClass { MSFixClass() {
+    $UIWebDocumentView = objc_getClass("UIWebBrowserView") ?: $UIWebDocumentView;
     $SBIcon = objc_getClass("SBIconView") ?: $SBIcon;
 
     if ($SBIconList == nil)
@@ -267,8 +269,7 @@ static NSArray *$useScale$(NSArray *files, bool use = true) {
         if (use) {
             if (Scale_ == 2) {
                 [scaled addObject:[NSString stringWithFormat:@"%@@2x~%@.%@", base, idiom, extension]];
-                if (!IsWild_)
-                    [scaled addObject:[NSString stringWithFormat:@"%@@2x.%@", base, extension]];
+                [scaled addObject:[NSString stringWithFormat:@"%@@2x.%@", base, extension]];
             }
 
             [scaled addObject:[NSString stringWithFormat:@"%@~%@.%@", base, idiom, extension]];
@@ -276,20 +277,20 @@ static NSArray *$useScale$(NSArray *files, bool use = true) {
             // if (!IsWild_) <- support old themes
             [scaled addObject:file];
         } else if ([base hasSuffix: @"@2x"]) {
-            [scaled addObject:[NSString stringWithFormat:@"%@~iphone.%@", base, extension]];
+            [scaled addObject:[NSString stringWithFormat:@"%@~%@.%@", base, idiom, extension]];
             [scaled addObject:file];
 
             // XXX: this actually can't be used, as the person loading the file doesn't realize that the @2x changed
             /*NSString *rest([base substringWithRange:NSMakeRange(0, [base length] - 3)]);
-            [scaled addObject:[NSString stringWithFormat:@"%@~iphone.%@", rest, extension]];
+            [scaled addObject:[NSString stringWithFormat:@"%@~%@.%@", rest, idiom, extension]];
             [scaled addObject:[rest stringByAppendingPathExtension:extension]];*/
         } else {
             // XXX: this code isn't really complete
 
             [scaled addObject:file];
 
-            if ([base hasSuffix:@"~iphone"])
-                [scaled addObject:[[base substringWithRange:NSMakeRange(0, [base length] - 7)] stringByAppendingPathExtension:extension]];
+            if ([base hasSuffix:[NSString stringWithFormat:@"~%@", idiom]])
+                [scaled addObject:[[base substringWithRange:NSMakeRange(0, [base length] - 1 - [idiom length])] stringByAppendingPathExtension:extension]];
         }
     }
 
@@ -339,6 +340,8 @@ static NSString *$pathForFile$inBundle$(NSString *file, NSBundle *bundle, bool u
         NSString *base([folder stringByDeletingPathExtension]);
         if ([base hasSuffix:@"~iphone"])
             [names addObject:[NSString stringWithFormat:@"Folders/%@.%@/%@", [base substringWithRange:NSMakeRange(0, [base length] - 7)], [folder pathExtension], file]];
+        if ([base hasSuffix:@"~ipad"])
+            [names addObject:[NSString stringWithFormat:@"Folders/%@.%@/%@", [base substringWithRange:NSMakeRange(0, [base length] - 5)], [folder pathExtension], file]];
     }
     if (ui)
         [names addObject:[NSString stringWithFormat:@"UIImages/%@", file]];
@@ -868,7 +871,7 @@ MSInstanceMessageHook1(CGSize, NSString, sizeWithFont, UIFont *, font) {
 }
 
 MSInstanceMessageHook1(UIImage *, SBIconBadgeFactory, checkoutBadgeImageForText, NSString *, text) {
-    WBStringDrawingState badgeState = {NULL, 1, @""
+    WBStringDrawingState badgeState = {NULL, -1, @""
     , @"BadgeStyle"};
 
     stringDrawingState_ = &badgeState;
@@ -1202,7 +1205,7 @@ MSInstanceMessageHook0(id, SBUIController, init) {
         if (NSString *path = $getTheme$([NSArray arrayWithObject:@"Wallpaper.html"], themes)) {
             CGRect bounds = [indirect bounds];
 
-            UIWebDocumentView *view([[[UIWebDocumentView alloc] initWithFrame:bounds] autorelease]);
+            UIWebDocumentView *view([[[$UIWebDocumentView alloc] initWithFrame:bounds] autorelease]);
             [view setAutoresizes:true];
 
             WallpaperPage_ = [view retain];
@@ -1225,7 +1228,7 @@ MSInstanceMessageHook0(id, SBUIController, init) {
         if ([Manager_ fileExistsAtPath:html]) {
             CGRect bounds = [indirect bounds];
 
-            UIWebDocumentView *view([[[UIWebDocumentView alloc] initWithFrame:bounds] autorelease]);
+            UIWebDocumentView *view([[[$UIWebDocumentView alloc] initWithFrame:bounds] autorelease]);
             [view setAutoresizes:true];
 
             NSURL *url = [NSURL fileURLWithPath:html];
@@ -1256,7 +1259,7 @@ MSHook(void, SBAwayView$updateDesktopImage$, SBAwayView *self, SEL sel, UIImage
     if (path != nil) {
         CGRect bounds = [self bounds];
 
-        UIWebDocumentView *view([[[UIWebDocumentView alloc] initWithFrame:bounds] autorelease]);
+        UIWebDocumentView *view([[[$UIWebDocumentView alloc] initWithFrame:bounds] autorelease]);
         [view setAutoresizes:true];
 
         if (WallpaperPage_ != nil)
@@ -1927,7 +1930,7 @@ static void ChangeWallpaper(
 }
 
 #define WBRename(name, sel, imp) \
-    _ ## name ## $ ## imp = MSHookMessage($ ## name, @selector(sel), &$ ## name ## $ ## imp)
+    MSHookMessage($ ## name, @selector(sel), &$ ## name ## $ ## imp, &_ ## name ## $ ## imp)
 
 template <typename Type_>
 static void msset(Type_ &function, MSImageRef image, const char *name) {
@@ -1963,7 +1966,7 @@ static void NSString$drawAtPoint$withStyle$(NSString *self, SEL _cmd, CGPoint po
     WKSetCurrentGraphicsContext(UIGraphicsGetCurrentContext());
     if (style == nil || [style length] == 0)
         style = @"font-family: Helvetica; font-size: 12px";
-    //NSLog(@"XXX:draw(%@)", [style stringByReplacingOccurrencesOfString:@"\n" withString:@" "]);
+    //NSLog(@"XXX:drawP(%@)", [style stringByReplacingOccurrencesOfString:@"\n" withString:@" "]);
     return [[WBMarkup sharedMarkup] drawString:self atPoint:point withStyle:style];
 }
 
@@ -1971,6 +1974,7 @@ static void NSString$drawInRect$withStyle$(NSString *self, SEL _cmd, CGRect rect
     WKSetCurrentGraphicsContext(UIGraphicsGetCurrentContext());
     if (style == nil || [style length] == 0)
         style = @"font-family: Helvetica; font-size: 12px";
+    //NSLog(@"XXX:drawR(%@)", [style stringByReplacingOccurrencesOfString:@"\n" withString:@" "]);
     return [[WBMarkup sharedMarkup] drawString:self inRect:rect withStyle:style];
 }