X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1a75e76f399bc91b3f841e7f77140e83f9bd5958..07aec89fe1e7bad8010911aa8863efecfa909946:/src/os2/button.cpp diff --git a/src/os2/button.cpp b/src/os2/button.cpp index 61b0d68fa4..4a9626a060 100644 --- a/src/os2/button.cpp +++ b/src/os2/button.cpp @@ -1,10 +1,9 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp +// Name: src/os2/button.cpp // Purpose: wxButton // Author: David Webster // Modified by: // Created: 10/13/99 -// RCS-ID: $Id$ // Copyright: (c) David Webster // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -12,17 +11,20 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#include "wx/button.h" + #ifndef WX_PRECOMP #include "wx/app.h" - #include "wx/button.h" #include "wx/brush.h" #include "wx/panel.h" #include "wx/bmpbuttn.h" #include "wx/settings.h" #include "wx/dcscreen.h" #include "wx/scrolwin.h" + #include "wx/toplevel.h" #endif +#include "wx/stockitem.h" #include "wx/os2/private.h" #define BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cy) (11*EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)/10) @@ -36,23 +38,23 @@ #define BST_CHECKED 0x0001 #endif -IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) - // Button -bool wxButton::Create( - wxWindow* pParent -, wxWindowID vId -, const wxString& rsLabel -, const wxPoint& rPos -, const wxSize& rSize -, long lStyle -#if wxUSE_VALIDATORS -, const wxValidator& rValidator -#endif -, const wxString& rsName -) +bool wxButton::Create( wxWindow* pParent, + wxWindowID vId, + const wxString& rsLbl, + const wxPoint& rPos, + const wxSize& rSize, + long lStyle, + const wxValidator& rValidator, + const wxString& rsName) { + wxString rsLabel(rsLbl); + if (rsLabel.empty() && wxIsStockID(vId)) + rsLabel = wxGetStockLabel(vId); + + wxString sLabel = ::wxPMTextToLabel(rsLabel); + SetName(rsName); #if wxUSE_VALIDATORS SetValidator(rValidator); @@ -75,7 +77,7 @@ bool wxButton::Create( m_hWnd = (WXHWND)::WinCreateWindow( GetHwndOf(pParent) // Parent handle ,WC_BUTTON // A Button class window - ,(PSZ)rsLabel.c_str() // Button text + ,sLabel.c_str() // Button text ,lStyle // Button style ,0, 0, 0, 0 // Location and size ,GetHwndOf(pParent) // Owner handle @@ -86,7 +88,7 @@ bool wxButton::Create( ); if (m_hWnd == 0) { - return FALSE; + return false; } // @@ -107,21 +109,21 @@ bool wxButton::Create( ,rSize.y ); delete pButtonFont; - return TRUE; + return true; } // end of wxButton::Create wxButton::~wxButton() { - wxPanel* pPanel = wxDynamicCast(GetParent(), wxPanel); + wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); - if (pPanel) + if (tlw) { - if (pPanel->GetDefaultItem() == this) + if (tlw->GetDefaultItem() == this) { // // Don't leave the panel with invalid default item // - pPanel->SetDefaultItem(NULL); + tlw->SetDefaultItem(NULL); } } } // end of wxButton::~wxButton @@ -136,6 +138,7 @@ wxSize wxButton::DoGetBestSize() const int nWidthButton; int nWidthChar; int nHeightChar; + wxFont vFont = (wxFont)GetFont(); GetTextExtent( rsLabel ,&nWidthButton @@ -145,7 +148,7 @@ wxSize wxButton::DoGetBestSize() const wxGetCharSize( GetHWND() ,&nWidthChar ,&nHeightChar - ,(wxFont*)&GetFont() + ,&vFont ); // @@ -161,7 +164,7 @@ wxSize wxButton::DoGetBestSize() const // // Need a little extra to make it look right // - nHeightButton += nHeightChar/1.5; + nHeightButton += (int)(nHeightChar/1.5); if (!HasFlag(wxBU_EXACTFIT)) { @@ -217,7 +220,7 @@ void wxButton::Command ( bool wxButton::SendClickEvent() { - wxCommandEvent vEvent( wxEVT_COMMAND_BUTTON_CLICKED + wxCommandEvent vEvent( wxEVT_BUTTON ,GetId() ); @@ -225,58 +228,44 @@ bool wxButton::SendClickEvent() return ProcessCommand(vEvent); } // end of wxButton::SendClickEvent -void wxButton::SetDefault() +wxWindow *wxButton::SetDefault() { - wxWindow* pParent = GetParent(); - - wxCHECK_RET( pParent, _T("button without parent?") ); - // - // Set this one as the default button both for wxWindows and Windows + // Set this one as the default button both for wxWidgets and Windows // - wxWindow* pWinOldDefault = pParent->SetDefaultItem(this); - - SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton) - ,FALSE - ); - SetDefaultStyle( this - ,TRUE - ); + wxWindow* pWinOldDefault = wxButtonBase::SetDefault(); + + SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton), false); + SetDefaultStyle( this, true ); + + return pWinOldDefault; } // end of wxButton::SetDefault void wxButton::SetTmpDefault() { - wxWindow* pParent = GetParent(); + wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); - wxCHECK_RET( pParent, _T("button without parent?") ); + wxCHECK_RET( tlw, wxT("button without top level window?") ); - wxWindow* pWinOldDefault = pParent->GetDefaultItem(); + wxWindow* pWinOldDefault = tlw->GetDefaultItem(); - pParent->SetTmpDefaultItem(this); - SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton) - ,FALSE - ); - SetDefaultStyle( this - ,TRUE - ); + tlw->SetTmpDefaultItem(this); + SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton), false); + SetDefaultStyle( this, true ); } // end of wxButton::SetTmpDefault void wxButton::UnsetTmpDefault() { - wxWindow* pParent = GetParent(); + wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); - wxCHECK_RET( pParent, _T("button without parent?") ); + wxCHECK_RET( tlw, wxT("button without top level window?") ); - pParent->SetTmpDefaultItem(NULL); + tlw->SetTmpDefaultItem(NULL); - wxWindow* pWinOldDefault = pParent->GetDefaultItem(); + wxWindow* pWinOldDefault = tlw->GetDefaultItem(); - SetDefaultStyle( this - ,FALSE - ); - SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton) - ,TRUE - ); + SetDefaultStyle( this, false ); + SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton), true ); } // end of wxButton::UnsetTmpDefault void wxButton::SetDefaultStyle( @@ -313,7 +302,7 @@ void wxButton::SetDefaultStyle( if ((lStyle & BS_USERBUTTON) != BS_USERBUTTON) { if (bOn) - lStyle | BS_DEFAULT; + lStyle |= BS_DEFAULT; else lStyle &= ~BS_DEFAULT; ::WinSetWindowULong(GetHwndOf(pBtn), QWL_STYLE, lStyle); @@ -333,12 +322,9 @@ void wxButton::SetDefaultStyle( // event/message handlers // ---------------------------------------------------------------------------- -bool wxButton::OS2Command( - WXUINT uParam -, WXWORD wId -) +bool wxButton::OS2Command(WXUINT uParam, WXWORD WXUNUSED(wId)) { - bool bProcessed = FALSE; + bool bProcessed = false; switch (uParam) { @@ -347,21 +333,20 @@ bool wxButton::OS2Command( bProcessed = SendClickEvent(); break; } + return bProcessed; } // end of wxButton::OS2Command -WXHBRUSH wxButton::OnCtlColor( - WXHDC pDC -, WXHWND pWnd -, WXUINT nCtlColor -, WXUINT uMessage -, WXWPARAM wParam -, WXLPARAM lParam -) +WXHBRUSH wxButton::OnCtlColor( WXHDC WXUNUSED(pDC), + WXHWND WXUNUSED(pWnd), + WXUINT WXUNUSED(nCtlColor), + WXUINT WXUNUSED(uMessage), + WXWPARAM WXUNUSED(wParam), + WXLPARAM WXUNUSED(lParam) ) { - wxBrush* pBackgroundBrush = wxTheBrushList->FindOrCreateBrush( GetBackgroundColour() - ,wxSOLID - ); + wxBrush* pBackgroundBrush = wxTheBrushList->FindOrCreateBrush( GetBackgroundColour() + ,wxSOLID + ); return (WXHBRUSH)pBackgroundBrush->GetResourceHandle(); } // end of wxButton::OnCtlColor @@ -395,18 +380,16 @@ WXDWORD wxButton::OS2GetStyle( // // We must use WS_CLIPSIBLINGS with the buttons or they would draw over - // each other in any resizeable dialog which has more than one button in + // each other in any resizable dialog which has more than one button in // the bottom // dwStyle |= WS_CLIPSIBLINGS; return dwStyle; } // end of wxButton::OS2GetStyle -MRESULT wxButton::WindowProc( - WXUINT uMsg -, WXWPARAM wParam -, WXLPARAM lParam -) +MRESULT wxButton::WindowProc( WXUINT uMsg, + WXWPARAM wParam, + WXLPARAM lParam ) { // // When we receive focus, we want to temporary become the default button in @@ -449,4 +432,3 @@ MRESULT wxButton::WindowProc( ,lParam )); } // end of wxWindowProc -