]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/bmpcboxg.cpp
new file added
[wxWidgets.git] / src / generic / bmpcboxg.cpp
index ce14a4708f451658a59d32964bf12ae9c36201e0..029d8a5463ef7d28073fb3b20f50730472c44764 100644 (file)
@@ -128,7 +128,7 @@ bool wxBitmapComboBox::Create(wxWindow *parent,
 
 wxBitmapComboBox::~wxBitmapComboBox()
 {
-    Clear();
+    DoClear();
 }
 
 // ----------------------------------------------------------------------------
@@ -151,6 +151,8 @@ int wxBitmapComboBox::DoInsertItems(const wxArrayStringsAdapter & items,
     const unsigned int numItems = items.GetCount();
     const unsigned int countNew = GetCount() + numItems;
 
+    wxASSERT( numItems == 1 || !HasFlag(wxCB_SORT) );  // Sanity check
+
     m_bitmaps.Alloc(countNew);
 
     for ( unsigned int i = 0; i < numItems; i++ )
@@ -166,6 +168,14 @@ int wxBitmapComboBox::DoInsertItems(const wxArrayStringsAdapter & items,
         for ( int i = numItems-1; i >= 0; i-- )
             BCBDoDeleteOneItem(pos + i);
     }
+    else if ( ((unsigned int)index) != pos )
+    {
+        // Move pre-inserted empty bitmap into correct position
+        // (usually happens when combo box has wxCB_SORT style)
+        wxBitmap* bmp = static_cast<wxBitmap*>(m_bitmaps[pos]);
+        m_bitmaps.RemoveAt(pos);
+        m_bitmaps.Insert(bmp, index);
+    }
 
     return index;
 }
@@ -327,7 +337,7 @@ void wxBitmapComboBox::OnDrawItem(wxDC& dc,
     {
         text = GetString(item);
     }
-    
+
     wxBitmapComboBoxBase::DrawItem(dc, rect, item, text, flags);
 }