X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9eddec696f06d65a80e7339b2fae14fcb55f8383..2ee322d90c0c0f39d4a3c5f0c942bbda4c7baa1a:/src/msw/ownerdrw.cpp diff --git a/src/msw/ownerdrw.cpp b/src/msw/ownerdrw.cpp index 94eca7820c..d772273b13 100644 --- a/src/msw/ownerdrw.cpp +++ b/src/msw/ownerdrw.cpp @@ -21,16 +21,17 @@ #include "wx/msw/private.h" #include "wx/font.h" #include "wx/bitmap.h" + #include "wx/image.h" #include "wx/dcmemory.h" #include "wx/menu.h" #include "wx/utils.h" #include "wx/settings.h" + #include "wx/menuitem.h" + #include "wx/module.h" #endif #include "wx/ownerdrw.h" -#include "wx/menuitem.h" #include "wx/fontutil.h" -#include "wx/module.h" #if wxUSE_OWNER_DRAWN @@ -421,15 +422,26 @@ bool wxOwnerDrawn::OnDrawItem(wxDC& dc, if ( !bmp.Ok() ) { - // for not checkable bitmaps we should always use unchecked one because - // their checked bitmap is not set + // for not checkable bitmaps we should always use unchecked one + // because their checked bitmap is not set bmp = GetBitmap(!IsCheckable() || (st & wxODChecked)); + +#if wxUSE_IMAGE + if ( bmp.Ok() && st & wxODDisabled ) + { + // we need to grey out the bitmap as we don't have any specific + // disabled bitmap + wxImage imgGrey = bmp.ConvertToImage().ConvertToGreyscale(); + if ( imgGrey.Ok() ) + bmp = wxBitmap(imgGrey); + } +#endif // wxUSE_IMAGE } if ( bmp.Ok() ) { wxMemoryDC dcMem(&dc); - dcMem.SelectObject(bmp); + dcMem.SelectObjectAsSource(bmp); // center bitmap int nBmpWidth = bmp.GetWidth(),