From 07fb285c521527e383f2d1090f7f41f561bcd8fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Wed, 7 Aug 2013 17:33:42 +0000 Subject: [PATCH] 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 --- src/generic/odcombo.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/generic/odcombo.cpp b/src/generic/odcombo.cpp index 3a15972..d48bf5a 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, -- 2.7.4