--- nodequeue.module 2010-03-16 17:10:45.000000000 -0500 +++ nodequeue.module 2010-05-01 09:50:22.000000000 -0500 @@ -1256,6 +1256,23 @@ function nodequeue_save_subqueue_order($ return array(NODEQUEUE_DUPLICATE_POSITION, 'Duplicate position values are not allowed. New subqueue order not saved.'); } + // This fixes http://drupal.org/node/597498. + $current_nodes = _nodequeue_dragdrop_get_nodes($queue, $subqueue); + $old_positions = array(); + foreach($current_nodes as $node) { + $old_positions[$node->position] = $node->nid; + } + if ($queue->reverse == 1 && $nodes != $old_positions && sizeof($nodes) == sizeof($old_positions)) { + $reverse_nodes = array(); + $p = array_keys($nodes); + $v = array_values($nodes); + $v = array_reverse($v); + foreach ($v as $key => $value) { + $reverse_nodes[$p[$key]] = $value; + } + $nodes = $reverse_nodes; + } + // clear the queue and save the new positions db_query('DELETE FROM {nodequeue_nodes} WHERE sqid = %d', $sqid); foreach ($nodes as $pos => $nid) {