]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/listbox.cpp
if'd out CheckForKeyDown call that doesn't seem to be necessary now (but we still...
[wxWidgets.git] / src / msw / listbox.cpp
index b14384f8cffcb482d82dba25acc709798c8e5b70..02d55e900d4d19195be5f7e9a758cead0824aa79 100644 (file)
@@ -29,6 +29,7 @@
 #include "wx/brush.h"
 #include "wx/font.h"
 #include "wx/dc.h"
+#include "wx/utils.h"
 #endif
 
 #include <windowsx.h>
@@ -48,7 +49,9 @@
 
 #ifndef __TWIN32__
     #if defined(__GNUWIN32__)
-        #include <wx/msw/gnuwin32/extra.h>
+        #ifndef wxUSE_NORLANDER_HEADERS
+            #include <wx/msw/gnuwin32/extra.h>
+        #endif
     #endif
 #endif
 
@@ -650,6 +653,35 @@ bool wxListBox::SetStringSelection (const wxString& s, bool flag)
         return FALSE;
 }
 
+wxSize wxListBox::DoGetBestSize()
+{
+    // find the widest string
+    int wLine;
+    int wListbox = 0;
+    for ( int i = 0; i < m_noItems; i++ )
+    {
+        wxString str(GetString(i));
+        GetTextExtent(str, &wLine, NULL);
+        if ( wLine > wListbox )
+            wListbox = wLine;
+    }
+
+    // give it some reasonable default value if there are no strings in the
+    // list
+    if ( wListbox == 0 )
+        wListbox = 100;
+
+    // the listbox should be slightly larger than the widest string
+    int cx, cy;
+    wxGetCharSize(GetHWND(), &cx, &cy, &GetFont());
+
+    wListbox += 3*cx;
+
+    int hListbox = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)*(wxMax(m_noItems, 7));
+
+    return wxSize(wListbox, hListbox);
+}
+
 // Is this the right thing? Won't setselection generate a command
 // event too? No! It'll just generate a setselection event.
 // But we still can't have this being called whenever a real command