Fix inserting items to wxRearrangeList (wxGTK)

Order array cannot be extended both in DoInsertItems() and DoInsertOneItem()
functions because DoInsertOneItem() is invoked indirectly from DoInsertItems()
(through the call to wxCheckListBox::DoInsertItems() and DoInsertItemsInLoop())
and therefore order array would be eventually extended by two items for one
inserted list item. To avoid this duplicated actions, we should resign from
overriding DoInsertOneItem().
This commit is contained in:
Artur Wieczorek
2017-04-30 21:42:41 +02:00
parent 15e2dcc38d
commit 6f59c756f6
2 changed files with 0 additions and 10 deletions

View File

@@ -99,7 +99,6 @@ public:
// Override this to keep our m_order array in sync with the real item state. // Override this to keep our m_order array in sync with the real item state.
virtual void Check(unsigned int item, bool check = true) wxOVERRIDE; virtual void Check(unsigned int item, bool check = true) wxOVERRIDE;
int DoInsertOneItem(const wxString& item, unsigned int pos) wxOVERRIDE;
int DoInsertItems(const wxArrayStringsAdapter& items, unsigned int pos, int DoInsertItems(const wxArrayStringsAdapter& items, unsigned int pos,
void **clientData, wxClientDataType type) wxOVERRIDE; void **clientData, wxClientDataType type) wxOVERRIDE;
void DoDeleteOneItem(unsigned int n) wxOVERRIDE; void DoDeleteOneItem(unsigned int n) wxOVERRIDE;

View File

@@ -188,15 +188,6 @@ void wxRearrangeList::OnCheck(wxCommandEvent& event)
m_order[n] = ~m_order[n]; m_order[n] = ~m_order[n];
} }
int wxRearrangeList::DoInsertOneItem(const wxString& item, unsigned int pos)
{
int ret = wxCheckListBox::DoInsertOneItem(item, pos);
// Item is not checked initially.
const int idx = ~m_order.size();
m_order.Insert(idx, pos);
return ret;
}
int wxRearrangeList::DoInsertItems(const wxArrayStringsAdapter& items, unsigned int pos, int wxRearrangeList::DoInsertItems(const wxArrayStringsAdapter& items, unsigned int pos,
void **clientData, wxClientDataType type) void **clientData, wxClientDataType type)
{ {