diff --git a/docs/changes.txt b/docs/changes.txt index 2c01c0deb9..dfc732b91a 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -318,6 +318,7 @@ All (GUI): - Generalized wxScrolledWindow into wxScrolled template that can derive from any window class, not just wxPanel. - Allow having menu separators with ids != wxID_SEPARATOR (Jeff Tupper) +- Fix appending items to sorted wxComboCtrl after creation (Jaakko Salli) wxGTK: diff --git a/src/generic/odcombo.cpp b/src/generic/odcombo.cpp index d04d183089..fa036b21e2 100644 --- a/src/generic/odcombo.cpp +++ b/src/generic/odcombo.cpp @@ -1027,13 +1027,29 @@ int wxOwnerDrawnComboBox::DoInsertItems(const wxArrayStringsAdapter& items, EnsurePopupControl(); const unsigned int count = items.GetCount(); - for( unsigned int i = 0; i < count; ++i, ++pos ) - { - GetVListBoxComboPopup()->Insert(items[i], pos); - AssignNewItemClientData(pos, clientData, i, type); - } - return pos - 1; + if ( HasFlag(wxCB_SORT) ) + { + int n = pos; + + for ( unsigned int i = 0; i < count; ++i ) + { + int n = GetVListBoxComboPopup()->Append(items[i]); + AssignNewItemClientData(n, clientData, i, type); + } + + return n; + } + else + { + for ( unsigned int i = 0; i < count; ++i, ++pos ) + { + GetVListBoxComboPopup()->Insert(items[i], pos); + AssignNewItemClientData(pos, clientData, i, type); + } + + return pos - 1; + } } void wxOwnerDrawnComboBox::DoSetItemClientData(unsigned int n, void* clientData)