X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03647350fc7cd141953c72e0284e928847d30f44..cb41a69b152026d6c586d21148e34913291cd733:/src/common/pickerbase.cpp diff --git a/src/common/pickerbase.cpp b/src/common/pickerbase.cpp index 1d3dbbc30d..b68d7b1c90 100644 --- a/src/common/pickerbase.cpp +++ b/src/common/pickerbase.cpp @@ -4,7 +4,6 @@ // Author: Francesco Montorsi // Modified by: // Created: 15/04/2006 -// RCS-ID: $Id$ // Copyright: (c) Francesco Montorsi // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -43,13 +42,6 @@ IMPLEMENT_ABSTRACT_CLASS(wxPickerBase, wxControl) -BEGIN_EVENT_TABLE(wxPickerBase, wxControl) - EVT_SIZE(wxPickerBase::OnSize) - WX_EVENT_TABLE_CONTROL_CONTAINER(wxPickerBase) -END_EVENT_TABLE() -WX_DELEGATE_TO_CONTROL_CONTAINER(wxPickerBase, wxControl) - - // ---------------------------------------------------------------------------- // wxPickerBase // ---------------------------------------------------------------------------- @@ -89,7 +81,7 @@ bool wxPickerBase::CreateBase(wxWindow *parent, return false; } - // set the maximum lenght allowed for this textctrl. + // set the maximum length allowed for this textctrl. // This is very important since any change to it will trigger an update in // the m_picker; for very long strings, this real-time synchronization could // become a CPU-blocker and thus should be avoided. @@ -99,7 +91,7 @@ bool wxPickerBase::CreateBase(wxWindow *parent, // set the initial contents of the textctrl m_text->SetValue(text); - m_text->Connect(m_text->GetId(), wxEVT_COMMAND_TEXT_UPDATED, + m_text->Connect(m_text->GetId(), wxEVT_TEXT, wxCommandEventHandler(wxPickerBase::OnTextCtrlUpdate), NULL, this); m_text->Connect(m_text->GetId(), wxEVT_KILL_FOCUS, @@ -123,6 +115,21 @@ void wxPickerBase::PostCreation() // associated with it - in that case it defaults to 0 m_sizer->Add(m_picker, HasTextCtrl() ? 0 : 1, GetDefaultPickerCtrlFlag(), 5); + // For aesthetic reasons, make sure the picker is at least as high as the + // associated text control and is always at least square, unless we are + // explicitly using wxPB_SMALL style to force it to take as little space as + // possible. + if ( !HasFlag(wxPB_SMALL) ) + { + const wxSize pickerBestSize(m_picker->GetBestSize()); + const wxSize textBestSize( HasTextCtrl() ? m_text->GetBestSize() : wxSize()); + wxSize pickerMinSize; + pickerMinSize.y = wxMax(pickerBestSize.y, textBestSize.y); + pickerMinSize.x = wxMax(pickerBestSize.x, pickerMinSize.y); + if ( pickerMinSize != pickerBestSize ) + m_picker->SetMinSize(pickerMinSize); + } + SetSizer(m_sizer); SetInitialSize( GetMinSize() ); @@ -169,11 +176,4 @@ void wxPickerBase::OnTextCtrlUpdate(wxCommandEvent &) UpdatePickerFromTextCtrl(); } -void wxPickerBase::OnSize(wxSizeEvent &event) -{ - if (GetAutoLayout()) - Layout(); - event.Skip(); -} - #endif // Any picker in use