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 wxOwnerDrawnComboBox::DoGetBestSize() const
|
||||||
{
|
{
|
||||||
wxSize best( wxComboCtrlBase::DoGetBestSize() );
|
if ( GetCount() == 0 )
|
||||||
|
return wxComboCtrlBase::DoGetBestSize();
|
||||||
|
|
||||||
if ( GetCount() > 0 )
|
wxOwnerDrawnComboBox* odc = const_cast<wxOwnerDrawnComboBox*>(this);
|
||||||
{
|
// TODO: this class may also have GetHightestItemHeight() and
|
||||||
wxOwnerDrawnComboBox* odc = const_cast<wxOwnerDrawnComboBox*>(this);
|
// GetHightestItem() methods, and so set the whole (edit part + arrow)
|
||||||
best.x = odc->GetWidestItemWidth();
|
// control's height according with this max height, not only max width.
|
||||||
// TODO: this class may also have GetHightestItemHeight() and
|
return GetSizeFromTextSize(odc->GetWidestItemWidth());
|
||||||
// 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxOwnerDrawnComboBox::OnDrawBackground(wxDC& dc,
|
void wxOwnerDrawnComboBox::OnDrawBackground(wxDC& dc,
|
||||||
|
Reference in New Issue
Block a user