Index: nodequeue.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodequeue/nodequeue.module,v
retrieving revision 1.87
diff -u -p -r1.87 nodequeue.module
--- nodequeue.module	8 Jul 2009 15:04:34 -0000	1.87
+++ nodequeue.module	6 Aug 2009 18:07:45 -0000
@@ -2223,6 +2223,9 @@ function nodequeue_subqueue_add($queue, 
   if (module_exists('apachesolr')) {
     apachesolr_mark_node($nid);
   }
+  
+	// alert other modules that we've added a node
+  module_invoke_all('nodequeue', 'add', $subqueue->sqid, $nid);
 }
 
 /**
@@ -2241,6 +2244,9 @@ function nodequeue_subqueue_remove_node(
     if (module_exists('apachesolr')) {
       apachesolr_mark_node($nid);
     }
+    
+    // alert other modules that we've removed a node
+    module_invoke_all('nodequeue', 'remove', $sqid, $nid);
   }
 }
 /**
@@ -2264,9 +2270,17 @@ function nodequeue_subqueue_remove($sqid
     $end = $start;
   }
 
+  // Get the nodes being removed
+  $result = db_query("SELECT nid FROM {nodequeue_nodes} WHERE sqid = %d AND position >= %d AND position <= %d", $sqid, $start, $end);
+
   $diff = $end - $start + 1;
   db_query("DELETE FROM {nodequeue_nodes} WHERE sqid = %d AND position >= %d AND position <= %d", $sqid, $start, $end);
   db_query("UPDATE {nodequeue_nodes} SET position = position - %d WHERE sqid = %d AND position > %d",  $diff, $sqid, $end);
+  
+  // notify other modules of the removed nodes
+  while($node = db_fetch_object($result)) {
+    module_invoke_all('nodequeue', 'remove', $sqid, $node->nid);
+  }
 }
 
 /**
@@ -2330,6 +2344,9 @@ function nodequeue_queue_swap($subqueue,
 
   db_query("UPDATE {nodequeue_nodes} SET position = %d WHERE position = %d AND sqid = %d", $pos1, $pos2,  $subqueue->sqid);
   db_query("UPDATE {nodequeue_nodes} SET position = %d WHERE nid = %d AND sqid = %d", $pos2, $nid, $subqueue->sqid);
+
+  // notify other modules of the swap
+	module_invoke_all('nodequeue', 'swap', $sqid, $nid);
 }
 
 /**
