X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0367c1c0e82c6da38cea16c4bcef6583271789cc..578dc95029e761a59911b7c1bc09f59384d64ddf:/src/os2/dcclient.cpp?ds=sidebyside diff --git a/src/os2/dcclient.cpp b/src/os2/dcclient.cpp index 311c1025a3..083b902b3d 100644 --- a/src/os2/dcclient.cpp +++ b/src/os2/dcclient.cpp @@ -144,10 +144,6 @@ void wxWindowDC::InitDC() { wxColour vColor; - vColor.InitFromName("BLACK"); - m_pen.SetColour(vColor); - vColor.Set("WHITE"); - m_brush.SetColour(vColor); // // The background mode is only used for text background and is set in // DrawText() to OPAQUE as required, otherwise always TRANSPARENT, @@ -158,8 +154,37 @@ void wxWindowDC::InitDC() // Default bg colour is pne of the window // SetBackground(wxBrush(m_pCanvas->GetBackgroundColour(), wxSOLID)); + + vColor.InitFromName("BLACK"); + m_pen.SetColour(vColor); + vColor.Set("WHITE"); + m_brush.SetColour(vColor); + InitializePalette(); + wxFont* pFont = new wxFont( 12 + ,wxNORMAL + ,wxNORMAL + ,wxBOLD + ); + SetFont(*pFont); + delete pFont; + // + // OS/2 default vertical character allignment needs to match the other OS's + // + ::GpiSetTextAlignment((HPS)GetHPS(), TA_NORMAL_HORIZ, TA_BOTTOM); + } // end of wxWindowDC::InitDC +void wxWindowDC::DoGetSize( + int* pnWidth +, int* pnHeight +) const +{ + wxCHECK_RET( m_pCanvas, _T("wxWindowDC without a window?") ); + m_pCanvas->GetSize( pnWidth + ,pnHeight + ); +} // end of wxWindowDC::DoGetSize + // ---------------------------------------------------------------------------- // wxClientDC // ---------------------------------------------------------------------------- @@ -225,7 +250,7 @@ void wxClientDC::InitDC() // in wxUniv build we must manually do some DC adjustments usually // performed by Windows for us #ifdef __WXUNIVERSAL__ - wxPoint ptOrigin = m_canvas->GetClientAreaOrigin(); + wxPoint ptOrigin = m_pCanvas->GetClientAreaOrigin(); if ( ptOrigin.x || ptOrigin.y ) { // no need to shift DC origin if shift is null @@ -233,7 +258,7 @@ void wxClientDC::InitDC() } // clip the DC to avoid overwriting the non client area - SetClippingRegion(wxPoint(0, 0), m_canvas->GetClientSize()); + SetClippingRegion(wxPoint(0, 0), m_pCanvas->GetClientSize()); #endif // __WXUNIVERSAL__ } // end of wxClientDC::InitDC @@ -241,6 +266,17 @@ wxClientDC::~wxClientDC() { } // end of wxClientDC::~wxClientDC +void wxClientDC::DoGetSize( + int* pnWidth +, int* pnHeight +) const +{ + wxCHECK_RET( m_pCanvas, _T("wxWindowDC without a window?") ); + m_pCanvas->GetClientSize( pnWidth + ,pnHeight + ); +} // end of wxClientDC::DoGetSize + // ---------------------------------------------------------------------------- // wxPaintDC // ---------------------------------------------------------------------------- @@ -283,12 +319,14 @@ wxPaintDC::wxPaintDC( { HPS hPS; + m_hDC = ::WinOpenWindowDC(GetWinHwnd(m_pCanvas)); hPS = ::WinBeginPaint( GetWinHwnd(m_pCanvas) ,NULLHANDLE ,&g_paintStruct ); if(hPS) { + ::GpiAssociate(hPS, m_hDC); m_hOldPS = m_hPS; m_hPS = hPS; ::GpiCreateLogColorTable( m_hPS @@ -313,7 +351,6 @@ wxPaintDC::wxPaintDC( } m_bIsPaintTime = TRUE; - m_hDC = (WXHDC) -1; // to satisfy those anonizmous efforts ms_cache.Add(new wxPaintDCInfo(m_pCanvas, this)); } InitDC(); @@ -335,7 +372,7 @@ wxPaintDC::~wxPaintDC() ::WinEndPaint(m_hPS); m_hPS = m_hOldPS; m_bIsPaintTime = FALSE; - ms_cache.Remove(nIndex); + ms_cache.RemoveAt(nIndex); } //else: cached DC entry is still in use