When swapping the items, we also need to swap their client data and not just
their labels.
Closes #14800.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72916
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
DECLARE_CLASS(wxEditableListBox)
DECLARE_EVENT_TABLE()
DECLARE_CLASS(wxEditableListBox)
DECLARE_EVENT_TABLE()
+
+private:
+ void SwapItems(long i1, long i2);
+
};
#endif // wxUSE_EDITABLELISTBOX
};
#endif // wxUSE_EDITABLELISTBOX
m_listCtrl->EditLabel(m_selection);
}
m_listCtrl->EditLabel(m_selection);
}
-void wxEditableListBox::OnUpItem(wxCommandEvent& WXUNUSED(event))
+void wxEditableListBox::SwapItems(long i1, long i2)
+ // swap the text
+ wxString t1 = m_listCtrl->GetItemText(i1);
+ wxString t2 = m_listCtrl->GetItemText(i2);
+ m_listCtrl->SetItemText(i1, t2);
+ m_listCtrl->SetItemText(i2, t1);
+
+ // swap the item data
+ long d1 = m_listCtrl->GetItemData(i1);
+ long d2 = m_listCtrl->GetItemData(i2);
+ m_listCtrl->SetItemData(i1, d2);
+ m_listCtrl->SetItemData(i2, d1);
+}
+
- t1 = m_listCtrl->GetItemText(m_selection - 1);
- t2 = m_listCtrl->GetItemText(m_selection);
- m_listCtrl->SetItemText(m_selection - 1, t2);
- m_listCtrl->SetItemText(m_selection, t1);
+void wxEditableListBox::OnUpItem(wxCommandEvent& WXUNUSED(event))
+{
+ SwapItems(m_selection - 1, m_selection);
m_listCtrl->SetItemState(m_selection - 1,
wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
}
void wxEditableListBox::OnDownItem(wxCommandEvent& WXUNUSED(event))
{
m_listCtrl->SetItemState(m_selection - 1,
wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
}
void wxEditableListBox::OnDownItem(wxCommandEvent& WXUNUSED(event))
{
- wxString t1, t2;
-
- t1 = m_listCtrl->GetItemText(m_selection + 1);
- t2 = m_listCtrl->GetItemText(m_selection);
- m_listCtrl->SetItemText(m_selection + 1, t2);
- m_listCtrl->SetItemText(m_selection, t1);
+ SwapItems(m_selection + 1, m_selection);
m_listCtrl->SetItemState(m_selection + 1,
wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
}
m_listCtrl->SetItemState(m_selection + 1,
wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
}