From 105b0fcae75a2291cc24fc9b42f615d34825dbd3 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Mon, 15 Sep 2003 20:39:06 +0000 Subject: [PATCH] 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 --- src/mac/carbon/dc.cpp | 30 ++++++++++++++++++++++++++++++ src/mac/dc.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/mac/carbon/dc.cpp b/src/mac/carbon/dc.cpp index 9285b2006a..35717bd3fe 100644 --- a/src/mac/carbon/dc.cpp +++ b/src/mac/carbon/dc.cpp @@ -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 ®ion ) = 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() ; diff --git a/src/mac/dc.cpp b/src/mac/dc.cpp index 9285b2006a..35717bd3fe 100644 --- a/src/mac/dc.cpp +++ b/src/mac/dc.cpp @@ -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 ®ion ) = 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() ;