]> git.saurik.com Git - wxWidgets.git/commitdiff
removing unnecessary invalidation in Update, adding a forced update to ScrollWindow...
authorStefan Csomor <csomor@advancedconcepts.ch>
Sun, 23 May 2004 15:42:06 +0000 (15:42 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sun, 23 May 2004 15:42:06 +0000 (15:42 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/window.cpp

index 40e6c7d937837cd77b493f60cff91ea35303740d..744c85afbe878b5eba4da798b7573cd1671bd3b2 100644 (file)
@@ -2283,6 +2283,12 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
         Rect scrollrect;
         RgnHandle updateRgn = NewRgn() ;
 
         Rect scrollrect;
         RgnHandle updateRgn = NewRgn() ;
 
+#if TARGET_API_MAC_OSX
+        // if there is already a pending redraw event, we first must flush that, as we don't have
+        // means to retrieve the dirty region of a HIView
+        if ( HIViewGetNeedsDisplay( (ControlRef) m_macControl ) )
+            Update() ;
+#endif
         {
             wxClientDC dc(this) ;
             wxMacPortSetter helper(&dc) ;
         {
             wxClientDC dc(this) ;
             wxMacPortSetter helper(&dc) ;
@@ -2306,10 +2312,7 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
         }
         // ScrollWindowRect( (WindowRef) MacGetTopLevelWindowRef() , &scrollrect , dx , dy ,  kScrollWindowInvalidate, updateRgn ) ;
 #if TARGET_API_MAC_OSX
         }
         // ScrollWindowRect( (WindowRef) MacGetTopLevelWindowRef() , &scrollrect , dx , dy ,  kScrollWindowInvalidate, updateRgn ) ;
 #if TARGET_API_MAC_OSX
-        Rect before,after ;
-        GetRegionBounds( updateRgn , &before ) ;
         HIViewConvertRegion( updateRgn , (ControlRef) MacGetTopLevelWindow()->GetHandle() , (ControlRef) m_macControl ) ;
         HIViewConvertRegion( updateRgn , (ControlRef) MacGetTopLevelWindow()->GetHandle() , (ControlRef) m_macControl ) ;
-        GetRegionBounds( updateRgn , &after ) ;
         HIViewSetNeedsDisplayInRegion( (ControlRef) m_macControl , updateRgn , true ) ;
 #else
         // TODO TEST
         HIViewSetNeedsDisplayInRegion( (ControlRef) m_macControl , updateRgn , true ) ;
 #else
         // TODO TEST
@@ -2478,7 +2481,6 @@ wxString wxWindowMac::MacGetToolTipString( wxPoint &pt )
 void wxWindowMac::Update()
 {
 #if TARGET_API_MAC_OSX
 void wxWindowMac::Update()
 {
 #if TARGET_API_MAC_OSX
-    HIViewSetNeedsDisplay( (ControlRef) m_macControl , true ) ;
     WindowRef window = (WindowRef)MacGetTopLevelWindowRef() ;
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
     // for composited windows this also triggers a redraw of all
     WindowRef window = (WindowRef)MacGetTopLevelWindowRef() ;
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
     // for composited windows this also triggers a redraw of all
@@ -2507,6 +2509,8 @@ void wxWindowMac::Update()
             OSStatus status = noErr ;
             status = ReceiveNextEvent( 0 , NULL , kEventDurationNoWait , false , &theEvent ) ;
         }
             OSStatus status = noErr ;
             status = ReceiveNextEvent( 0 , NULL , kEventDurationNoWait , false , &theEvent ) ;
         }
+        else
+            HIViewSetNeedsDisplay( (ControlRef) m_macControl , true ) ;
     }
 #else
     ::Draw1Control( (ControlRef) m_macControl ) ;
     }
 #else
     ::Draw1Control( (ControlRef) m_macControl ) ;