X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b9e3186d195f6a6211794f849f1efffdccf91444..9d5507f7a2701395e1d5c121bd877bb9066ee6ea:/src/msw/icon.cpp diff --git a/src/msw/icon.cpp b/src/msw/icon.cpp index 564a07d875..ebf8f49d98 100644 --- a/src/msw/icon.cpp +++ b/src/msw/icon.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/icon.cpp +// Name: src/msw/icon.cpp // Purpose: wxIcon class // Author: Julian Smart // Modified by: 20.11.99 (VZ): don't derive from wxBitmap any more @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "icon.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -29,7 +25,6 @@ #endif #ifndef WX_PRECOMP - #include "wx/defs.h" #include "wx/list.h" #include "wx/utils.h" #include "wx/app.h" @@ -109,16 +104,12 @@ wxObjectRefData *wxIcon::CloneRefData(const wxObjectRefData *dataOrig) const if ( !data ) return NULL; - wxIcon *self = wx_const_cast(wxIcon *, this); - self->UnRef(); - self->m_refData = new wxIconRefData(*data); - - if ( data->m_hIcon ) - { - ::CopyIcon(HICON(data->m_hIcon)); - } - - return m_refData; + // 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) @@ -153,10 +144,15 @@ bool wxIcon::LoadFile(const wxString& filename, if ( !handler ) { - // say something? - return false; + // load via wxBitmap which, in turn, uses wxImage allowing us to + // support more formats + wxBitmap bmp; + if ( !bmp.LoadFile(filename, type) ) + return false; + + CopyFromBitmap(bmp); + return true; } return handler->Load(this, filename, type, desiredWidth, desiredHeight); } -