# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1342677690 0 # Node ID f77b76c86d19775b7d5c0c3a70b5c450e1db2e02 # Parent e71ab68198ce6a79848729f81cbf463dd5608f2f Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher... So test for methods and keep using compositeToPoint on 10.5 and use drawInRect on 10.6+. diff -r e71ab68198ce -r f77b76c86d19 mac/dw.m --- a/mac/dw.m Tue Jul 17 23:00:26 2012 +0000 +++ b/mac/dw.m Thu Jul 19 06:01:30 2012 +0000 @@ -1596,6 +1596,7 @@ { NSSize imageSize; NSRect imageFrame; + SEL sdir = NSSelectorFromString(@"drawInRect:fromRect:operation:fraction:respectFlipped:hints:"); imageSize = [image size]; NSDivideRect(cellFrame, &imageFrame, &cellFrame, 3 + imageSize.width, NSMinXEdge); @@ -1606,9 +1607,33 @@ } imageFrame.origin.x += 3; imageFrame.size = imageSize; - imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2); - [image drawInRect:imageFrame fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil]; + /* New method for 10.6 and later */ + if([image respondsToSelector:sdir]) + { + IMP idir = [image methodForSelector:sdir]; + + imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2); + + idir(image, sdir, imageFrame, NSZeroRect, NSCompositeSourceOver, 1.0, YES, nil); + } + else + { + /* Old method for 10.5 */ + SEL sctp = NSSelectorFromString(@"compositeToPoint:operation:"); + + if ([controlView isFlipped]) + imageFrame.origin.y += ceil((cellFrame.size.height + imageFrame.size.height) / 2); + else + imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2); + + if([image respondsToSelector:sctp]) + { + IMP ictp = [image methodForSelector:sctp]; + + ictp(image, sctp, imageFrame.origin, NSCompositeSourceOver); + } + } } [super drawWithFrame:cellFrame inView:controlView]; }