]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed wxCB_SORT for wxMSW and generic wxBitmapComboBox
authorJaakko Salli <jaakko.salli@dnainternet.net>
Fri, 10 Jul 2009 14:47:58 +0000 (14:47 +0000)
committerJaakko Salli <jaakko.salli@dnainternet.net>
Fri, 10 Jul 2009 14:47:58 +0000 (14:47 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61371 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/bmpcboxg.cpp
src/msw/bmpcbox.cpp

index ce14a4708f451658a59d32964bf12ae9c36201e0..010132792fc4e928fec16bb00f8107a9817fcc39 100644 (file)
@@ -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;
 }
index d160fd93cda1b0c10ba1481ee400441768b22436..6ae9044a2d3d5d5b04ec293f47358761a6443ff1 100644 (file)
@@ -253,6 +253,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++ )
@@ -268,6 +270,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;
 }