public:
wxSpinCtrlTextGeneric(wxSpinCtrlGenericBase *spin, const wxString& value, long style=0)
: wxTextCtrl(spin->GetParent(), wxID_ANY, value, wxDefaultPosition, wxDefaultSize,
- style & (wxALIGN_MASK | wxTE_PROCESS_ENTER))
+ // This is tricky: we want to honour any alignment flags
+ // but not wxALIGN_CENTER_VERTICAL because it's the same
+ // as wxTE_PASSWORD and we definitely don't want to show
+ // asterisks in spin control.
+ style & (wxALIGN_MASK | wxTE_PROCESS_ENTER) & ~wxTE_PASSWORD)
{
m_spin = spin;
event.Skip();
}
- void OnTextEnter(wxCommandEvent& event)
+ void OnTextEvent(wxCommandEvent& event)
{
- // We need to forward this event to the spin control itself as it's
- // supposed to generate it if wxTE_PROCESS_ENTER is used with it.
wxCommandEvent eventCopy(event);
eventCopy.SetEventObject(m_spin);
eventCopy.SetId(m_spin->GetId());
BEGIN_EVENT_TABLE(wxSpinCtrlTextGeneric, wxTextCtrl)
EVT_CHAR(wxSpinCtrlTextGeneric::OnChar)
- EVT_TEXT_ENTER(wxID_ANY, wxSpinCtrlTextGeneric::OnTextEnter)
+
+ // Forward the text events to wxSpinCtrl itself adjusting them slightly in
+ // the process.
+ EVT_TEXT(wxID_ANY, wxSpinCtrlTextGeneric::OnTextEvent)
+
+ // And we need to forward this one too as wxSpinCtrl is supposed to
+ // generate it if wxTE_PROCESS_ENTER is used with it (and if it isn't,
+ // we're never going to get EVT_TEXT_ENTER in the first place).
+ EVT_TEXT_ENTER(wxID_ANY, wxSpinCtrlTextGeneric::OnTextEvent)
EVT_KILL_FOCUS(wxSpinCtrlTextGeneric::OnKillFocus)
END_EVENT_TABLE()