]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/dcclient.cpp
fix wxDataObjectComposite::GetFormatCount and add some comments to explain the reason...
[wxWidgets.git] / src / osx / carbon / dcclient.cpp
index 00b970dd9a3d7543e89de9d1f7c1993748fcfd10..2ade63d5ccd883b0faa1d24c3238b8fd3f6a831b 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        src/mac/carbon/dcclient.cpp
+// Name:        src/osx/carbon/dcclient.cpp
 // Purpose:     wxClientDCImpl class
 // Author:      Stefan Csomor
 // Modified by:
 // Purpose:     wxClientDCImpl class
 // Author:      Stefan Csomor
 // Modified by:
@@ -26,6 +26,7 @@
 #include "wx/graphics.h"
 #include "wx/rawbmp.h"
 #include "wx/osx/private.h"
 #include "wx/graphics.h"
 #include "wx/rawbmp.h"
 #include "wx/osx/private.h"
+#include "wx/osx/dcclient.h"
 
 //-----------------------------------------------------------------------------
 // wxWindowDCImpl
 
 //-----------------------------------------------------------------------------
 // wxWindowDCImpl
@@ -39,21 +40,20 @@ wxWindowDCImpl::wxWindowDCImpl( wxDC *owner )
     m_release = false;
 }
 
     m_release = false;
 }
 
+
 wxWindowDCImpl::wxWindowDCImpl( wxDC *owner, wxWindow *window )
    : wxGCDCImpl( owner )
 {
     m_window = window;
     
 wxWindowDCImpl::wxWindowDCImpl( wxDC *owner, wxWindow *window )
    : wxGCDCImpl( owner )
 {
     m_window = window;
     
-    WindowRef rootwindow = (WindowRef) window->MacGetTopLevelWindowRef() ;
-    if (!rootwindow)
-        return;
-
     m_ok = true ;
 
     m_window->GetSize( &m_width , &m_height);
     if ( !m_window->IsShownOnScreen() )
         m_width = m_height = 0;
     m_ok = true ;
 
     m_window->GetSize( &m_width , &m_height);
     if ( !m_window->IsShownOnScreen() )
         m_width = m_height = 0;
+
     CGContextRef cg = (CGContextRef) window->MacGetCGContextRef();
     CGContextRef cg = (CGContextRef) window->MacGetCGContextRef();
+
     m_release = false;
     if ( cg == NULL )
     {
     m_release = false;
     if ( cg == NULL )
     {
@@ -96,6 +96,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,9 +104,6 @@ wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const
     if (!m_window)
         return wxNullBitmap;
 
     if (!m_window)
         return wxNullBitmap;
 
-#ifdef __LP64__
-    return wxNullBitmap;
-#else
     ControlRef handle = (ControlRef) m_window->GetHandle();
     if ( !handle )
         return wxNullBitmap;
     ControlRef handle = (ControlRef) m_window->GetHandle();
     if ( !handle )
         return wxNullBitmap;
@@ -137,10 +135,9 @@ wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const
     CGContextDrawImage( context, rect, image );
 
     CGContextRestoreGState(context);
     CGContextDrawImage( context, rect, image );
 
     CGContextRestoreGState(context);
-
     return bmp;
     return bmp;
-#endif
 }
 }
+#endif
 
 /*
  * wxClientDCImpl
 
 /*
  * wxClientDCImpl
@@ -183,6 +180,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, _T("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 );