From: Robert Roebling Date: Tue, 31 Oct 2006 22:48:38 +0000 (+0000) Subject: Commited region iterator fix. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ac7d3dd1578d298a301638b7ef862f1e308321d0 Commited region iterator fix. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42873 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/gtk/region.h b/include/wx/gtk/region.h index 71f47a47aa..1886952495 100644 --- a/include/wx/gtk/region.h +++ b/include/wx/gtk/region.h @@ -94,8 +94,11 @@ class WXDLLIMPEXP_CORE wxRegionIterator: public wxObject public: wxRegionIterator(); wxRegionIterator(const wxRegion& region); + wxRegionIterator(const wxRegionIterator& ri) : wxObject(ri) { Init(); *this = ri; } ~wxRegionIterator(); + wxRegionIterator& operator=(const wxRegionIterator& ri); + void Reset() { m_current = 0u; } void Reset(const wxRegion& region); diff --git a/src/gtk/region.cpp b/src/gtk/region.cpp index 57b6b02ffc..33ee658dbd 100644 --- a/src/gtk/region.cpp +++ b/src/gtk/region.cpp @@ -455,3 +455,23 @@ wxRect wxRegionIterator::GetRect() const return r; } + +wxRegionIterator& wxRegionIterator::operator=(const wxRegionIterator& ri) +{ + wxDELETEA(m_rects); + + m_current = ri.m_current; + m_numRects = ri.m_numRects; + if ( m_numRects ) + { + m_rects = new wxRect[m_numRects]; + for ( long n = 0; n < m_numRects; n++ ) + m_rects[n] = ri.m_rects[n]; + } + else + { + m_rects = NULL; + } + + return *this; +}