static void rowsreordered_cb(IntPtr tree_model, IntPtr path_ptr, IntPtr iter_ptr, IntPtr new_order)
{
try {
ListStore store = GLib.Object.GetObject (tree_model, false) as ListStore;
TreePath path = GLib.Opaque.GetOpaque (path_ptr, typeof (TreePath), false) as TreePath;
TreeIter iter = TreeIter.New (iter_ptr);
int child_cnt = store.IterNChildren ();
int[] child_order = new int [child_cnt];
Marshal.Copy (new_order, child_order, 0, child_cnt);
store.OnRowsReordered (path, iter, child_order);
} catch (Exception e) {
GLib.ExceptionManager.RaiseUnhandledException (e, true);
// NOTREACHED: above call doesn't return
throw e;
}
}