X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3363eadf72621b0d2c5a1db545e0c2c5bf304de7..43a997b6e2064a189fa73ca1816908fb740ce297:/src/generic/spinctlg.cpp?ds=sidebyside diff --git a/src/generic/spinctlg.cpp b/src/generic/spinctlg.cpp index 3488d1f074..548025594a 100644 --- a/src/generic/spinctlg.cpp +++ b/src/generic/spinctlg.cpp @@ -28,8 +28,8 @@ #pragma hdrstop #endif -#if !(defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXPM__)) || defined(__WXMAC__) || \ - defined(__WXUNIVERSAL__) +#if !(defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXPM__)) || \ + defined(__WXMAC__) || defined(__WXUNIVERSAL__) #ifndef WX_PRECOMP #include "wx/textctrl.h" @@ -107,11 +107,20 @@ public: } protected: - void OnSpinButton(wxSpinEvent& event) + void OnSpinButton(wxSpinEvent& eventSpin) { - m_spin->SetTextValue(event.GetPosition()); +#if defined(__WXMAC__) || defined(__WXMOTIF__) + m_spin->SetTextValue(eventSpin.GetPosition()); - event.Skip(); + wxCommandEvent event(wxEVT_COMMAND_SPINCTRL_UPDATED, m_spin->GetId()); + event.SetEventObject(m_spin); + event.SetInt(eventSpin.GetPosition()); + + m_spin->GetEventHandler()->ProcessEvent(event); +#else + m_spin->SetTextValue(eventSpin.GetPosition()); + eventSpin.Skip(); +#endif } private: @@ -125,7 +134,7 @@ BEGIN_EVENT_TABLE(wxSpinCtrlButton, wxSpinButton) END_EVENT_TABLE() IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl) - + // ============================================================================ // implementation // ============================================================================ @@ -151,7 +160,7 @@ bool wxSpinCtrl::Create(wxWindow *parent, int initial, const wxString& name) { - if ( !wxControl::Create(parent, id, pos, size, style, + if ( !wxControl::Create(parent, id, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, name) ) { return FALSE; @@ -181,7 +190,10 @@ bool wxSpinCtrl::Create(wxWindow *parent, } DoSetSize(pos.x, pos.y, csize.x, csize.y); #else - DoSetSize(pos.x, pos.y, size.x, size.y); + wxSize best = GetBestSize(); + if ( size.x != -1 ) best.x = size.x; + if ( size.y != -1 ) best.y = size.y; + DoSetSize(pos.x, pos.y, best.x, best.y); #endif // have to disable this window to avoid interfering it with message // processing to the text and the button... but pretend it is enabled to @@ -211,7 +223,7 @@ wxSpinCtrl::~wxSpinCtrl() // geometry // ---------------------------------------------------------------------------- -wxSize wxSpinCtrl::DoGetBestClientSize() const +wxSize wxSpinCtrl::DoGetBestSize() const { wxSize sizeBtn = m_btn->GetBestSize(), sizeText = m_text->GetBestSize(); @@ -319,7 +331,7 @@ void wxSpinCtrl::SetTextValue(int val) m_text->SetSelection(0, -1); // and give focus to the control! - m_text->SetFocus(); + // m_text->SetFocus(); Why???? TODO. } void wxSpinCtrl::SetValue(int val)