wxString value = GetValue();
wxPoint pos = GetPosition();
wxSize size = GetSize();
+ size.y = GetBestSize().y;
wxArrayString strings = GetStrings();
wxComboBox::DoClear();
DissociateHandle();
::DestroyWindow(hwnd);
- if ( !MSWCreateControl(wxT("COMBOBOX"), value, pos, size) )
+ if ( !MSWCreateControl(wxT("COMBOBOX"), wxEmptyString, pos, size) )
return;
// initialize the controls contents
{
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
}
+
+ ::SendMessage(GetHwnd(), CB_SETITEMHEIGHT, 0, MeasureItem(0));
+
+ // Revert the old string value
+ if ( !HasFlag(wxCB_READONLY) )
+ ChangeValue(value);
}
wxBitmapComboBox::~wxBitmapComboBox()
Clear();
}
+wxSize wxBitmapComboBox::DoGetBestSize() const
+{
+ wxSize best = wxComboBox::DoGetBestSize();
+ wxSize bitmapSize = GetBitmapSize();
+
+ wxCoord useHeightBitmap = EDIT_HEIGHT_FROM_CHAR_HEIGHT(bitmapSize.y);
+ if ( best.y < useHeightBitmap )
+ {
+ best.y = useHeightBitmap;
+ CacheBestSize(best);
+ }
+ return best;
+}
+
// ----------------------------------------------------------------------------
// Item manipulation
// ----------------------------------------------------------------------------
return true;
}
-
+
return false;
}
if ( pos == -1 )
return FALSE;
- int flags = 0;
+ int flags = 0;
if ( lpDrawItem->itemState & ODS_COMBOBOXEDIT )
flags |= wxODCB_PAINTING_CONTROL;
if ( lpDrawItem->itemState & ODS_SELECTED )