X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/af07be96ebf1887f5d93332d95e8ddd934a17198..f239a20092359e3c914adb79bd39f3f5d2b2e06f:/src/generic/spinctlg.cpp?ds=sidebyside diff --git a/src/generic/spinctlg.cpp b/src/generic/spinctlg.cpp index 796f89efb5..e9a7a32a37 100644 --- a/src/generic/spinctlg.cpp +++ b/src/generic/spinctlg.cpp @@ -29,6 +29,7 @@ #endif //WX_PRECOMP #include "wx/spinctrl.h" +#include "wx/tooltip.h" #if wxUSE_SPINCTRL @@ -84,13 +85,13 @@ public: void OnChar( wxKeyEvent &event ) { if (m_spin) - m_spin->OnTextChar(event); + m_spin->ProcessWindowEvent(event); } void OnKillFocus(wxFocusEvent& event) { if (m_spin) - m_spin->OnTextLostFocus(); + m_spin->ProcessWindowEvent(event); event.Skip(); } @@ -192,6 +193,10 @@ bool wxSpinCtrlGenericBase::Create(wxWindow *parent, m_textCtrl = new wxSpinCtrlTextGeneric(this, value, style); m_spinButton = new wxSpinCtrlButtonGeneric(this, style); +#if wxUSE_TOOLTIPS + m_textCtrl->SetToolTip(GetToolTipText()); + m_spinButton->SetToolTip(GetToolTipText()); +#endif // wxUSE_TOOLTIPS m_spin_value = m_spinButton->GetValue(); @@ -321,10 +326,42 @@ bool wxSpinCtrlGenericBase::Reparent(wxWindowBase *newParent) return true; } +#if wxUSE_TOOLTIPS +void wxSpinCtrlGenericBase::DoSetToolTip(wxToolTip *tip) +{ + // Notice that we must check for the subcontrols not being NULL (as they + // could be if we were created with the default ctor and this is called + // before Create() for some reason) and that we can't call SetToolTip(tip) + // because this would take ownership of the wxToolTip object (twice). + if ( m_textCtrl ) + { + if ( tip ) + m_textCtrl->SetToolTip(tip->GetTip()); + else + m_textCtrl->SetToolTip(NULL); + } + + if ( m_spinButton ) + { + if( tip ) + m_spinButton->SetToolTip(tip->GetTip()); + else + m_spinButton->SetToolTip(NULL); + } + + wxWindowBase::DoSetToolTip(tip); +} +#endif // wxUSE_TOOLTIPS + // ---------------------------------------------------------------------------- // Handle sub controls events // ---------------------------------------------------------------------------- +BEGIN_EVENT_TABLE(wxSpinCtrlGenericBase, wxSpinCtrlBase) + EVT_CHAR(wxSpinCtrlGenericBase::OnTextChar) + EVT_KILL_FOCUS(wxSpinCtrlGenericBase::OnTextLostFocus) +END_EVENT_TABLE() + void wxSpinCtrlGenericBase::OnSpinButton(wxSpinEvent& event) { event.Skip(); @@ -356,10 +393,12 @@ void wxSpinCtrlGenericBase::OnSpinButton(wxSpinEvent& event) DoSendEvent(); } -void wxSpinCtrlGenericBase::OnTextLostFocus() +void wxSpinCtrlGenericBase::OnTextLostFocus(wxFocusEvent& event) { SyncSpinToText(); DoSendEvent(); + + event.Skip(); } void wxSpinCtrlGenericBase::OnTextChar(wxKeyEvent& event)