From: Václav Slavík Date: Wed, 7 Aug 2013 17:33:42 +0000 (+0000) Subject: Make wxOwnerDrawnComboBox::DoGetBestSize() twice as fast. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/07fb285c521527e383f2d1090f7f41f561bcd8fd?ds=inline 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 --- diff --git a/src/generic/odcombo.cpp b/src/generic/odcombo.cpp index 3a15972c13..d48bf5a085 100644 --- a/src/generic/odcombo.cpp +++ b/src/generic/odcombo.cpp @@ -1174,18 +1174,14 @@ wxCoord wxOwnerDrawnComboBox::OnMeasureItemWidth( size_t WXUNUSED(item) ) const wxSize wxOwnerDrawnComboBox::DoGetBestSize() const { - wxSize best( wxComboCtrlBase::DoGetBestSize() ); - - if ( GetCount() > 0 ) - { - wxOwnerDrawnComboBox* odc = const_cast(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); + if ( GetCount() == 0 ) + return wxComboCtrlBase::DoGetBestSize(); + + wxOwnerDrawnComboBox* odc = const_cast(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,