fix for preserving the clip rgn (control redraws missing after switch to faster redraw, in the end we probably best reset the clip region after a wxDC has been destroyed for a grafport

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor 2003-09-15 20:39:06 +00:00
parent 5d6cbce26b
commit 105b0fcae7
2 changed files with 60 additions and 0 deletions

View File

@ -81,15 +81,21 @@ public :
wxASSERT( dc->Ok() ) ;
GetPort( &m_oldPort ) ;
SetPort( (GrafPtr) dc->m_macPort ) ;
m_clipRgn = NewRgn() ;
GetClip( m_clipRgn ) ;
m_dc = dc ;
dc->MacSetupPort( NULL ) ;
}
~wxMacFastPortSetter()
{
SetPort( (GrafPtr) m_dc->m_macPort ) ;
SetClip( m_clipRgn ) ;
SetPort( m_oldPort ) ;
m_dc->MacCleanupPort( NULL ) ;
DisposeRgn( m_clipRgn ) ;
}
private :
RgnHandle m_clipRgn ;
GrafPtr m_oldPort ;
const wxDC* m_dc ;
} ;
@ -98,6 +104,30 @@ private :
typedef wxMacPortSetter wxMacFastPortSetter ;
#endif
#if 0
// start moving to a dual implementation for QD and CGContextRef
class wxMacGraphicsContext
{
public :
void DrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask ) = 0 ;
void SetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) = 0 ;
void SetClippingRegion( const wxRegion &region ) = 0 ;
void DestroyClippingRegion() = 0 ;
void SetTextForeground( const wxColour &col ) = 0 ;
void SetTextBackground( const wxColour &col ) = 0 ;
void SetLogicalScale( double x , double y ) = 0 ;
void SetUserScale( double x , double y ) = 0;
} ;
class wxMacQuickDrawContext : public wxMacGraphicsContext
{
public :
} ;
#endif
wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win )
{
m_formerClip = NewRgn() ;

View File

@ -81,15 +81,21 @@ public :
wxASSERT( dc->Ok() ) ;
GetPort( &m_oldPort ) ;
SetPort( (GrafPtr) dc->m_macPort ) ;
m_clipRgn = NewRgn() ;
GetClip( m_clipRgn ) ;
m_dc = dc ;
dc->MacSetupPort( NULL ) ;
}
~wxMacFastPortSetter()
{
SetPort( (GrafPtr) m_dc->m_macPort ) ;
SetClip( m_clipRgn ) ;
SetPort( m_oldPort ) ;
m_dc->MacCleanupPort( NULL ) ;
DisposeRgn( m_clipRgn ) ;
}
private :
RgnHandle m_clipRgn ;
GrafPtr m_oldPort ;
const wxDC* m_dc ;
} ;
@ -98,6 +104,30 @@ private :
typedef wxMacPortSetter wxMacFastPortSetter ;
#endif
#if 0
// start moving to a dual implementation for QD and CGContextRef
class wxMacGraphicsContext
{
public :
void DrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask ) = 0 ;
void SetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) = 0 ;
void SetClippingRegion( const wxRegion &region ) = 0 ;
void DestroyClippingRegion() = 0 ;
void SetTextForeground( const wxColour &col ) = 0 ;
void SetTextBackground( const wxColour &col ) = 0 ;
void SetLogicalScale( double x , double y ) = 0 ;
void SetUserScale( double x , double y ) = 0;
} ;
class wxMacQuickDrawContext : public wxMacGraphicsContext
{
public :
} ;
#endif
wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win )
{
m_formerClip = NewRgn() ;