+
+ /* Swap the contents of the selected and target list cells */
+
+ cell.v = index;
+ LGetCell(current, &curlength, cell, mc->listbox.list);
+ current[curlength] = '\0';
+ cell.v += direction;
+ LGetCell(new, &newlength, cell, mc->listbox.list);
+ new[newlength] = '\0';
+
+ cell.v = index;
+ LSetCell(new, newlength, cell, mc->listbox.list);
+ cell.v += direction;
+ LSetCell(current, curlength, cell, mc->listbox.list);
+
+ /* Move the selection to the target list cell */
+
+ cell.v = index;
+ LSetSelect(FALSE, cell, mc->listbox.list);
+ cell.v += direction;
+ LSetSelect(TRUE, cell, mc->listbox.list);
+ DrawOneControl(mc->listbox.tbctrl);
+
+ /* Swap the ids of the list cells */
+
+ curid = mc->listbox.ids[index];
+ newid = mc->listbox.ids[index + direction];
+ mc->listbox.ids[index] = newid;
+ mc->listbox.ids[index + direction] = curid;
+
+ ctrlevent(mcs, mc, EVENT_VALCHANGE);