changeset 1779:f77b76c86d19

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+.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 19 Jul 2012 06:01:30 +0000
parents e71ab68198ce
children d1f65efea6b1
files mac/dw.m
diffstat 1 files changed, 27 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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];
 }