- GdkRectangle rect;
- rect.x = x;
- rect.y = y;
- rect.width = width;
- rect.height = height;
- GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
- gdk_region_destroy( M_REGIONDATA->m_region );
- M_REGIONDATA->m_region = reg;
- M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,width,height) );
- return TRUE;
+ GdkRectangle rect;
+ rect.x = x;
+ rect.y = y;
+ rect.width = width;
+ rect.height = height;
+ if (!m_refData)
+ {
+ m_refData = new wxRegionRefData();
+ GdkRegion *reg = gdk_region_new();
+#ifdef __WXGTK20__
+ gdk_region_union_with_rect( reg, &rect );
+ M_REGIONDATA->m_region = reg;
+#else
+ M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
+ gdk_region_destroy( reg );
+#endif
+ }
+ else
+ {
+#ifdef __WXGTK20__
+ gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
+#else
+ GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
+ gdk_region_destroy( M_REGIONDATA->m_region );
+ M_REGIONDATA->m_region = reg;
+#endif
+ }
+
+ M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,width,height) );
+
+ return TRUE;