X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/caf587aaeb7d3ae631446d32dc45dc3cbf724528..e955eee585cc61b63f1d5be2938b015adef8fd55:/src/msw/toplevel.cpp diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index 531e165bb6..c0657b18bf 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -972,7 +972,7 @@ wxString wxTopLevelWindowMSW::GetTitle() const return GetLabel(); } -void wxTopLevelWindowMSW::DoSelectAndSetIcon(const wxIconBundle& icons, +bool wxTopLevelWindowMSW::DoSelectAndSetIcon(const wxIconBundle& icons, int smX, int smY, int i) @@ -983,15 +983,29 @@ void wxTopLevelWindowMSW::DoSelectAndSetIcon(const wxIconBundle& icons, if ( icon.Ok() ) { ::SendMessage(GetHwnd(), WM_SETICON, i, (LPARAM)GetHiconOf(icon)); + return true; } + + return false; } void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons) { wxTopLevelWindowBase::SetIcons(icons); - DoSelectAndSetIcon(icons, SM_CXSMICON, SM_CYSMICON, ICON_SMALL); - DoSelectAndSetIcon(icons, SM_CXICON, SM_CYICON, ICON_BIG); + if ( icons.IsEmpty() ) + { + // FIXME: SetIcons(wxNullIconBundle) should unset existing icons, + // but we currently don't do that + wxASSERT_MSG( m_icons.IsEmpty(), "unsetting icons doesn't work" ); + return; + } + + if ( !DoSelectAndSetIcon(icons, SM_CXSMICON, SM_CYSMICON, ICON_SMALL) && + !DoSelectAndSetIcon(icons, SM_CXICON, SM_CYICON, ICON_BIG) ) + { + wxFAIL_MSG( "icon bundle doesn't contain any suitable icon" ); + } } bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)