X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c348a710f06d6168c64434b776df94e532d7eea7..7a7697aafe33e958d60547c50b30d50fe3d3a454:/src/mac/carbon/overlay.cpp diff --git a/src/mac/carbon/overlay.cpp b/src/mac/carbon/overlay.cpp index 7bd2957072..c33c96e8e7 100644 --- a/src/mac/carbon/overlay.cpp +++ b/src/mac/carbon/overlay.cpp @@ -95,10 +95,10 @@ OSStatus wxOverlayImpl::CreateOverlayWindow() CGRect cgbounds ; cgbounds = CGDisplayBounds(CGMainDisplayID()); Rect bounds; - bounds.top = cgbounds.origin.y; - bounds.left = cgbounds.origin.x; - bounds.bottom = bounds.top + cgbounds.size.height; - bounds.right = bounds.left + cgbounds.size.width; + bounds.top = (short)cgbounds.origin.y; + bounds.left = (short)cgbounds.origin.x; + bounds.bottom = (short)(bounds.top + cgbounds.size.height); + bounds.right = (short)(bounds.left + cgbounds.size.width); err = CreateNewWindow( kOverlayWindowClass, overlayAttributes, &bounds, &m_overlayWindow ); } ShowWindow(m_overlayWindow); @@ -115,7 +115,7 @@ void wxOverlayImpl::Init( wxWindowDC* dc, int x , int y , int width , int height if ( dc->IsKindOf( CLASSINFO( wxClientDC ) )) { wxPoint origin = m_window->GetClientAreaOrigin(); - m_x += origin.x; + m_x += origin.x; m_y += origin.y; } m_width = width ; @@ -134,21 +134,27 @@ void wxOverlayImpl::Init( wxWindowDC* dc, int x , int y , int width , int height void wxOverlayImpl::BeginDrawing( wxWindowDC* dc) { -// TODO CS - dc->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) ); - // triggers an application of the already set device origins to the native context - dc->SetUserScale(1,1); - wxSize size = dc->GetSize() ; - dc->SetClippingRegion( 0 , 0 , size.x , size.y ) ; + wxDCImpl *impl = dc->GetImpl(); + wxWindowDCImpl *win_impl = wxDynamicCast(impl,wxWindowDCImpl); + if (win_impl) + { + win_impl->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) ); + wxSize size = dc->GetSize() ; + dc->SetClippingRegion( 0 , 0 , size.x , size.y ) ; + } } void wxOverlayImpl::EndDrawing( wxWindowDC* dc) { - dc->SetGraphicsContext(NULL); - CGContextSynchronize( m_overlayContext ); + wxDCImpl *impl = dc->GetImpl(); + wxWindowDCImpl *win_impl = wxDynamicCast(impl,wxWindowDCImpl); + if (win_impl) + win_impl->SetGraphicsContext(NULL); + + CGContextFlush( m_overlayContext ); } -void wxOverlayImpl::Clear(wxWindowDC* dc) +void wxOverlayImpl::Clear(wxWindowDC* 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 );