X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/55b43eaa025408453e90a6c01f64215a9203da9a..12b5f4b4d2d8a07962da7ba3b78c8c1ec2634a67:/src/common/pickerbase.cpp?ds=sidebyside diff --git a/src/common/pickerbase.cpp b/src/common/pickerbase.cpp index cc35df3255..0176c2a2a8 100644 --- a/src/common/pickerbase.cpp +++ b/src/common/pickerbase.cpp @@ -30,11 +30,13 @@ wxUSE_FONTPICKERCTRL #include "wx/pickerbase.h" +#include "wx/tooltip.h" #ifndef WX_PRECOMP #include "wx/textctrl.h" #endif + // ============================================================================ // implementation // ============================================================================ @@ -94,14 +96,14 @@ bool wxPickerBase::CreateBase(wxWindow *parent, // set the initial contents of the textctrl m_text->SetValue(text); - m_text->Connect(wxEVT_COMMAND_TEXT_UPDATED, + m_text->Connect(m_text->GetId(), wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(wxPickerBase::OnTextCtrlUpdate), NULL, this); - m_text->Connect(wxEVT_KILL_FOCUS, + m_text->Connect(m_text->GetId(), wxEVT_KILL_FOCUS, wxFocusEventHandler(wxPickerBase::OnTextCtrlKillFocus), NULL, this); - m_text->Connect(wxEVT_DESTROY, + m_text->Connect(m_text->GetId(), wxEVT_DESTROY, wxWindowDestroyEventHandler(wxPickerBase::OnTextCtrlDelete), NULL, this); @@ -119,12 +121,32 @@ void wxPickerBase::PostCreation() m_sizer->Add(m_picker, HasTextCtrl() ? 0 : 1, GetDefaultPickerCtrlFlag(), 5); SetSizer(m_sizer); - m_sizer->SetSizeHints(this); + SetMinSize( m_sizer->GetMinSize() ); +} + +#if wxUSE_TOOLTIPS + +void wxPickerBase::DoSetToolTip(wxToolTip *tip) +{ + // don't set the tooltip on us but rather on our two child windows + // as otherwise it would appear only when the cursor is placed on the + // small area around the child windows which belong to wxPickerBase + m_picker->SetToolTip(tip); + + // do a copy as wxWindow will own the pointer we pass + if ( m_text ) + m_text->SetToolTip(tip ? new wxToolTip(tip->GetTip()) : NULL); } -void wxPickerBase::OnTextCtrlKillFocus(wxFocusEvent &) +#endif // wxUSE_TOOLTIPS + +// ---------------------------------------------------------------------------- +// wxPickerBase - event handlers +// ---------------------------------------------------------------------------- + +void wxPickerBase::OnTextCtrlKillFocus(wxFocusEvent& event) { - wxASSERT(m_text); + event.Skip(); // don't leave the textctrl empty if (m_text->GetValue().empty())