Make wxOwnerDrawnComboBox::DoGetBestSize() twice as fast.
Don't call the very expensive wxComboCtrlBase::DoGetBestSize() method when not needed - it calls wxComboCtrlBase::DoGetSizeFromTextSize(), which is very expensive. Also fix the code so that it doesn't apply GetSizeFromTextSize() twice (once in the base class' DoGetBestSize(), once here). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1174,18 +1174,14 @@ wxCoord wxOwnerDrawnComboBox::OnMeasureItemWidth( size_t WXUNUSED(item) ) const
|
||||
|
||||
wxSize wxOwnerDrawnComboBox::DoGetBestSize() const
|
||||
{
|
||||
wxSize best( wxComboCtrlBase::DoGetBestSize() );
|
||||
if ( GetCount() == 0 )
|
||||
return wxComboCtrlBase::DoGetBestSize();
|
||||
|
||||
if ( GetCount() > 0 )
|
||||
{
|
||||
wxOwnerDrawnComboBox* odc = const_cast<wxOwnerDrawnComboBox*>(this);
|
||||
best.x = odc->GetWidestItemWidth();
|
||||
// TODO: this class may also have GetHightestItemHeight() and
|
||||
// GetHightestItem() methods, and so set the whole (edit part + arrow)
|
||||
// control's height according with this max height, not only max width.
|
||||
}
|
||||
|
||||
return GetSizeFromTextSize(best.x);
|
||||
wxOwnerDrawnComboBox* odc = const_cast<wxOwnerDrawnComboBox*>(this);
|
||||
// TODO: this class may also have GetHightestItemHeight() and
|
||||
// GetHightestItem() methods, and so set the whole (edit part + arrow)
|
||||
// control's height according with this max height, not only max width.
|
||||
return GetSizeFromTextSize(odc->GetWidestItemWidth());
|
||||
}
|
||||
|
||||
void wxOwnerDrawnComboBox::OnDrawBackground(wxDC& dc,
|
||||
|
Reference in New Issue
Block a user