]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/region.cpp
added ctor taking wxFontFlags
[wxWidgets.git] / src / x11 / region.cpp
index 6ed3767c1147e1fbc3ccf550c0fa1e0d55d983da..0b5130d9be124d19f97a7221dfb92463efd4617a 100644 (file)
@@ -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
     }
 }