avoid calling wxSystemSettings::GetMetric() from wxIconBundle::GetIcon() unless the returned value is really needed to choose from >1 icons
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
406d283a64
commit
2fd85ab3e8
@ -78,16 +78,29 @@ void wxIconBundle::AddIcon( const wxString& WXUNUSED(file), long WXUNUSED(type)
|
|||||||
|
|
||||||
const wxIcon& wxIconBundle::GetIcon( const wxSize& size ) const
|
const wxIcon& wxIconBundle::GetIcon( const wxSize& size ) const
|
||||||
{
|
{
|
||||||
size_t i, max = m_icons.GetCount();
|
|
||||||
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
|
// temp. variable needed to fix Borland C++ 5.5.1 problem
|
||||||
// with passing a return value through two functions
|
// with passing a return value through two functions
|
||||||
wxIcon *tmp;
|
wxIcon *tmp;
|
||||||
|
|
||||||
for( i = 0; i < max; i++ )
|
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;
|
||||||
|
|
||||||
|
for( size_t i = 0; i < max; i++ )
|
||||||
{
|
{
|
||||||
if( !m_icons[i].Ok() )
|
if( !m_icons[i].Ok() )
|
||||||
continue;
|
continue;
|
||||||
@ -105,11 +118,8 @@ const wxIcon& wxIconBundle::GetIcon( const wxSize& size ) const
|
|||||||
|
|
||||||
// return the system-sized icon if we've got one
|
// return the system-sized icon if we've got one
|
||||||
if( sysIcon ) return *sysIcon;
|
if( sysIcon ) return *sysIcon;
|
||||||
// return the first icon, if we have one
|
// we certainly have at least one icon thanks to the <=1 check above
|
||||||
if( max > 0 ) // fix for broken BCC
|
tmp = &m_icons[0];
|
||||||
tmp = &m_icons[0];
|
|
||||||
else
|
|
||||||
tmp = &wxNullIcon;
|
|
||||||
return *tmp;
|
return *tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user