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);
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") );
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 ;
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();
+ 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)
+void wxOverlayImpl::EndDrawing( wxDC* 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(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 );