diff --git a/src/msw/checklst.cpp b/src/msw/checklst.cpp index 97f0cec73a..c47e6c3e09 100644 --- a/src/msw/checklst.cpp +++ b/src/msw/checklst.cpp @@ -157,7 +157,14 @@ bool wxCheckListBoxItem::OnDrawItem(wxDC& dc, const wxRect& rc, int y = rc.GetY() + (rc.GetHeight() - size.GetHeight()) / 2; UINT uState = stat & wxOwnerDrawn::wxODSelected ? wxDSB_SELECTED : wxDSB_NORMAL; + + // checkmarks should not be mirrored in RTL layout + DWORD oldLayout = ::GetLayout(hdc); + if ( oldLayout & LAYOUT_RTL ) + ::SetLayout(hdc, oldLayout | LAYOUT_BITMAPORIENTATIONPRESERVED); wxDrawStateBitmap(hdc, hBmpCheck, x, y, uState); + if ( oldLayout & LAYOUT_RTL ) + ::SetLayout(hdc, oldLayout); return true; }