]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/dcclient.cpp
Add support for EVT_WEB_VIEW_NEWWINDOW to the OSX WebKit backend.
[wxWidgets.git] / src / osx / carbon / dcclient.cpp
index 2a7404bd4401fcf57b0eaf98162febde4e71b303..21f3c245bdfc8dd9d543e1e411830f2b011b8e02 100644 (file)
@@ -45,7 +45,7 @@ wxWindowDCImpl::wxWindowDCImpl( wxDC *owner, wxWindow *window )
    : wxGCDCImpl( owner )
 {
     m_window = window;
    : wxGCDCImpl( owner )
 {
     m_window = window;
-    
+
     m_ok = true ;
 
     m_window->GetSize( &m_width , &m_height);
     m_ok = true ;
 
     m_window->GetSize( &m_width , &m_height);
@@ -68,7 +68,9 @@ wxWindowDCImpl::wxWindowDCImpl( wxDC *owner, wxWindow *window )
         if ( window->MacGetLeftBorderSize() != 0 || window->MacGetTopBorderSize() != 0 )
             CGContextTranslateCTM( cg , -window->MacGetLeftBorderSize() , -window->MacGetTopBorderSize() );
 
         if ( window->MacGetLeftBorderSize() != 0 || window->MacGetTopBorderSize() != 0 )
             CGContextTranslateCTM( cg , -window->MacGetLeftBorderSize() , -window->MacGetTopBorderSize() );
 
-        SetGraphicsContext( wxGraphicsContext::CreateFromNative( cg ) );
+        wxGraphicsContext* context = wxGraphicsContext::CreateFromNative( cg );
+        context->EnableOffset(true);
+        SetGraphicsContext( context );
     }
     DoSetClippingRegion( 0 , 0 , m_width , m_height ) ;
 
     }
     DoSetClippingRegion( 0 , 0 , m_width , m_height ) ;
 
@@ -96,6 +98,7 @@ void wxWindowDCImpl::DoGetSize( int* width, int* height ) const
         *height = m_height;
 }
 
         *height = m_height;
 }
 
+#if wxOSX_USE_CARBON
 wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const
 {
     // wxScreenDC is derived from wxWindowDC, so a screen dc will
 wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const
 {
     // wxScreenDC is derived from wxWindowDC, so a screen dc will
@@ -103,17 +106,13 @@ wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const
     if (!m_window)
         return wxNullBitmap;
 
     if (!m_window)
         return wxNullBitmap;
 
-#if wxOSX_USE_CARBON
     ControlRef handle = (ControlRef) m_window->GetHandle();
     if ( !handle )
         return wxNullBitmap;
     ControlRef handle = (ControlRef) m_window->GetHandle();
     if ( !handle )
         return wxNullBitmap;
-    
+
     HIRect rect;
     CGImageRef image;
     CGContextRef context;
     HIRect rect;
     CGImageRef image;
     CGContextRef context;
-    void* data;
-
-    size_t bytesPerRow;
 
     HIViewCreateOffscreenImage( handle, 0, &rect, &image);
 
 
     HIViewCreateOffscreenImage( handle, 0, &rect, &image);
 
@@ -122,11 +121,11 @@ wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const
     int height = subrect !=  NULL ? subrect->height : (int)rect.size.height ;
 
     wxBitmap bmp = wxBitmap(width, height, 32);
     int height = subrect !=  NULL ? subrect->height : (int)rect.size.height ;
 
     wxBitmap bmp = wxBitmap(width, height, 32);
-    
+
     context = (CGContextRef)bmp.GetHBITMAP();
     context = (CGContextRef)bmp.GetHBITMAP();
-    
+
     CGContextSaveGState(context);
     CGContextSaveGState(context);
-    
+
     CGContextTranslateCTM( context, 0,  height );
     CGContextScaleCTM( context, 1, -1 );
 
     CGContextTranslateCTM( context, 0,  height );
     CGContextScaleCTM( context, 1, -1 );
 
@@ -136,10 +135,8 @@ wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const
 
     CGContextRestoreGState(context);
     return bmp;
 
     CGContextRestoreGState(context);
     return bmp;
-#else
-    return wxNullBitmap;
-#endif
 }
 }
+#endif
 
 /*
  * wxClientDCImpl
 
 /*
  * wxClientDCImpl
@@ -155,7 +152,7 @@ wxClientDCImpl::wxClientDCImpl( wxDC *owner )
 wxClientDCImpl::wxClientDCImpl( wxDC *owner, wxWindow *window ) :
     wxWindowDCImpl( owner, window )
 {
 wxClientDCImpl::wxClientDCImpl( wxDC *owner, wxWindow *window ) :
     wxWindowDCImpl( owner, window )
 {
-    wxCHECK_RET( window, _T("invalid window in wxClientDCImpl") );
+    wxCHECK_RET( window, wxT("invalid window in wxClientDCImpl") );
     wxPoint origin = window->GetClientAreaOrigin() ;
     m_window->GetClientSize( &m_width , &m_height);
     if ( !m_window->IsShownOnScreen() )
     wxPoint origin = window->GetClientAreaOrigin() ;
     m_window->GetClientSize( &m_width , &m_height);
     if ( !m_window->IsShownOnScreen() )
@@ -166,6 +163,8 @@ wxClientDCImpl::wxClientDCImpl( wxDC *owner, wxWindow *window ) :
 
 wxClientDCImpl::~wxClientDCImpl()
 {
 
 wxClientDCImpl::~wxClientDCImpl()
 {
+    if( GetGraphicsContext() && GetGraphicsContext()->GetNativeContext() )
+        Flush();
 }
 
 /*
 }
 
 /*
@@ -182,6 +181,7 @@ wxPaintDCImpl::wxPaintDCImpl( wxDC *owner )
 wxPaintDCImpl::wxPaintDCImpl( wxDC *owner, wxWindow *window ) :
     wxWindowDCImpl( owner, window )
 {
 wxPaintDCImpl::wxPaintDCImpl( wxDC *owner, wxWindow *window ) :
     wxWindowDCImpl( owner, window )
 {
+    wxASSERT_MSG( window->MacGetCGContextRef() != NULL, wxT("using wxPaintDC without being in a native paint event") );
     wxPoint origin = window->GetClientAreaOrigin() ;
     m_window->GetClientSize( &m_width , &m_height);
     SetDeviceOrigin( origin.x, origin.y );
     wxPoint origin = window->GetClientAreaOrigin() ;
     m_window->GetClientSize( &m_width , &m_height);
     SetDeviceOrigin( origin.x, origin.y );