X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/29172908bf90ddd8b70c5195b870745b5af3b7a3..a0af0d98b5bb65da9f6b64a90dc3cfb642ee188e:/src/os2/dcmemory.cpp diff --git a/src/os2/dcmemory.cpp b/src/os2/dcmemory.cpp index 7977733bb7..a86c96edf6 100644 --- a/src/os2/dcmemory.cpp +++ b/src/os2/dcmemory.cpp @@ -146,12 +146,35 @@ 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; }