-#if wxUSE_COMBOBOX && (defined(__WXMSW__) || defined(__WXGTK__)) \
- && !defined(__WXUNIVERSAL__)
- wxComboBox* cb = new wxComboBox;
- cb->Hide();
- cb->Create(const_cast<wxComboCtrlBase*>(this), wxID_ANY);
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ fhei = EDIT_HEIGHT_FROM_CHAR_HEIGHT(GetCharHeight());
+#elif defined(__WXGTK__) && !defined(__WXUNIVERSAL__)
+ // Control creation is not entirely cheap, so cache the heights to
+ // avoid repeatedly creating dummy controls:
+ static wxString s_last_font;
+ static int s_last_fhei = -1;
+ wxString fontdesc;