X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8d854fa93f8f5a48e383395060063a7931bf0207..196cc38b26fb577274d307ba664dbc5a3196f301:/src/os2/region.cpp?ds=inline diff --git a/src/os2/region.cpp b/src/os2/region.cpp index 112fccc32f..b3ff3e34d7 100644 --- a/src/os2/region.cpp +++ b/src/os2/region.cpp @@ -12,6 +12,7 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#include "wx/app.h" #include "wx/os2/region.h" #include "wx/gdicmn.h" @@ -555,6 +556,51 @@ WXHRGN wxRegion::GetHRGN() const return (WXHRGN) M_REGION; } +// +// Set a new PS, this means we have to recreate the old region in the new +// PS +// +void wxRegion::SetPS( + HPS hPS +) +{ + RGNRECT vRgnData; + PRECTL pRect = NULL; + + if (::GpiQueryRegionRects( ((wxRegionRefData*)m_refData)->m_hPS + ,((wxRegionRefData*)m_refData)->m_hRegion + ,NULL + ,&vRgnData + ,NULL + )) + { + pRect = new RECTL[vRgnData.crcReturned]; + vRgnData.crc = vRgnData.crcReturned; + vRgnData.ircStart = 1; + if (::GpiQueryRegionRects( ((wxRegionRefData*)m_refData)->m_hPS + ,((wxRegionRefData*)m_refData)->m_hRegion + ,NULL + ,&vRgnData + ,pRect + )) + { + // + // First destroy the region out of the old PS + // and then create it in the new and set the new to current + // + ::GpiDestroyRegion( ((wxRegionRefData*)m_refData)->m_hPS + ,M_REGION + ); + ((wxRegionRefData*)m_refData)->m_hRegion = ::GpiCreateRegion( hPS + ,vRgnData.crcReturned + ,pRect + ); + ((wxRegionRefData*)m_refData)->m_hPS = hPS; + } + delete [] pRect; + } +} // end of wxRegion::SetPS + /////////////////////////////////////////////////////////////////////////////// // // // wxRegionIterator //