]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combobox.cpp
Initial revision
[wxWidgets.git] / src / msw / combobox.cpp
index d4ec3f017a87955daaa47c53d98e9807a99b7dfa..8d6d7eada7d8f4af649890a8f42daa139c8503fb 100644 (file)
@@ -72,7 +72,9 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
                         const wxString& name)
 {
   SetName(name);
+#if wxUSE_VALIDATORS
   SetValidator(validator);
+#endif // wxUSE_VALIDATORS
   if (parent) parent->AddChild(this);
 //  SetBackgroundColour(parent->GetBackgroundColour()) ;
 
@@ -325,11 +327,31 @@ void wxComboBox::SetSelection(long from, long to)
 #endif
 }
 
-void wxComboBox::DoSetSize(int x, int y,
-                           int width, int height,
-                           int sizeFlags)
+void wxComboBox::DoMoveWindow(int x, int y, int width, int height)
 {
-    wxControl::DoSetSize(x, y, width, height, sizeFlags);
+    int cx, cy;
+    wxGetCharSize(GetHWND(), &cx, &cy, &GetFont());
+
+    int n = GetCount();
+    if ( !n )
+        n = 10;
+
+    height = n * EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy);
+
+    wxControl::DoMoveWindow(x, y, width, height);
+}
+
+wxSize wxComboBox::DoGetBestSize() const
+{
+    // the choice calculates the horz size correctly, but not the vertical
+    // component: correct it
+    wxSize size = wxChoice::DoGetBestSize();
+
+    int cx, cy;
+    wxGetCharSize(GetHWND(), &cx, &cy, &GetFont());
+    size.y = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy);
+
+    return size;
 }
 
 #endif