X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/899544330f37440c140b72a014c518a911b5b7a4..0c1cc9483ecba053bc9a0983a4a8d48898e334f2:/src/mac/carbon/overlay.cpp?ds=sidebyside diff --git a/src/mac/carbon/overlay.cpp b/src/mac/carbon/overlay.cpp index ec49a7fc9e..3ae300276a 100644 --- a/src/mac/carbon/overlay.cpp +++ b/src/mac/carbon/overlay.cpp @@ -105,7 +105,7 @@ OSStatus wxOverlayImpl::CreateOverlayWindow() return err; } -void wxOverlayImpl::Init( wxWindowDC* dc, int x , int y , int width , int height ) +void wxOverlayImpl::Init( wxDC* dc, int x , int y , int width , int height ) { wxASSERT_MSG( !IsOk() , _("You cannot Init an overlay twice") ); @@ -132,20 +132,28 @@ void wxOverlayImpl::Init( wxWindowDC* dc, int x , int y , int width , int height wxASSERT_MSG( err == noErr , _("Couldn't init the context on the overlay window") ); } -void wxOverlayImpl::BeginDrawing( wxWindowDC* dc) +void wxOverlayImpl::BeginDrawing( wxDC* dc) { - dc->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) ); - wxSize size = dc->GetSize() ; - dc->SetClippingRegion( 0 , 0 , size.x , size.y ) ; + wxDCImpl *impl = dc->GetImpl(); + wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl); + if (win_impl) + { + win_impl->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) ); + dc->SetClippingRegion( m_x , m_y , m_width , m_height ) ; + } } -void wxOverlayImpl::EndDrawing( wxWindowDC* dc) +void wxOverlayImpl::EndDrawing( wxDC* dc) { - dc->SetGraphicsContext(NULL); - CGContextSynchronize( m_overlayContext ); + wxDCImpl *impl = dc->GetImpl(); + wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl); + if (win_impl) + win_impl->SetGraphicsContext(NULL); + + CGContextFlush( m_overlayContext ); } -void wxOverlayImpl::Clear(wxWindowDC* WXUNUSED(dc)) +void wxOverlayImpl::Clear(wxDC* WXUNUSED(dc)) { wxASSERT_MSG( IsOk() , _("You cannot Clear an overlay that is not inited") ); CGRect box = CGRectMake( m_x - 1, m_y - 1 , m_width + 2 , m_height + 2 ); @@ -158,7 +166,10 @@ void wxOverlayImpl::Reset() { #ifndef __LP64__ OSStatus err = QDEndCGContext(GetWindowPort(m_overlayWindow), &m_overlayContext); - wxASSERT_MSG( err == noErr , _("Couldn't end the context on the overlay window") ); + if ( err != noErr ) + { + wxFAIL_MSG("Couldn't end the context on the overlay window"); + } #endif m_overlayContext = NULL ; }