X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d7eebb6b2984419651b31ea88b2a863fb2b3cca..235751501d3bb4141424cc08a7d88dd506746d18:/src/msw/ownerdrw.cpp diff --git a/src/msw/ownerdrw.cpp b/src/msw/ownerdrw.cpp index ffda6982b5..f527ed834b 100644 --- a/src/msw/ownerdrw.cpp +++ b/src/msw/ownerdrw.cpp @@ -21,6 +21,7 @@ #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" @@ -354,7 +355,8 @@ bool wxOwnerDrawn::OnDrawItem(wxDC& dc, SIZE sizeRect; ::GetTextExtentPoint32(hdc, strMenuText.c_str(), strMenuText.length(), &sizeRect); ::DrawState(hdc, NULL, NULL, - (LPARAM)strMenuText.c_str(), strMenuText.length(), + (LPARAM)strMenuText.wx_str(), + strMenuText.length(), xText, rc.y + (int) ((rc.GetHeight()-sizeRect.cy)/2.0), // centre text vertically rc.GetWidth()-margin, sizeRect.cy, DST_PREFIXTEXT | @@ -371,7 +373,8 @@ bool wxOwnerDrawn::OnDrawItem(wxDC& dc, // right align accel string with right edge of menu ( offset by the // margin width ) ::DrawState(hdc, NULL, NULL, - (LPARAM)m_strAccel.c_str(), m_strAccel.length(), + (LPARAM)m_strAccel.wx_str(), + m_strAccel.length(), rc.GetWidth()-16-accel_width, rc.y+(int) ((rc.GetHeight()-sizeRect.cy)/2.0), 0, 0, DST_TEXT | @@ -421,9 +424,20 @@ 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() )