X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1934d291cd9e4e7eb1b8aba92e3f35b35f0618b1..e8508ea8a890c90e6e72b2579780ca2ccbf40270:/src/x11/region.cpp diff --git a/src/x11/region.cpp b/src/x11/region.cpp index 6ed3767c11..b1575a3f0d 100644 --- a/src/x11/region.cpp +++ b/src/x11/region.cpp @@ -1,10 +1,10 @@ ///////////////////////////////////////////////////////////////////////////// // File: region.cpp // Purpose: Region class -// Author: Markus Holzem, Julian Smart, Robert Roebling +// Author: Julian Smart, Robert Roebling // Created: Fri Oct 24 10:46:34 MET 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Markus Holzem, Julian Smart, Robert Roebling +// RCS-ID: $Id$ +// Copyright: (c) 1997 Julian Smart, Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -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 } }