From ffeba70599c7357f19484051810839c7f6c9cef5 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Thu, 13 Mar 2014 17:09:00 +0000 Subject: [PATCH] adding 10.5 compatibility again git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76143 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/osx/carbon/graphics.cpp | 43 +++++++++++++++++++++++++----------- src/osx/carbon/utilscocoa.mm | 10 +++++++-- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/src/osx/carbon/graphics.cpp b/src/osx/carbon/graphics.cpp index d4bbc310f2..c2aabf584f 100644 --- a/src/osx/carbon/graphics.cpp +++ b/src/osx/carbon/graphics.cpp @@ -2250,20 +2250,37 @@ void wxMacCoreGraphicsContext::DrawIcon( const wxIcon &icon, wxDouble x, wxDoubl if (m_composition == wxCOMPOSITION_DEST) return; -#if wxOSX_USE_CARBON - CGContextSaveGState( m_cgContext ); - CGContextTranslateCTM( m_cgContext,(CGFloat) x ,(CGFloat) (y + h) ); - CGContextScaleCTM( m_cgContext, 1, -1 ); - CGRect r = CGRectMake( (CGFloat) 0.0 , (CGFloat) 0.0 , (CGFloat) w , (CGFloat) h ); - PlotIconRefInContext( m_cgContext , &r , kAlignNone , kTransformNone , - NULL , kPlotIconRefNormalFlags , icon.GetHICON() ); - CGContextRestoreGState( m_cgContext ); -#elif wxOSX_USE_COCOA - CGRect r = CGRectMake( (CGFloat) x , (CGFloat) y , (CGFloat) w , (CGFloat) h ); - const WX_NSImage nsImage = icon.GetNSImage(); + // the carbon version must be used on 10.5, or if the SDK is 10.5 +#if wxOSX_USE_CARBON || ( wxOSX_USE_COCOA && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 ) +#if wxOSX_USE_COCOA +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + if ( UMAGetSystemVersion() < 0x1060 ) +#endif + { +#endif // wxOSX_USE_COCOA + CGContextSaveGState( m_cgContext ); + CGContextTranslateCTM( m_cgContext,(CGFloat) x ,(CGFloat) (y + h) ); + CGContextScaleCTM( m_cgContext, 1, -1 ); + CGRect r = CGRectMake( (CGFloat) 0.0 , (CGFloat) 0.0 , (CGFloat) w , (CGFloat) h ); + PlotIconRefInContext( m_cgContext , &r , kAlignNone , kTransformNone , + NULL , kPlotIconRefNormalFlags , icon.GetHICON() ); + CGContextRestoreGState( m_cgContext ); +#if wxOSX_USE_COCOA + } +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + else +#endif +#endif // wxOSX_USE_COCOA +#endif // wxOSX_USE_CARBON || ( wxOSX_USE_COCOA && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 ) + +#if wxOSX_USE_COCOA && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + { + CGRect r = CGRectMake( (CGFloat) x , (CGFloat) y , (CGFloat) w , (CGFloat) h ); + const WX_NSImage nsImage = icon.GetNSImage(); - CGImageRef cgImage = wxOSXGetCGImageFromNSImage( nsImage , &r, m_cgContext ); - wxMacDrawCGImage( m_cgContext, &r, cgImage); + CGImageRef cgImage = wxOSXGetCGImageFromNSImage( nsImage , &r, m_cgContext ); + wxMacDrawCGImage( m_cgContext, &r, cgImage); + } #endif CheckInvariants(); diff --git a/src/osx/carbon/utilscocoa.mm b/src/osx/carbon/utilscocoa.mm index b81af0e165..85944769c6 100644 --- a/src/osx/carbon/utilscocoa.mm +++ b/src/osx/carbon/utilscocoa.mm @@ -456,10 +456,16 @@ WX_NSImage WXDLLIMPEXP_CORE wxOSXGetNSImageFromIconRef( WXHICON iconref ) CGImageRef WXDLLIMPEXP_CORE wxOSXGetCGImageFromNSImage( WX_NSImage nsimage, CGRect* r, CGContextRef cg) { - NSRect nsRect = NSRectFromCGRect(*r); - return [nsimage CGImageForProposedRect:&nsRect +#if wxOSX_USE_COCOA && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + if ( UMAGetSystemVersion() >= 0x1060 ) + { + NSRect nsRect = NSRectFromCGRect(*r); + return [nsimage CGImageForProposedRect:&nsRect context:[NSGraphicsContext graphicsContextWithGraphicsPort:cg flipped:YES] hints:nil]; + } +#endif + return NULL; } CGContextRef WXDLLIMPEXP_CORE wxOSXCreateBitmapContextFromNSImage( WX_NSImage nsimage)