Index: sites/default/modules/nodequeue/nodequeue.module =================================================================== --- sites/default/modules/nodequeue/nodequeue.module (revision 2048) +++ sites/default/modules/nodequeue/nodequeue.module (working copy) @@ -1256,6 +1256,25 @@ 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 && //check if "reverse in admin view" option is used + $nodes !== $old_positions && //if there were no changes to the nodeque, skip reversing + sizeof($nodes) == sizeof($old_positions)) { //if an item has been removed, skip reversing + $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) {