]> git.saurik.com Git - wxWidgets.git/commitdiff
fix for preserving the clip rgn (control redraws missing after switch to faster redra...
authorStefan Csomor <csomor@advancedconcepts.ch>
Mon, 15 Sep 2003 20:39:06 +0000 (20:39 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Mon, 15 Sep 2003 20:39:06 +0000 (20:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/dc.cpp
src/mac/dc.cpp

index 9285b2006ae9799d685dd0fea70bde1b9f9bb814..35717bd3fe9878d0652d338fe7fa35646a006a8a 100644 (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() ;
index 9285b2006ae9799d685dd0fea70bde1b9f9bb814..35717bd3fe9878d0652d338fe7fa35646a006a8a 100644 (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() ;