From: Jay Freeman (saurik) Date: Thu, 20 Sep 2012 20:38:39 +0000 (+0000) Subject: Support iOS 6 WBMarkup and fix rectangle bounding. X-Git-Tag: v0.9.3906~6 X-Git-Url: https://git.saurik.com/winterboard.git/commitdiff_plain/09ea4166f344fa4ee00893a48ae7bd07022ea9f5 Support iOS 6 WBMarkup and fix rectangle bounding. --- diff --git a/WBMarkup.mm b/WBMarkup.mm index 9550114..73066d4 100644 --- a/WBMarkup.mm +++ b/WBMarkup.mm @@ -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