X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9f8845289521c7f53e95b6dfd8275daab8b05639..b74077ace2413000c5556cbe0c41ab210ac12c54:/src/common/ctrlcmn.cpp diff --git a/src/common/ctrlcmn.cpp b/src/common/ctrlcmn.cpp index 437aea4a0a..1a026c4e39 100644 --- a/src/common/ctrlcmn.cpp +++ b/src/common/ctrlcmn.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: ctrlcmn.cpp +// Name: src/common/ctrlcmn.cpp // Purpose: wxControl common interface // Author: Vadim Zeitlin // Modified by: @@ -17,11 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "controlbase.h" - #pragma implementation "statbmpbase.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -31,15 +26,17 @@ #if wxUSE_CONTROLS +#include "wx/control.h" + #ifndef WX_PRECOMP - #include "wx/control.h" #include "wx/log.h" + #include "wx/radiobut.h" + #include "wx/statbmp.h" + #include "wx/bitmap.h" + #include "wx/utils.h" // for wxStripMenuCodes() #endif -#if wxUSE_STATBMP - #include "wx/bitmap.h" - #include "wx/statbmp.h" -#endif // wxUSE_STATBMP +const wxChar wxControlNameStr[] = wxT("control"); // ============================================================================ // implementation @@ -79,14 +76,21 @@ bool wxControlBase::CreateControl(wxWindowBase *parent, // even if it's possible to create controls without parents in some port, // it should surely be discouraged because it doesn't work at all under // Windows - wxCHECK_MSG( parent, FALSE, wxT("all controls must have parents") ); + wxCHECK_MSG( parent, false, wxT("all controls must have parents") ); if ( !CreateBase(parent, id, pos, size, style, validator, name) ) - return FALSE; + return false; parent->AddChild(this); - return TRUE; + return true; +} + +/* static */ +wxString wxControlBase::GetLabelText(const wxString& label) +{ + // we don't want strip the TABs here, just the mnemonics + return wxStripMenuCodes(label, wxStrip_Mnemonics); } void wxControlBase::Command(wxCommandEvent& event) @@ -116,17 +120,42 @@ void wxControlBase::InitCommandEvent(wxCommandEvent& event) const } } - -void wxControlBase::SetLabel( const wxString &label ) +bool wxControlBase::SetFont(const wxFont& font) { InvalidateBestSize(); - wxWindow::SetLabel(label); + return wxWindow::SetFont(font); } -bool wxControlBase::SetFont(const wxFont& font) +// wxControl-specific processing after processing the update event +void wxControlBase::DoUpdateWindowUI(wxUpdateUIEvent& event) { - InvalidateBestSize(); - return wxWindow::SetFont(font); + // call inherited + wxWindowBase::DoUpdateWindowUI(event); + + // update label + if ( event.GetSetText() ) + { + if ( event.GetText() != GetLabel() ) + SetLabel(event.GetText()); + } + + // Unfortunately we don't yet have common base class for + // wxRadioButton, so we handle updates of radiobuttons here. + // TODO: If once wxRadioButtonBase will exist, move this code there. +#if wxUSE_RADIOBTN + if ( event.GetSetChecked() ) + { + wxRadioButton *radiobtn = wxDynamicCastThis(wxRadioButton); + if ( radiobtn ) + radiobtn->SetValue(event.GetChecked()); + } +#endif // wxUSE_RADIOBTN +} + +/* static */ +wxString wxControlBase::RemoveMnemonics(const wxString& str) +{ + return wxStripMenuCodes(str, wxStrip_Mnemonics); } // ---------------------------------------------------------------------------- @@ -156,4 +185,3 @@ wxSize wxStaticBitmapBase::DoGetBestSize() const #endif // wxUSE_STATBMP #endif // wxUSE_CONTROLS -