X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/29172908bf90ddd8b70c5195b870745b5af3b7a3..1978421a6d8b81c1f8a961da4b8ddf544fec7b1b:/src/os2/dcmemory.cpp?ds=sidebyside diff --git a/src/os2/dcmemory.cpp b/src/os2/dcmemory.cpp index 7977733bb7..5e2ed33694 100644 --- a/src/os2/dcmemory.cpp +++ b/src/os2/dcmemory.cpp @@ -146,12 +146,34 @@ void wxMemoryDC::SelectObject( (rBitmap.GetSelectedInto() == this), wxT("Bitmap is selected in another wxMemoryDC, delete the first wxMemoryDC or use SelectObject(NULL)") ); + WXHBITMAP hBmp = rBitmap.GetHBITMAP(); + + if (!hBmp) + { + // + // Bmps drawn to are upside down, so flip it before committing + // + POINTL vPoint[4] = { 0, m_vSelectedBitmap.GetHeight(), + m_vSelectedBitmap.GetWidth(), 0, + 0, 0, m_vSelectedBitmap.GetWidth(), m_vSelectedBitmap.GetHeight() + }; + + + ::GpiBitBlt( m_hPS + ,m_hPS + ,4 + ,vPoint + ,ROP_SRCCOPY + ,BBO_IGNORE + ); + m_vSelectedBitmap.SetSelectedInto(NULL); + } m_vSelectedBitmap = rBitmap; - WXHBITMAP hBmp = rBitmap.GetHBITMAP(); if (!hBmp) { + m_hOldBitmap = (WXHBITMAP)::GpiSetBitmap(m_hPS, NULLHANDLE); return; }