Swap client data pointers in wxRearrangeList too.
If the list box uses client data, we need to swap the data pointers too when exchanging items in it. Closes #12201. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -530,6 +530,7 @@ All (GUI):
|
|||||||
- Added "filter changed" event to wxFileCtrl (Bill Jones).
|
- Added "filter changed" event to wxFileCtrl (Bill Jones).
|
||||||
- wxAUI: update floating window position and not only size on resize (MacGyver).
|
- wxAUI: update floating window position and not only size on resize (MacGyver).
|
||||||
- Added wxComboCtrl::SetTextCtrlStyle().
|
- Added wxComboCtrl::SetTextCtrlStyle().
|
||||||
|
- Also update client data in wxRearrangeList control (John Roberts).
|
||||||
|
|
||||||
GTK:
|
GTK:
|
||||||
|
|
||||||
|
@@ -125,16 +125,45 @@ bool wxRearrangeList::MoveCurrentDown()
|
|||||||
|
|
||||||
void wxRearrangeList::Swap(int pos1, int pos2)
|
void wxRearrangeList::Swap(int pos1, int pos2)
|
||||||
{
|
{
|
||||||
|
// update the internally stored order
|
||||||
wxSwap(m_order[pos1], m_order[pos2]);
|
wxSwap(m_order[pos1], m_order[pos2]);
|
||||||
|
|
||||||
const wxString stringTmp = GetString(pos1);
|
|
||||||
const bool checkedTmp = IsChecked(pos1);
|
|
||||||
|
|
||||||
|
// and now also swap all the attributes of the items
|
||||||
|
|
||||||
|
// first the label
|
||||||
|
const wxString stringTmp = GetString(pos1);
|
||||||
SetString(pos1, GetString(pos2));
|
SetString(pos1, GetString(pos2));
|
||||||
Check(pos1, IsChecked(pos2));
|
Check(pos1, IsChecked(pos2));
|
||||||
|
|
||||||
|
// then the checked state
|
||||||
|
const bool checkedTmp = IsChecked(pos1);
|
||||||
SetString(pos2, stringTmp);
|
SetString(pos2, stringTmp);
|
||||||
Check(pos2, checkedTmp);
|
Check(pos2, checkedTmp);
|
||||||
|
|
||||||
|
// and finally the client data, if necessary
|
||||||
|
switch ( GetClientDataType() )
|
||||||
|
{
|
||||||
|
case wxClientData_None:
|
||||||
|
// nothing to do
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxClientData_Object:
|
||||||
|
{
|
||||||
|
wxClientData * const dataTmp = GetClientObject(pos1);
|
||||||
|
SetClientObject(pos1, GetClientObject(pos2));
|
||||||
|
SetClientObject(pos2, dataTmp);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxClientData_Void:
|
||||||
|
{
|
||||||
|
void * const dataTmp = GetClientData(pos1);
|
||||||
|
SetClientData(pos1, GetClientData(pos2));
|
||||||
|
SetClientData(pos2, dataTmp);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxRearrangeList::OnCheck(wxCommandEvent& event)
|
void wxRearrangeList::OnCheck(wxCommandEvent& event)
|
||||||
|
Reference in New Issue
Block a user