don't hardcode 16/32 as sizes for small/normal icons (fixes bug 1862812)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@50999 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -118,8 +118,7 @@ All (Unix):
|
|||||||
wxMSW:
|
wxMSW:
|
||||||
|
|
||||||
- Fix rare bug with messages delivered to wrong wxSocket (Tim Kosse)
|
- Fix rare bug with messages delivered to wrong wxSocket (Tim Kosse)
|
||||||
|
- Fix setting icons when they have non-default (16*16 and 32*32) sizes
|
||||||
wxGTK:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -180,6 +180,11 @@ protected:
|
|||||||
#endif // __SMARTPHONE__ && __WXWINCE__
|
#endif // __SMARTPHONE__ && __WXWINCE__
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// helper of SetIcons(): calls gets the icon with the size specified by the
|
||||||
|
// given system metrics (SM_C{X|Y}[SM]ICON) from the bundle and sets it
|
||||||
|
// using WM_SETICON with the specified wParam (ICOM_SMALL or ICON_BIG)
|
||||||
|
void DoSelectAndSetIcon(const wxIconBundle& icons, int smX, int smY, int i);
|
||||||
|
|
||||||
|
|
||||||
#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
|
#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
|
||||||
void* m_activateInfo;
|
void* m_activateInfo;
|
||||||
|
@@ -910,25 +910,26 @@ void wxTopLevelWindowMSW::SetIcon(const wxIcon& icon)
|
|||||||
SetIcons( wxIconBundle( icon ) );
|
SetIcons( wxIconBundle( icon ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxTopLevelWindowMSW::DoSelectAndSetIcon(const wxIconBundle& icons,
|
||||||
|
int smX,
|
||||||
|
int smY,
|
||||||
|
int i)
|
||||||
|
{
|
||||||
|
const wxSize size(::GetSystemMetrics(smX), ::GetSystemMetrics(smY));
|
||||||
|
|
||||||
|
const wxIcon icon = icons.GetIcon(size);
|
||||||
|
if ( icon.Ok() && icon.GetWidth() == size.x && icon.GetHeight() == size.y )
|
||||||
|
{
|
||||||
|
::SendMessage(GetHwnd(), WM_SETICON, i, (LPARAM)GetHiconOf(icon));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons)
|
void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons)
|
||||||
{
|
{
|
||||||
wxTopLevelWindowBase::SetIcons(icons);
|
wxTopLevelWindowBase::SetIcons(icons);
|
||||||
|
|
||||||
#if !defined(__WXMICROWIN__)
|
DoSelectAndSetIcon(icons, SM_CXSMICON, SM_CYSMICON, ICON_SMALL);
|
||||||
const wxIcon& sml = icons.GetIcon( wxSize( 16, 16 ) );
|
DoSelectAndSetIcon(icons, SM_CXICON, SM_CYICON, ICON_BIG);
|
||||||
if( sml.Ok() && sml.GetWidth() == 16 && sml.GetHeight() == 16 )
|
|
||||||
{
|
|
||||||
::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_SMALL,
|
|
||||||
(LPARAM)GetHiconOf(sml) );
|
|
||||||
}
|
|
||||||
|
|
||||||
const wxIcon& big = icons.GetIcon( wxSize( 32, 32 ) );
|
|
||||||
if( big.Ok() && big.GetWidth() == 32 && big.GetHeight() == 32 )
|
|
||||||
{
|
|
||||||
::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_BIG,
|
|
||||||
(LPARAM)GetHiconOf(big) );
|
|
||||||
}
|
|
||||||
#endif // !__WXMICROWIN__
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
|
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
|
||||||
|
Reference in New Issue
Block a user