X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ac8d0c118b7403e2838e75124b442051299e6f6c..8981608c698da2cb217b6cdeffad77011a99bf7c:/src/common/ctrlcmn.cpp diff --git a/src/common/ctrlcmn.cpp b/src/common/ctrlcmn.cpp index 468a4ac93b..7265096e4a 100644 --- a/src/common/ctrlcmn.cpp +++ b/src/common/ctrlcmn.cpp @@ -1,11 +1,11 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: ctrlcmn.cpp +// Name: src/common/ctrlcmn.cpp // Purpose: wxControl common interface // Author: Vadim Zeitlin // Modified by: // Created: 26.07.99 // RCS-ID: $Id$ -// Copyright: (c) wxWindows team +// Copyright: (c) wxWidgets team // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -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" @@ -34,6 +29,7 @@ #ifndef WX_PRECOMP #include "wx/control.h" #include "wx/log.h" + #include "wx/radiobut.h" #endif #if wxUSE_STATBMP @@ -79,35 +75,14 @@ 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; -} - -// inherit colour and font settings from the parent window -void wxControlBase::InheritAttributes() -{ - // it definitely doesn't make sense to inherit the background colour as the - // controls typically have their own standard one and probably not the - // foreground neither? -#if 0 - SetBackgroundColour(GetParent()->GetBackgroundColour()); - SetForegroundColour(GetParent()->GetForegroundColour()); -#endif // 0 - -#ifdef __WXPM__ - // - // All OS/2 ctrls use the small font - // - SetFont(*wxSMALL_FONT); -#else - SetFont(GetParent()->GetFont()); -#endif + return true; } void wxControlBase::Command(wxCommandEvent& event) @@ -137,6 +112,45 @@ void wxControlBase::InitCommandEvent(wxCommandEvent& event) const } } + +void wxControlBase::SetLabel( const wxString &label ) +{ + InvalidateBestSize(); + wxWindow::SetLabel(label); +} + +bool wxControlBase::SetFont(const wxFont& font) +{ + InvalidateBestSize(); + return wxWindow::SetFont(font); +} + +// wxControl-specific processing after processing the update event +void wxControlBase::DoUpdateWindowUI(wxUpdateUIEvent& event) +{ + // 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 +} + // ---------------------------------------------------------------------------- // wxStaticBitmap // ---------------------------------------------------------------------------- @@ -148,17 +162,19 @@ wxStaticBitmapBase::~wxStaticBitmapBase() // this destructor is required for Darwin } -wxSize wxStaticBitmapBase::DoGetBestClientSize() const +wxSize wxStaticBitmapBase::DoGetBestSize() const { + wxSize best; wxBitmap bmp = GetBitmap(); if ( bmp.Ok() ) - return wxSize(bmp.GetWidth(), bmp.GetHeight()); - - // this is completely arbitrary - return wxSize(16, 16); + best = wxSize(bmp.GetWidth(), bmp.GetHeight()); + else + // this is completely arbitrary + best = wxSize(16, 16); + CacheBestSize(best); + return best; } #endif // wxUSE_STATBMP #endif // wxUSE_CONTROLS -