X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..2158f4d798650d7f8cc59ba36e115679b0effe1b:/src/common/iconbndl.cpp diff --git a/src/common/iconbndl.cpp b/src/common/iconbndl.cpp index 4cefbd84b4..e15376f5bb 100644 --- a/src/common/iconbndl.cpp +++ b/src/common/iconbndl.cpp @@ -1,17 +1,13 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: iconbndl.cpp +// Name: src/common/iconbndl.cpp // Purpose: wxIconBundle // Author: Mattia Barbon // Created: 23.03.2002 // RCS-ID: $Id$ // Copyright: (c) Mattia barbon -// Licence: wxWidgets licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "iconbndl.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -19,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) @@ -60,7 +54,7 @@ void wxIconBundle::AddIcon( const wxString& file, long type ) void wxIconBundle::AddIcon( const wxString& WXUNUSED(file), long WXUNUSED(type) ) #endif { -#if wxUSE_IMAGE +#if wxUSE_IMAGE && (!defined(__WXMSW__) || wxUSE_WXDIB) size_t count = wxImage::GetImageCount( file, type ); size_t i; wxImage image; @@ -84,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; @@ -111,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; }