X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6670f56440ae9209b3e2e51e06acf3bc5aaf1905..cf283a470ab3eb4bc69959e3b5ae0edf30337fa5:/src/os2/bmpbuttn.cpp?ds=sidebyside diff --git a/src/os2/bmpbuttn.cpp b/src/os2/bmpbuttn.cpp index ed319ad85a..6bd9f29557 100644 --- a/src/os2/bmpbuttn.cpp +++ b/src/os2/bmpbuttn.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp +// Name: src/os2/bmpbuttn.cpp // Purpose: wxBitmapButton // Author: David Webster // Modified by: @@ -14,8 +14,9 @@ #if wxUSE_BMPBUTTON -#ifndef WX_PRECOMP #include "wx/bmpbuttn.h" + +#ifndef WX_PRECOMP #endif #include "wx/os2/private.h" @@ -52,20 +53,20 @@ bool wxBitmapButton::Create( wxWindow* pParent, m_marginY = wxDEFAULT_BUTTON_MARGIN; } - int nX = rPos.x; - int nY = rPos.y; - int nWidth = rSize.x; - int nHeight = rSize.y; + int nX = rPos.x; + int nY = rPos.y; + int nWidth = rSize.x; + int nHeight = rSize.y; - if (vId == -1) + if (vId == wxID_ANY) m_windowId = NewControlId(); else m_windowId = vId; - if (nWidth == -1 && rBitmap.Ok()) + if (nWidth == wxDefaultCoord && rBitmap.Ok()) nWidth = rBitmap.GetWidth() + 4 * m_marginX; - if (nHeight == -1 && rBitmap.Ok()) + if (nHeight == wxDefaultCoord && rBitmap.Ok()) nHeight = rBitmap.GetHeight() + 4 * m_marginY; ULONG ulOS2Style = WS_VISIBLE | WS_TABSTOP | BS_USERBUTTON; @@ -100,15 +101,15 @@ bool wxBitmapButton::Create( wxWindow* pParent, bool wxBitmapButton::OS2OnDraw( WXDRAWITEMSTRUCT* pItem) { - PUSERBUTTON pUser = (PUSERBUTTON)pItem; - bool bAutoDraw = (GetWindowStyleFlag() & wxBU_AUTODRAW) != 0; + PUSERBUTTON pUser = (PUSERBUTTON)pItem; + bool bAutoDraw = (GetWindowStyleFlag() & wxBU_AUTODRAW) != 0; if (!pUser) - return FALSE; + return false; - wxBitmap* pBitmap; - bool bIsSelected = pUser->fsState & BDS_HILITED; - wxClientDC vDc(this); + wxBitmap* pBitmap; + bool bIsSelected = pUser->fsState & BDS_HILITED; + wxClientDC vDc(this); if (bIsSelected && m_bmpSelected.Ok()) pBitmap = &m_bmpSelected; @@ -120,22 +121,21 @@ bool wxBitmapButton::OS2OnDraw( WXDRAWITEMSTRUCT* pItem) pBitmap = &m_bmpNormal; if (!pBitmap->Ok() ) - return FALSE; + return false; // // 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; + int nHeight = vDc.m_vRclPaint.yTop - vDc.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) { @@ -146,11 +146,7 @@ bool wxBitmapButton::OS2OnDraw( WXDRAWITEMSTRUCT* pItem) // // Draw the button face // - { - DrawFace( vDc - ,bIsSelected - ); - } + DrawFace( vDc, bIsSelected ); // // Draw the bitmap @@ -162,9 +158,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) { @@ -186,33 +180,40 @@ 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); + // top rDC.DrawLine( rDC.m_vRclPaint.xLeft + 1 - ,rDC.m_vRclPaint.yTop - 1 + ,rDC.m_vRclPaint.yBottom + 1 ,rDC.m_vRclPaint.xRight - 1 - ,rDC.m_vRclPaint.yTop - 1 + ,rDC.m_vRclPaint.yBottom + 1 ); + // left rDC.DrawLine( rDC.m_vRclPaint.xLeft + 1 - ,rDC.m_vRclPaint.yTop - 1 - ,rDC.m_vRclPaint.xLeft + 1 ,rDC.m_vRclPaint.yBottom + 1 + ,rDC.m_vRclPaint.xLeft + 1 + ,rDC.m_vRclPaint.yTop - 1 ); rDC.SetPen(bSel ? vHiLitePen : vDarkShadowPen); + // bottom rDC.DrawLine( rDC.m_vRclPaint.xLeft + 1 - ,rDC.m_vRclPaint.yBottom + 1 + ,rDC.m_vRclPaint.yTop - 1 ,rDC.m_vRclPaint.xRight - 1 - ,rDC.m_vRclPaint.yBottom + 1 + ,rDC.m_vRclPaint.yTop - 1 ); + // right rDC.DrawLine( rDC.m_vRclPaint.xRight - 1 - ,rDC.m_vRclPaint.yTop - 1 - ,rDC.m_vRclPaint.xRight - 1 ,rDC.m_vRclPaint.yBottom + 1 + ,rDC.m_vRclPaint.xRight - 1 + ,rDC.m_vRclPaint.yTop - 1 ); } // end of wxBitmapButton::DrawFace @@ -225,27 +226,32 @@ 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); + // top rDC.DrawLine( rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yTop + ,rDC.m_vRclPaint.yBottom ,rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yTop + ,rDC.m_vRclPaint.yBottom ); + // right rDC.DrawLine( rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yTop - ,rDC.m_vRclPaint.xRight ,rDC.m_vRclPaint.yBottom + ,rDC.m_vRclPaint.xRight + ,rDC.m_vRclPaint.yTop ); + // bottom rDC.DrawLine( rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yBottom + ,rDC.m_vRclPaint.yTop ,rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yBottom + ,rDC.m_vRclPaint.yTop ); + // left rDC.DrawLine( rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yBottom - ,rDC.m_vRclPaint.xLeft ,rDC.m_vRclPaint.yTop + ,rDC.m_vRclPaint.xLeft + ,rDC.m_vRclPaint.yBottom ); } // end of wxBitmapButton::DrawButtonFocus @@ -256,34 +262,34 @@ 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); + // top rDC.DrawLine( rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yTop + ,rDC.m_vRclPaint.yBottom ,rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yTop + ,rDC.m_vRclPaint.yBottom ); + // right rDC.DrawLine( rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yTop - ,rDC.m_vRclPaint.xRight ,rDC.m_vRclPaint.yBottom + ,rDC.m_vRclPaint.xRight + ,rDC.m_vRclPaint.yTop ); + // bottom rDC.DrawLine( rDC.m_vRclPaint.xRight - ,rDC.m_vRclPaint.yBottom + ,rDC.m_vRclPaint.yTop ,rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yBottom + ,rDC.m_vRclPaint.yTop ); + // left rDC.DrawLine( rDC.m_vRclPaint.xLeft - ,rDC.m_vRclPaint.yBottom - ,rDC.m_vRclPaint.xLeft ,rDC.m_vRclPaint.yTop + ,rDC.m_vRclPaint.xLeft + ,rDC.m_vRclPaint.yBottom ); wxDisableBitmap(rBmp, vGreyPen.GetColour().GetPixel()); } // end of wxBitmapButton::DrawButtonDisable -void wxBitmapButton::SetDefault() -{ - wxButton::SetDefault(); -} - #endif // ndef for wxUSE_BMPBUTTON