X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4731b3ab863a192f1505116207fd26c49e384b68..951a1f6009bb9b5f719425eed116a320c58c32d0:/src/mac/carbon/spinctrl.cpp diff --git a/src/mac/carbon/spinctrl.cpp b/src/mac/carbon/spinctrl.cpp index 3db287f0a8..f9b3fb9e95 100644 --- a/src/mac/carbon/spinctrl.cpp +++ b/src/mac/carbon/spinctrl.cpp @@ -29,7 +29,10 @@ // we handle these problems right now in an extended vis region of a window static const wxCoord TEXTBORDER = 4 ; // the margin between the text control and the spin -static const wxCoord MARGIN = 8 - TEXTBORDER; +// HIG says 2px between text and stepper control, +// but a value of 3 leads to the same look as the +// spin controls in Apple's apps +static const wxCoord MARGIN = 3; // ---------------------------------------------------------------------------- // wxSpinCtrlText: text control used by spin control @@ -44,7 +47,7 @@ public: m_spin = spin; // remove the default minsize, the spinctrl will have one instead - SetSizeHints(-1,-1); + SetMinSize(wxDefaultSize); } bool ProcessEvent(wxEvent &event) @@ -57,7 +60,7 @@ public: } protected: - void OnKillFocus(wxFocusEvent &event) + void OnKillFocus(wxFocusEvent& WXUNUSED(event)) { long l; if ( !GetValue().ToLong(&l) ) @@ -65,35 +68,35 @@ protected: // not a number at all return; } - + // is within range if (l < m_spin->GetMin()) l = m_spin->GetMin(); if (l > m_spin->GetMax()) l = m_spin->GetMax(); - + // Update text control wxString str; str.Printf( wxT("%d"), (int)l ); if (str != GetValue()) SetValue( str ); - + if (l != m_spin->m_oldValue) { // set value in spin button // does that trigger an event? m_spin->m_btn->SetValue( l ); - + // if not wxCommandEvent event(wxEVT_COMMAND_SPINCTRL_UPDATED, m_spin->GetId()); event.SetEventObject(m_spin); event.SetInt(l); - m_spin->GetEventHandler()->ProcessEvent(event); - + m_spin->HandleWindowEvent(event); + m_spin->m_oldValue = l; - } + } } - + void OnTextChange(wxCommandEvent& event) { int val; @@ -116,7 +119,7 @@ protected: event.SetString(m_spin->GetText()->GetValue()); event.SetInt(val); - m_spin->GetEventHandler()->ProcessEvent(event); + m_spin->HandleWindowEvent(event); } event.Skip(); @@ -153,7 +156,7 @@ public: //SetWindowVariant(wxWINDOW_VARIANT_SMALL); // remove the default minsize, the spinctrl will have one instead - SetSizeHints(-1,-1); + SetMinSize(wxDefaultSize); } protected: @@ -166,7 +169,7 @@ protected: event.SetEventObject(m_spin); event.SetInt(pos); - m_spin->GetEventHandler()->ProcessEvent(event); + m_spin->HandleWindowEvent(event); m_spin->m_oldValue = pos; } @@ -202,7 +205,7 @@ void wxSpinCtrl::Init() { m_text = NULL; m_btn = NULL; - m_container.SetContainerWindow(this); + WX_INIT_CONTROL_CONTAINER(); } bool wxSpinCtrl::Create(wxWindow *parent, @@ -256,7 +259,7 @@ bool wxSpinCtrl::Create(wxWindow *parent, //SetSize(csize); //MacPostControlCreate(pos, csize); - SetInitialBestSize(csize); + SetInitialSize(csize); return true; } @@ -307,7 +310,7 @@ void wxSpinCtrl::DoMoveWindow(int x, int y, int width, int height) wxCoord wText = width - sizeBtn.x - MARGIN - 2 * TEXTBORDER; m_text->SetSize(TEXTBORDER, (height - sizeText.y) / 2, wText, -1); - m_btn->SetSize(0 + wText + MARGIN + 2 * TEXTBORDER , (height - sizeBtn.y) / 2 , -1, -1 ); + m_btn->SetSize(0 + wText + MARGIN + TEXTBORDER , (height - sizeBtn.y) / 2 , -1, -1 ); } // ----------------------------------------------------------------------------