]> git.saurik.com Git - wxWidgets.git/commitdiff
Make wxOwnerDrawnComboBox::DoGetBestSize() twice as fast.
authorVáclav Slavík <vslavik@fastmail.fm>
Wed, 7 Aug 2013 17:33:42 +0000 (17:33 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Wed, 7 Aug 2013 17:33:42 +0000 (17:33 +0000)
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

index 3a15972c1380fe55e25600bbf1a43510baa1f796..d48bf5a085b69d8dc15a5f4dcc0e4fdc7cd1ebea 100644 (file)
@@ -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<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);
+    if ( GetCount() == 0 )
+        return wxComboCtrlBase::DoGetBestSize();
+
+    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,