X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7fd328a34dce31f4995585a4046e95361ba1c8e2..1fef34b9eed0afe7f3d65f7c62bd85a679a5b6db:/src/msw/icon.cpp?ds=sidebyside diff --git a/src/msw/icon.cpp b/src/msw/icon.cpp index c0070fc713..2fbdb94996 100644 --- a/src/msw/icon.cpp +++ b/src/msw/icon.cpp @@ -17,7 +17,7 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "icon.h" #endif @@ -85,10 +85,38 @@ wxIcon::wxIcon(const wxString& iconfile, LoadFile(iconfile, flags, desiredWidth, desiredHeight); } +wxIcon::wxIcon(const wxIconLocation& loc) +{ + // wxICOFileHandler accepts names in the format "filename;index" + wxString fullname = loc.GetFileName(); + if ( loc.GetIndex() ) + { + fullname << _T(';') << loc.GetIndex(); + } + //else: 0 is default + + LoadFile(fullname, wxBITMAP_TYPE_ICO); +} + wxIcon::~wxIcon() { } +wxObjectRefData *wxIcon::CloneRefData(const wxObjectRefData *dataOrig) const +{ + const wxIconRefData * + data = wx_static_cast(const wxIconRefData *, dataOrig); + if ( !data ) + return NULL; + + // we don't have to copy m_hIcon because we're only called from SetHICON() + // which overwrites m_hIcon anyhow currently + // + // and if we're called from SetWidth/Height/Depth(), it doesn't make sense + // to copy it neither as the handle would be inconsistent with the new size + return new wxIconRefData(*data); +} + void wxIcon::CopyFromBitmap(const wxBitmap& bmp) { #ifndef __WXMICROWIN__ @@ -122,7 +150,7 @@ bool wxIcon::LoadFile(const wxString& filename, if ( !handler ) { // say something? - return FALSE; + return false; } return handler->Load(this, filename, type, desiredWidth, desiredHeight);