X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a9afb0576c1b6c1d426688597891d34dd94a9418..07aaf32633ecf18ec3edfbb41793a112914792d0:/src/msw/bmpcbox.cpp?ds=sidebyside diff --git a/src/msw/bmpcbox.cpp b/src/msw/bmpcbox.cpp index 19a5d3a050..ea7c925762 100644 --- a/src/msw/bmpcbox.cpp +++ b/src/msw/bmpcbox.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/msw/bmpcboxg.cpp +// Name: src/msw/bmpcbox.cpp // Purpose: wxBitmapComboBox // Author: Jaakko Salli // Created: 2008-04-06 @@ -31,6 +31,7 @@ #endif #include "wx/settings.h" +#include "wx/vector.h" #include "wx/msw/dcclient.h" #include "wx/msw/private.h" @@ -134,19 +135,25 @@ void wxBitmapComboBox::RecreateControl() size.y = GetBestSize().y; wxArrayString strings = GetStrings(); + // Save the client data pointers before clearing the control. + wxVector clientData; + clientData.reserve(strings.size()); + for ( size_t n = 0; n < strings.size(); ++n ) + clientData.push_back(GetClientObject(n)); + wxComboBox::DoClear(); HWND hwnd = GetHwnd(); DissociateHandle(); ::DestroyWindow(hwnd); - if ( !MSWCreateControl(wxT("COMBOBOX"), value, pos, size) ) + if ( !MSWCreateControl(wxT("COMBOBOX"), wxEmptyString, pos, size) ) return; // initialize the controls contents for ( unsigned int i = 0; i < strings.size(); i++ ) { - wxComboBox::Append(strings[i]); + wxComboBox::Append(strings[i], clientData[i]); } // and make sure it has the same attributes as before @@ -179,6 +186,10 @@ void wxBitmapComboBox::RecreateControl() } ::SendMessage(GetHwnd(), CB_SETITEMHEIGHT, 0, MeasureItem(0)); + + // Revert the old string value + if ( !HasFlag(wxCB_READONLY) ) + ChangeValue(value); } wxBitmapComboBox::~wxBitmapComboBox() @@ -253,6 +264,16 @@ int wxBitmapComboBox::Insert(const wxString& item, return n; } +int wxBitmapComboBox::Insert(const wxString& item, const wxBitmap& bitmap, + unsigned int pos, void *clientData) +{ + OnAddBitmap(bitmap); + const int n = wxComboBox::Insert(item, pos, clientData); + if ( n != wxNOT_FOUND ) + DoSetItemBitmap(n, bitmap); + return n; +} + int wxBitmapComboBox::Insert(const wxString& item, const wxBitmap& bitmap, unsigned int pos, wxClientData *clientData) {