X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2d61b48d1496332e1337db9d4d841dc736e703c2..fa8dca8dd1ba0d6ee9b2c5919a3a944ecde68a50:/src/common/ctrlcmn.cpp?ds=sidebyside diff --git a/src/common/ctrlcmn.cpp b/src/common/ctrlcmn.cpp index b58927733f..97ea795e57 100644 --- a/src/common/ctrlcmn.cpp +++ b/src/common/ctrlcmn.cpp @@ -18,7 +18,8 @@ // ---------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma implementation "choicebase.h" + #pragma implementation "controlbase.h" + #pragma implementation "statbmpbase.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -28,15 +29,40 @@ #pragma hdrstop #endif +#if wxUSE_CONTROLS + #ifndef WX_PRECOMP #include "wx/control.h" #include "wx/log.h" #endif +#if wxUSE_STATBMP + #include "wx/bitmap.h" + #include "wx/statbmp.h" +#endif // wxUSE_STATBMP + // ============================================================================ // implementation // ============================================================================ +bool wxControlBase::Create(wxWindow *parent, + wxWindowID id, + const wxPoint &pos, + const wxSize &size, + long style, + const wxValidator& validator, + const wxString &name) +{ + bool ret = wxWindow::Create(parent, id, pos, size, style, name); + +#if wxUSE_VALIDATORS + if ( ret ) + SetValidator(validator); +#endif // wxUSE_VALIDATORS + + return ret; +} + bool wxControlBase::CreateControl(wxWindowBase *parent, wxWindowID id, const wxPoint& pos, @@ -48,7 +74,7 @@ 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, _T("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; @@ -68,5 +94,48 @@ void wxControlBase::InheritAttributes() void wxControlBase::Command(wxCommandEvent& event) { - (void)ProcessEvent(event); + (void)GetEventHandler()->ProcessEvent(event); } + +void wxControlBase::InitCommandEvent(wxCommandEvent& event) const +{ + event.SetEventObject((wxControlBase *)this); // const_cast + + // event.SetId(GetId()); -- this is usuall done in the event ctor + + switch ( m_clientDataType ) + { + case wxClientData_Void: + event.SetClientData(GetClientData()); + break; + + case wxClientData_Object: + event.SetClientObject(GetClientObject()); + break; + + case wxClientData_None: + // nothing to do + ; + } +} + +// ---------------------------------------------------------------------------- +// wxStaticBitmap +// ---------------------------------------------------------------------------- + +#if wxUSE_STATBMP + +wxSize wxStaticBitmapBase::DoGetBestClientSize() const +{ + wxBitmap bmp = GetBitmap(); + if ( bmp.Ok() ) + return wxSize(bmp.GetWidth(), bmp.GetHeight()); + + // this is completely arbitrary + return wxSize(16, 16); +} + +#endif // wxUSE_STATBMP + +#endif // wxUSE_CONTROLS +