From: Stefan Csomor Date: Sat, 12 Apr 2003 18:05:17 +0000 (+0000) Subject: redraw fixes for OSX X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/732b3a752b77de9ac00f770ac42b95ec99b5809d?ds=sidebyside redraw fixes for OSX git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20166 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index 2da89cd414..6aed596250 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -635,7 +635,20 @@ void wxTopLevelWindowMac::MacUpdate( long timestamp) RgnHandle diffRgn = NewRgn() ; if ( updateRgn && diffRgn ) { +#if 1 + // macos internal control redraws clean up areas we'd like to redraw ourselves + // therefore we pick the boundary rect and make sure we can redraw it + RgnHandle trueUpdateRgn = NewRgn() ; + Rect trueUpdateRgnBoundary ; + GetPortVisibleRegion( GetWindowPort( (WindowRef)m_macWindow ), trueUpdateRgn ); + GetRegionBounds( trueUpdateRgn , &trueUpdateRgnBoundary ) ; + RectRgn( (RgnHandle) updateRgn , &trueUpdateRgnBoundary ) ; + if ( trueUpdateRgn ) + DisposeRgn( trueUpdateRgn ) ; + SetPortVisibleRegion( GetWindowPort( (WindowRef)m_macWindow ), updateRgn ) ; +#else GetPortVisibleRegion( GetWindowPort( (WindowRef)m_macWindow ), updateRgn ); +#endif DiffRgn( updateRgn , (RgnHandle) m_macNoEraseUpdateRgn , diffRgn ) ; if ( !EmptyRgn( updateRgn ) ) { @@ -815,9 +828,15 @@ void wxTopLevelWindowMac::MacActivate( long timestamp , bool inIsActivating ) // so refresh the whole window on activation and deactivation. long osVersion = UMAGetSystemVersion(); if (osVersion >= 0x1000 && osVersion < 0x1020) + { Refresh(TRUE); + } else - MacSuperEnabled( inIsActivating ) ; + { + // for the moment we have to resolve some redrawing issues like this + // the OS is stealing some redrawing areas as soon as it draws a control + Refresh(TRUE); + } } #if !TARGET_CARBON diff --git a/src/mac/toplevel.cpp b/src/mac/toplevel.cpp index 2da89cd414..6aed596250 100644 --- a/src/mac/toplevel.cpp +++ b/src/mac/toplevel.cpp @@ -635,7 +635,20 @@ void wxTopLevelWindowMac::MacUpdate( long timestamp) RgnHandle diffRgn = NewRgn() ; if ( updateRgn && diffRgn ) { +#if 1 + // macos internal control redraws clean up areas we'd like to redraw ourselves + // therefore we pick the boundary rect and make sure we can redraw it + RgnHandle trueUpdateRgn = NewRgn() ; + Rect trueUpdateRgnBoundary ; + GetPortVisibleRegion( GetWindowPort( (WindowRef)m_macWindow ), trueUpdateRgn ); + GetRegionBounds( trueUpdateRgn , &trueUpdateRgnBoundary ) ; + RectRgn( (RgnHandle) updateRgn , &trueUpdateRgnBoundary ) ; + if ( trueUpdateRgn ) + DisposeRgn( trueUpdateRgn ) ; + SetPortVisibleRegion( GetWindowPort( (WindowRef)m_macWindow ), updateRgn ) ; +#else GetPortVisibleRegion( GetWindowPort( (WindowRef)m_macWindow ), updateRgn ); +#endif DiffRgn( updateRgn , (RgnHandle) m_macNoEraseUpdateRgn , diffRgn ) ; if ( !EmptyRgn( updateRgn ) ) { @@ -815,9 +828,15 @@ void wxTopLevelWindowMac::MacActivate( long timestamp , bool inIsActivating ) // so refresh the whole window on activation and deactivation. long osVersion = UMAGetSystemVersion(); if (osVersion >= 0x1000 && osVersion < 0x1020) + { Refresh(TRUE); + } else - MacSuperEnabled( inIsActivating ) ; + { + // for the moment we have to resolve some redrawing issues like this + // the OS is stealing some redrawing areas as soon as it draws a control + Refresh(TRUE); + } } #if !TARGET_CARBON