]> git.saurik.com Git - wxWidgets.git/commitdiff
Improve default size calc of wxComboBox
authorRobert Roebling <robert@roebling.de>
Fri, 18 Apr 2008 07:57:03 +0000 (07:57 +0000)
committerRobert Roebling <robert@roebling.de>
Fri, 18 Apr 2008 07:57:03 +0000 (07:57 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/combobox.cpp

index 0ad836e685034143b84072119c68215ce7795fc3..6a7c62a6049af219835c583636c1e3fdf51605ee 100644 (file)
@@ -431,25 +431,27 @@ GdkWindow *wxComboBox::GTKGetWindow(wxArrayGdkWindows& windows) const
 
 wxSize wxComboBox::DoGetBestSize() const
 {
+    // strangely, this returns a width of 188 pixels from GTK+ (?)
     wxSize ret( wxControl::DoGetBestSize() );
 
     // we know better our horizontal extent: it depends on the longest string
     // in the combobox
     if ( m_widget )
     {
+        ret.x = 60;  // start with something "sensible"
         int width;
         unsigned int count = GetCount();
         for ( unsigned int n = 0; n < count; n++ )
         {
             GetTextExtent(GetString(n), &width, NULL, NULL, NULL );
-            if ( width > ret.x )
-                ret.x = width;
+            if ( width + 40 > ret.x ) // 40 for drop down arrow and space around text
+                ret.x = width + 40;
         }
     }
 
     // empty combobox should have some reasonable default size too
-    if ( ret.x < 100 )
-        ret.x = 100;
+    if ((GetCount() == 0) && (ret.x < 80))
+        ret.x = 80;
 
     CacheBestSize(ret);
     return ret;