X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9a83f860948059b0273b5cc6d9e43fadad3ebfca..cbab1556578ae39b1f00e0c4f6ca8016ac8124ac:/src/common/artprov.cpp diff --git a/src/common/artprov.cpp b/src/common/artprov.cpp index ff278ac39f..3a4f56b04c 100644 --- a/src/common/artprov.cpp +++ b/src/common/artprov.cpp @@ -238,6 +238,7 @@ wxArtProvider::~wxArtProvider() break; } + wxSize sizeNeeded = size; if ( !bmp.Ok() ) { // no bitmap created -- as a fallback, try if we can find desired @@ -245,28 +246,31 @@ wxArtProvider::~wxArtProvider() wxIconBundle iconBundle = DoGetIconBundle(id, client); if ( iconBundle.IsOk() ) { - wxSize sz(size != wxDefaultSize - ? size - : GetNativeSizeHint(client)); - wxIcon icon(iconBundle.GetIcon(sz)); + if ( sizeNeeded == wxDefaultSize ) + sizeNeeded = GetNativeSizeHint(client); + + wxIcon icon(iconBundle.GetIcon(sizeNeeded)); if ( icon.IsOk() ) + { + // this icon may be not of the correct size, it will be + // rescaled below in such case bmp.CopyFromIcon(icon); + } } } - if ( bmp.IsOk() ) - { - // if we didn't get the correct size, resize the bitmap + // if we didn't get the correct size, resize the bitmap #if wxUSE_IMAGE && (!defined(__WXMSW__) || wxUSE_WXDIB) - if ( size != wxDefaultSize && - (bmp.GetWidth() != size.x || bmp.GetHeight() != size.y) ) + if ( bmp.IsOk() && sizeNeeded != wxDefaultSize ) + { + if ( bmp.GetSize() != sizeNeeded ) { wxImage img = bmp.ConvertToImage(); - img.Rescale(size.x, size.y); + img.Rescale(sizeNeeded.x, sizeNeeded.y); bmp = wxBitmap(img); } -#endif } +#endif // wxUSE_IMAGE sm_cache->PutBitmap(hashId, bmp); } @@ -332,9 +336,8 @@ wxIconBundle wxArtProvider::DoGetIconBundle(const wxArtID& id, const wxArtClient } /* static */ -wxIcon wxArtProvider::GetMessageBoxIcon(int flags) +wxArtID wxArtProvider::GetMessageBoxIconId(int flags) { - wxIcon icon; switch ( flags & wxICON_MASK ) { default: @@ -342,23 +345,17 @@ wxIcon wxArtProvider::GetMessageBoxIcon(int flags) // fall through case wxICON_ERROR: - icon = wxArtProvider::GetIcon(wxART_ERROR, wxART_MESSAGE_BOX); - break; + return wxART_ERROR; case wxICON_INFORMATION: - icon = wxArtProvider::GetIcon(wxART_INFORMATION, wxART_MESSAGE_BOX); - break; + return wxART_INFORMATION; case wxICON_WARNING: - icon = wxArtProvider::GetIcon(wxART_WARNING, wxART_MESSAGE_BOX); - break; + return wxART_WARNING; case wxICON_QUESTION: - icon = wxArtProvider::GetIcon(wxART_QUESTION, wxART_MESSAGE_BOX); - break; + return wxART_QUESTION; } - - return icon; } /*static*/ wxSize wxArtProvider::GetSizeHint(const wxArtClient& client,