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:
@@ -312,6 +312,7 @@ All (GUI):
|
|||||||
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
|
||||||
|
|
||||||
|
|
||||||
2.8.7
|
2.8.7
|
||||||
|
@@ -142,6 +142,11 @@ protected:
|
|||||||
virtual void DoGetSize(int *width, int *height) const;
|
virtual void DoGetSize(int *width, int *height) const;
|
||||||
#endif // __WXWINCE__
|
#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?
|
// is the window currently iconized?
|
||||||
bool m_iconized;
|
bool m_iconized;
|
||||||
|
@@ -965,25 +965,26 @@ wxString wxTopLevelWindowMSW::GetTitle() const
|
|||||||
return GetLabel();
|
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)
|
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.GetIconOfExactSize(16);
|
DoSelectAndSetIcon(icons, SM_CXICON, SM_CYICON, ICON_BIG);
|
||||||
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__
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
|
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
|
||||||
|
Reference in New Issue
Block a user