X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2dace059ee7aefeea0f2b843f1808b117f112795..0e7bd27a8dfc9a8350355cf51023046fc30496ef:/src/msw/gdiimage.cpp diff --git a/src/msw/gdiimage.cpp b/src/msw/gdiimage.cpp index d97e57e0fa..3ead2479d1 100644 --- a/src/msw/gdiimage.cpp +++ b/src/msw/gdiimage.cpp @@ -355,6 +355,8 @@ bool wxBMPFileHandler::LoadFile(wxBitmap *bitmap, #if wxUSE_IMAGE_LOADING_IN_MSW wxPalette *palette = NULL; bool success = wxLoadIntoBitmap(WXSTRINGCAST name, bitmap, &palette) != 0; + +#if wxUSE_PALETTE if ( success && palette ) { bitmap->SetPalette(*palette); @@ -362,6 +364,7 @@ bool wxBMPFileHandler::LoadFile(wxBitmap *bitmap, // it was copied by the bitmap if it was loaded successfully delete palette; +#endif // wxUSE_PALETTE return success; #else @@ -375,9 +378,15 @@ bool wxBMPFileHandler::SaveFile(wxBitmap *bitmap, const wxPalette *pal) { #if wxUSE_IMAGE_LOADING_IN_MSW + +#if wxUSE_PALETTE wxPalette *actualPalette = (wxPalette *)pal; if ( !actualPalette ) actualPalette = bitmap->GetPalette(); +#else + wxPalette *actualPalette = NULL; +#endif // wxUSE_PALETTE + return wxSaveBitmap(WXSTRINGCAST name, bitmap, actualPalette) != 0; #else return FALSE; @@ -493,11 +502,17 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, { HICON hicon; + // do we need the icon of the specific size or would any icon do? + bool hasSize = desiredWidth != -1 || desiredHeight != -1; + + wxASSERT_MSG( !hasSize || (desiredWidth != -1 && desiredHeight != -1), + _T("width and height should be either both -1 or not") ); + // try to load the icon from this program first to allow overriding the // standard icons (although why one would want to do it considering that // we already have wxApp::GetStdIcon() is unclear) #if defined(__WIN32__) && !defined(__SC__) - if ( desiredWidth != -1 && desiredHeight != -1 ) + if ( hasSize ) { hicon = (HICON)::LoadImage(wxGetInstance(), name, IMAGE_ICON, desiredWidth, desiredHeight, @@ -510,7 +525,7 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, } // next check if it's not a standard icon - if ( !hicon ) + if ( !hicon && !hasSize ) { static const struct { @@ -528,11 +543,7 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, { if ( name == stdIcons[nIcon].name ) { - hicon = (HICON)::LoadImage((HINSTANCE)NULL, - stdIcons[nIcon].id, - IMAGE_ICON, - desiredWidth, desiredHeight, - LR_DEFAULTCOLOR); + hicon = ::LoadIcon((HINSTANCE)NULL, stdIcons[nIcon].id); } } }