]> git.saurik.com Git - winterboard.git/commitdiff
Support iOS 6 WBMarkup and fix rectangle bounding.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 20 Sep 2012 20:38:39 +0000 (20:38 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 20 Sep 2012 20:38:39 +0000 (20:38 +0000)
WBMarkup.mm

index 9550114884d79a9be578008fc21d748bb4b2d888..73066d4a7854a12cbac18859ec3e57b417ee6575 100644 (file)
@@ -43,7 +43,11 @@ extern "C" {
 - (DOMDocument *) DOMDocument;
 @end
 
-@interface WebView : NSObject
+@interface WAKView : NSObject
+- (void) _drawRect:(CGRect)rect context:(CGContext *)context lockFocus:(bool)focus;
+@end
+
+@interface WebView : WAKView
 - (id) initWithFrame:(CGRect)frame;
 - (WebFrame *) mainFrame;
 - (void) setDrawsBackground:(BOOL)value;
@@ -101,6 +105,25 @@ static WBMarkup *SharedMarkup_;
     [super dealloc];
 }
 
+- (void) drawRect:(CGRect)rect {
+    [text_ setScrollXOffset:origin_.x scrollYOffset:origin_.y];
+
+    CGRect draw(CGRectMake(0, 0, rect.size.width - rect.origin.x, rect.size.height - rect.origin.y));
+
+    CGContextSaveGState(context_); {
+        CGContextTranslateCTM(context_, rect.origin.x, rect.origin.y);
+
+        if (kCFCoreFoundationVersionNumber > 700)
+            [view_ _drawRect:draw context:context_ lockFocus:YES];
+        else {
+            WKView *view([view_ _viewRef]);
+            WKViewLockFocus(view); {
+                WKViewDisplayRect(view, draw);
+            } WKViewUnlockFocus(view);
+        }
+    } CGContextRestoreGState(context_);
+}
+
 - (WebView *) _webView {
     return view_;
 }
@@ -222,17 +245,7 @@ static WBMarkup *SharedMarkup_;
 
     [[view_ mainFrame] forceLayoutAdjustingViewSize:YES];
 
-    [text_ setScrollXOffset:origin_.x scrollYOffset:origin_.y];
-
-    WKView *view([view_ _viewRef]);
-
-    CGContextSaveGState(context_); {
-        CGContextTranslateCTM(context_, rect.origin.x, rect.origin.y);
-
-        WKViewLockFocus(view); {
-            WKViewDisplayRect(view, CGRectMake(0, 0, rect.origin.x, rect.origin.y));
-        } WKViewUnlockFocus(view);
-    } CGContextRestoreGState(context_);
+    [self drawRect:rect];
 }
 
 - (void) drawString:(NSString *)string atPoint:(CGPoint)point withStyle:(NSString *)style {
@@ -254,17 +267,7 @@ static WBMarkup *SharedMarkup_;
     [self _setupWithStyle:style width:CGRectGetWidth(rect) height:CGRectGetHeight(rect)];
     [frame forceLayoutAdjustingViewSize:YES];
 
-    [text_ setScrollXOffset:origin_.x scrollYOffset:origin_.y];
-
-    WKView *view([view_ _viewRef]);
-
-    CGContextSaveGState(context_); {
-        CGContextTranslateCTM(context_, rect.origin.x, rect.origin.y);
-
-        WKViewLockFocus(view); {
-            WKViewDisplayRect(view, CGRectMake(0, 0, rect.size.width, rect.size.height));
-        } WKViewUnlockFocus(view);
-    } CGContextRestoreGState(context_);
+    [self drawRect:rect];
 }
 
 @end