X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/64c288fa47480385ad656ae3249b5b131340c1d6..30f27c00d6c93974a51edcde11152b81b11eb336:/src/common/iconbndl.cpp diff --git a/src/common/iconbndl.cpp b/src/common/iconbndl.cpp index 40ff56d9ed..e15376f5bb 100644 --- a/src/common/iconbndl.cpp +++ b/src/common/iconbndl.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: iconbndl.cpp +// Name: src/common/iconbndl.cpp // Purpose: wxIconBundle // Author: Mattia Barbon // Created: 23.03.2002 @@ -15,19 +15,17 @@ #pragma hdrstop #endif +#include "wx/iconbndl.h" + #ifndef WX_PRECOMP #include "wx/settings.h" #include "wx/icon.h" #include "wx/log.h" #include "wx/intl.h" #include "wx/bitmap.h" -#endif - -#if wxUSE_IMAGE && !defined(_WX_IMAGE_H_) #include "wx/image.h" #endif -#include "wx/iconbndl.h" #include "wx/arrimpl.cpp" WX_DEFINE_OBJARRAY(wxIconArray) @@ -80,16 +78,29 @@ void wxIconBundle::AddIcon( const wxString& WXUNUSED(file), long WXUNUSED(type) const wxIcon& wxIconBundle::GetIcon( const wxSize& size ) const { - size_t i, max = m_icons.GetCount(); + // temp. variable needed to fix Borland C++ 5.5.1 problem + // with passing a return value through two functions + wxIcon *tmp; + + size_t max = m_icons.GetCount(); + + // if we have one or no icon, we can return now without doing more work: + if ( max <= 1 ) + { + if ( max == 1 ) // fix for broken BCC + tmp = &m_icons[0]; + else // max == 0 + tmp = &wxNullIcon; + return *tmp; + } + + // there are more icons, find the best match: wxCoord sysX = wxSystemSettings::GetMetric( wxSYS_ICON_X ), sysY = wxSystemSettings::GetMetric( wxSYS_ICON_Y ); wxIcon *sysIcon = 0; - // temp. variable needed to fix Borland C++ 5.5.1 problem - // with passing a return value through two functions - wxIcon *tmp; - for( i = 0; i < max; i++ ) + for( size_t i = 0; i < max; i++ ) { if( !m_icons[i].Ok() ) continue; @@ -107,11 +118,8 @@ const wxIcon& wxIconBundle::GetIcon( const wxSize& size ) const // return the system-sized icon if we've got one if( sysIcon ) return *sysIcon; - // return the first icon, if we have one - if( max > 0 ) // fix for broken BCC - tmp = &m_icons[0]; - else - tmp = &wxNullIcon; + // we certainly have at least one icon thanks to the <=1 check above + tmp = &m_icons[0]; return *tmp; }