diff --git a/include/wx/msw/icon.h b/include/wx/msw/icon.h index ac8695bdb7..3a4dab9ba1 100644 --- a/include/wx/msw/icon.h +++ b/include/wx/msw/icon.h @@ -96,6 +96,8 @@ protected: return new wxIconRefData; } + virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const; + // create from XPM data void CreateIconFromXpm(const char **data); diff --git a/src/msw/icon.cpp b/src/msw/icon.cpp index 658c537e88..5cab68a51c 100644 --- a/src/msw/icon.cpp +++ b/src/msw/icon.cpp @@ -102,6 +102,25 @@ wxIcon::~wxIcon() { } +wxObjectRefData *wxIcon::CloneRefData(const wxObjectRefData *dataOrig) const +{ + const wxIconRefData * + data = wx_static_cast(const wxIconRefData *, dataOrig); + if ( !data ) + return NULL; + + wxIcon *self = wx_const_cast(wxIcon *, this); + lf->UnRef(); + lf->m_refData = new wxIconRefData(*data); + + if ( data->m_hIcon ) + { + ::CopyIcon(HICON(data->m_hIcon)); + } + + return m_refData; +} + void wxIcon::CopyFromBitmap(const wxBitmap& bmp) { #ifndef __WXMICROWIN__