- m_refData = new wxRegionRefData();
- }
- else if (m_refData->GetRefCount() > 1)
- {
- wxRegionRefData* ref = (wxRegionRefData*)m_refData;
- UnRef();
- m_refData = new wxRegionRefData(*ref);
+ switch ( op )
+ {
+ case wxRGN_COPY:
+ case wxRGN_OR:
+ case wxRGN_XOR:
+ // These operations make sense with a null region.
+ *this = region;
+ return true;
+
+ case wxRGN_AND:
+ case wxRGN_DIFF:
+ // Those ones don't really make sense so just leave this region
+ // empty/invalid.
+ return false;
+ }
+
+ wxFAIL_MSG( wxT("Unknown region operation") );
+ return false;