From: Vadim Zeitlin Date: Sat, 11 Sep 2004 20:26:44 +0000 (+0000) Subject: fixed CopyFromBitmap() for shared wxIcon objects by adding CloneRefData() implementat... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/9d769508fb54392e63c5d2d4d96de02bee7887b8?ds=inline fixed CopyFromBitmap() for shared wxIcon objects by adding CloneRefData() implementation (patch 1026453) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29099 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- 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__