don't hardcode 16/32 as sizes for small/normal icons (fixes bug 1862812)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50999 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
e81fa3850e
commit
b9e6623377
@ -312,6 +312,7 @@ All (GUI):
|
||||
wxMSW:
|
||||
|
||||
- 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
|
||||
|
||||
|
||||
2.8.7
|
||||
|
@ -142,6 +142,11 @@ protected:
|
||||
virtual void DoGetSize(int *width, int *height) const;
|
||||
#endif // __WXWINCE__
|
||||
|
||||
// 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);
|
||||
|
||||
|
||||
// is the window currently iconized?
|
||||
bool m_iconized;
|
||||
|
@ -965,25 +965,26 @@ wxString wxTopLevelWindowMSW::GetTitle() const
|
||||
return GetLabel();
|
||||
}
|
||||
|
||||
void wxTopLevelWindowMSW::DoSelectAndSetIcon(const wxIconBundle& icons,
|
||||
int smX,
|
||||
int smY,
|
||||
int i)
|
||||
{
|
||||
const wxSize size(::GetSystemMetrics(smX), ::GetSystemMetrics(smY));
|
||||
|
||||
const wxIcon icon = icons.GetIconOfExactSize(size);
|
||||
if ( icon.Ok() )
|
||||
{
|
||||
::SendMessage(GetHwnd(), WM_SETICON, i, (LPARAM)GetHiconOf(icon));
|
||||
}
|
||||
}
|
||||
|
||||
void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons)
|
||||
{
|
||||
wxTopLevelWindowBase::SetIcons(icons);
|
||||
|
||||
#if !defined(__WXMICROWIN__)
|
||||
const wxIcon& sml = icons.GetIconOfExactSize(16);
|
||||
if( sml.Ok() )
|
||||
{
|
||||
::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_SMALL,
|
||||
(LPARAM)GetHiconOf(sml) );
|
||||
}
|
||||
|
||||
const wxIcon& big = icons.GetIconOfExactSize(32);
|
||||
if( big.Ok() )
|
||||
{
|
||||
::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_BIG,
|
||||
(LPARAM)GetHiconOf(big) );
|
||||
}
|
||||
#endif // !__WXMICROWIN__
|
||||
DoSelectAndSetIcon(icons, SM_CXSMICON, SM_CYSMICON, ICON_SMALL);
|
||||
DoSelectAndSetIcon(icons, SM_CXICON, SM_CYICON, ICON_BIG);
|
||||
}
|
||||
|
||||
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
|
||||
|
Loading…
Reference in New Issue
Block a user