X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/910b005366bf2dbf317284d02ac47c18c2c27ee9..3ec704b4221ee4d66ebb1cb98f1dc1017f68bec3:/src/os2/bmpbuttn.cpp diff --git a/src/os2/bmpbuttn.cpp b/src/os2/bmpbuttn.cpp index 12ce06f727..bfaf5a7217 100644 --- a/src/os2/bmpbuttn.cpp +++ b/src/os2/bmpbuttn.cpp @@ -19,6 +19,7 @@ #ifndef WX_PRECOMP #endif +#include "wx/os2/dcclient.h" #include "wx/os2/private.h" @@ -127,16 +128,16 @@ bool wxBitmapButton::OS2OnDraw( WXDRAWITEMSTRUCT* pItem) // // Centre the bitmap in the control area // - int nX = 0; int nX1 = 0; int nY1 = 0; - int nWidth = vDc.m_vRclPaint.xRight - vDc.m_vRclPaint.xLeft; - int nHeight = vDc.m_vRclPaint.xRight - vDc.m_vRclPaint.xLeft; + wxPMDCImpl *impl = (wxPMDCImpl*) vDc.GetImpl(); + int nWidth = impl->m_vRclPaint.xRight - impl->m_vRclPaint.xLeft; + int nHeight = impl->m_vRclPaint.yTop - impl->m_vRclPaint.yBottom; int nBmpWidth = pBitmap->GetWidth(); int nBmpHeight = pBitmap->GetHeight(); - nX1 = nX + (nWidth - nBmpWidth) / 2; - nY1 = nX + (nHeight - nBmpHeight) / 2; + nX1 = (nWidth - nBmpWidth) / 2; + nY1 = (nHeight - nBmpHeight) / 2; if (bIsSelected && bAutoDraw) { @@ -147,11 +148,7 @@ bool wxBitmapButton::OS2OnDraw( WXDRAWITEMSTRUCT* pItem) // // Draw the button face // - { - DrawFace( vDc - ,bIsSelected - ); - } + DrawFace( vDc, bIsSelected ); // // Draw the bitmap @@ -163,9 +160,7 @@ bool wxBitmapButton::OS2OnDraw( WXDRAWITEMSTRUCT* pItem) // if ((pUser->fsState == BDS_DISABLED) && bAutoDraw) { - DrawButtonDisable( vDc - ,*pBitmap - ); + DrawButtonDisable( vDc, *pBitmap ); } else if ((pUser->fsState == BDS_DEFAULT) && bAutoDraw) { @@ -187,33 +182,41 @@ void wxBitmapButton::DrawFace (wxClientDC& rDC, bool bSel) // // Draw the main button face // - ::WinFillRect(rDC.GetHPS(), &rDC.m_vRclPaint, vFaceColor.GetPixel()); + // This triggers a redraw and destroys the bottom & left focus border and + // doesn't seem to do anything useful. + // ::WinFillRect(rDC.GetHPS(), &rDC.m_vRclPaint, vFaceColor.GetPixel()); // // Draw the border + // Note: DrawLine expects wxWidgets coordinate system so swap // rDC.SetPen(bSel ? vDarkShadowPen : vHiLitePen); - rDC.DrawLine( rDC.m_vRclPaint.xLeft + 1 - ,rDC.m_vRclPaint.yTop - 1 - ,rDC.m_vRclPaint.xRight - 1 - ,rDC.m_vRclPaint.yTop - 1 + wxPMDCImpl *impl = (wxPMDCImpl*) rDC.GetImpl(); + // top + rDC.DrawLine( impl->m_vRclPaint.xLeft + 1 + ,impl->m_vRclPaint.yBottom + 1 + ,impl->m_vRclPaint.xRight - 1 + ,impl->m_vRclPaint.yBottom + 1 ); - rDC.DrawLine( rDC.m_vRclPaint.xLeft + 1 - ,rDC.m_vRclPaint.yTop - 1 - ,rDC.m_vRclPaint.xLeft + 1 - ,rDC.m_vRclPaint.yBottom + 1 + // left + rDC.DrawLine( impl->m_vRclPaint.xLeft + 1 + ,impl->m_vRclPaint.yBottom + 1 + ,impl->m_vRclPaint.xLeft + 1 + ,impl->m_vRclPaint.yTop - 1 ); rDC.SetPen(bSel ? vHiLitePen : vDarkShadowPen); - rDC.DrawLine( rDC.m_vRclPaint.xLeft + 1 - ,rDC.m_vRclPaint.yBottom + 1 - ,rDC.m_vRclPaint.xRight - 1 - ,rDC.m_vRclPaint.yBottom + 1 + // bottom + rDC.DrawLine( impl->m_vRclPaint.xLeft + 1 + ,impl->m_vRclPaint.yTop - 1 + ,impl->m_vRclPaint.xRight - 1 + ,impl->m_vRclPaint.yTop - 1 ); - rDC.DrawLine( rDC.m_vRclPaint.xRight - 1 - ,rDC.m_vRclPaint.yTop - 1 - ,rDC.m_vRclPaint.xRight - 1 - ,rDC.m_vRclPaint.yBottom + 1 + // right + rDC.DrawLine( impl->m_vRclPaint.xRight - 1 + ,impl->m_vRclPaint.yBottom + 1 + ,impl->m_vRclPaint.xRight - 1 + ,impl->m_vRclPaint.yTop - 1 ); } // end of wxBitmapButton::DrawFace @@ -226,27 +229,33 @@ void wxBitmapButton::DrawButtonFocus ( // // Draw a thick black line around the outside of the button + // Note: DrawLine expects wxWidgets coordinate system so swap // rDC.SetPen(vBlackPen); - rDC.DrawLine( rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yTop - ,rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yTop + wxPMDCImpl *impl = (wxPMDCImpl*) rDC.GetImpl(); + // top + rDC.DrawLine( impl->m_vRclPaint.xLeft + ,impl->m_vRclPaint.yBottom + ,impl->m_vRclPaint.xRight + ,impl->m_vRclPaint.yBottom ); - rDC.DrawLine( rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yTop - ,rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yBottom + // right + rDC.DrawLine( impl->m_vRclPaint.xRight + ,impl->m_vRclPaint.yBottom + ,impl->m_vRclPaint.xRight + ,impl->m_vRclPaint.yTop ); - rDC.DrawLine( rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yBottom - ,rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yBottom + // bottom + rDC.DrawLine( impl->m_vRclPaint.xRight + ,impl->m_vRclPaint.yTop + ,impl->m_vRclPaint.xLeft + ,impl->m_vRclPaint.yTop ); - rDC.DrawLine( rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yBottom - ,rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yTop + // left + rDC.DrawLine( impl->m_vRclPaint.xLeft + ,impl->m_vRclPaint.yTop + ,impl->m_vRclPaint.xLeft + ,impl->m_vRclPaint.yBottom ); } // end of wxBitmapButton::DrawButtonFocus @@ -257,34 +266,35 @@ void wxBitmapButton::DrawButtonDisable( wxClientDC& rDC, // // Draw a thick black line around the outside of the button + // Note: DrawLine expects wxWidgets coordinate system so swap // rDC.SetPen(vGreyPen); - rDC.DrawLine( rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yTop - ,rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yTop + wxPMDCImpl *impl = (wxPMDCImpl*) rDC.GetImpl(); + // top + rDC.DrawLine( impl->m_vRclPaint.xLeft + ,impl->m_vRclPaint.yBottom + ,impl->m_vRclPaint.xRight + ,impl->m_vRclPaint.yBottom ); - rDC.DrawLine( rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yTop - ,rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yBottom + // right + rDC.DrawLine( impl->m_vRclPaint.xRight + ,impl->m_vRclPaint.yBottom + ,impl->m_vRclPaint.xRight + ,impl->m_vRclPaint.yTop ); - rDC.DrawLine( rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yBottom - ,rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yBottom + // bottom + rDC.DrawLine( impl->m_vRclPaint.xRight + ,impl->m_vRclPaint.yTop + ,impl->m_vRclPaint.xLeft + ,impl->m_vRclPaint.yTop ); - rDC.DrawLine( rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yBottom - ,rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yTop + // left + rDC.DrawLine( impl->m_vRclPaint.xLeft + ,impl->m_vRclPaint.yTop + ,impl->m_vRclPaint.xLeft + ,impl->m_vRclPaint.yBottom ); wxDisableBitmap(rBmp, vGreyPen.GetColour().GetPixel()); } // end of wxBitmapButton::DrawButtonDisable -void wxBitmapButton::SetDefault() -{ - wxButton::SetDefault(); -} - #endif // ndef for wxUSE_BMPBUTTON