// 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
}
protected:
- void OnKillFocus(wxFocusEvent &event)
+ void OnKillFocus(wxFocusEvent& WXUNUSED(event))
{
long l;
if ( !GetValue().ToLong(&l) )
// 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;
event.SetString(m_spin->GetText()->GetValue());
event.SetInt(val);
- m_spin->GetEventHandler()->ProcessEvent(event);
+ m_spin->HandleWindowEvent(event);
}
event.Skip();
event.SetEventObject(m_spin);
event.SetInt(pos);
- m_spin->GetEventHandler()->ProcessEvent(event);
+ m_spin->HandleWindowEvent(event);
m_spin->m_oldValue = pos;
}
{
m_text = NULL;
m_btn = NULL;
- m_container.SetContainerWindow(this);
+ WX_INIT_CONTROL_CONTAINER();
}
bool wxSpinCtrl::Create(wxWindow *parent,
//SetSize(csize);
//MacPostControlCreate(pos, csize);
- SetInitialBestSize(csize);
+ SetInitialSize(csize);
return true;
}
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 );
}
// ----------------------------------------------------------------------------