X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1934d291cd9e4e7eb1b8aba92e3f35b35f0618b1..56acdfef2f2759bbc03c2fab5f7da25f6ca6d563:/src/x11/region.cpp?ds=inline diff --git a/src/x11/region.cpp b/src/x11/region.cpp index 6ed3767c11..0b5130d9be 100644 --- a/src/x11/region.cpp +++ b/src/x11/region.cpp @@ -149,6 +149,12 @@ void wxRegion::Clear() bool wxRegion::Union( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) { + // work around for XUnionRectWithRegion() bug: taking a union with an empty + // rect results in an empty region (at least XFree 3.3.6 and 4.0 have this + // problem) + if ( !width || !height ) + return TRUE; + XRectangle rect; rect.x = x; rect.y = y; @@ -434,13 +440,13 @@ public: wxRIRefData::~wxRIRefData() { - delete m_rects; + delete [] m_rects; } void wxRIRefData::CreateRects( const wxRegion& region ) { if (m_rects) - delete m_rects; + delete [] m_rects; m_rects = 0; m_numRects = 0; @@ -450,6 +456,16 @@ void wxRIRefData::CreateRects( const wxRegion& region ) Region r = (Region) region.GetX11Region(); if (r) { +#if wxUSE_NANOX + GR_RECT rect; + GrGetRegionBox(r, & rect); + m_numRects = 1; + m_rects = new wxRect[1]; + m_rects[0].x = rect.x; + m_rects[0].y = rect.y; + m_rects[0].width = rect.width; + m_rects[0].height = rect.height; +#else m_numRects = r->numRects; if (m_numRects) { @@ -464,6 +480,7 @@ void wxRIRefData::CreateRects( const wxRegion& region ) wr.height = xr.y2-xr.y1; } } +#endif } }