+int wxBitmapComboBox::DoInsertItems(const wxArrayStringsAdapter & items,
+ unsigned int pos,
+ void **clientData, wxClientDataType type)
+{
+ const unsigned int numItems = items.GetCount();
+ const unsigned int countNew = GetCount() + numItems;
+
+ m_bitmaps.Alloc(countNew);
+
+ for ( unsigned int i = 0; i < numItems; ++i )
+ {
+ m_bitmaps.Insert(new wxBitmap(wxNullBitmap), pos + i);
+ }
+
+ const int index = wxOwnerDrawnComboBox::DoInsertItems(items, pos,
+ clientData, type);
+
+ if ( index == wxNOT_FOUND )
+ {
+ for ( int i = countNew - GetCount(); i > 0; --i )
+ {
+ wxBitmap *bmp = GetBitmapPtr(pos);
+ m_bitmaps.RemoveAt(pos);
+ delete bmp;
+ }
+ }
+ return index;
+}
+
+int wxBitmapComboBox::Append(const wxString& item, const wxBitmap& bitmap)
+{
+ const int n = wxOwnerDrawnComboBox::Append(item);
+ if(n != wxNOT_FOUND)
+ SetItemBitmap(n, bitmap);
+ return n;
+}
+
+int wxBitmapComboBox::Append(const wxString& item, const wxBitmap& bitmap,
+ void *clientData)
+{
+ const int n = wxOwnerDrawnComboBox::Append(item, clientData);
+ if(n != wxNOT_FOUND)
+ SetItemBitmap(n, bitmap);
+ return n;
+}
+
+int wxBitmapComboBox::Append(const wxString& item, const wxBitmap& bitmap,
+ wxClientData *clientData)
+{
+ const int n = wxOwnerDrawnComboBox::Append(item, clientData);
+ if(n != wxNOT_FOUND)
+ SetItemBitmap(n, bitmap);
+ return n;
+}
+
+int wxBitmapComboBox::Insert(const wxString& item,
+ const wxBitmap& bitmap,
+ unsigned int pos)
+{
+ const int n = wxOwnerDrawnComboBox::Insert(item, pos);
+ if(n != wxNOT_FOUND)
+ SetItemBitmap(n, bitmap);
+ return n;
+}
+