Index: relativity.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/relativity/relativity.module,v
retrieving revision 1.46.2.7
diff -u -p -r1.46.2.7 relativity.module
--- relativity.module	10 Jul 2009 14:41:43 -0000	1.46.2.7
+++ relativity.module	12 Nov 2009 10:31:08 -0000
@@ -1044,16 +1044,23 @@ function relativity_delete_relationships
  * so we can manage our additional data appropriately.
  */
 function relativity_nodeapi(&$node, $op, $teaser, $page) {
-  if (is_numeric(arg(4))) {
-    //check if parent node actually exists
-    if (db_result(db_query("SELECT COUNT(nid) FROM {node} WHERE nid=%d", arg(4)))) {
+  // Calculating the node parent's nid ($node->parent_node).
+  // We are on a add child node page.
+  if (arg(3) == 'parent' && is_numeric(arg(4))) {
+    // Check if parent node actually exists
+    if (db_result(db_query("SELECT nid FROM {node} WHERE nid = %d", arg(4)))) {
       if (array_key_exists(arg(2), relativity_node_list())) {
         $node->parent_node = arg(4);
       }
     }
   }
+  // The parent node nid was passed by $_POST.
   elseif ($_POST['parent_node']) {
-    $node->parent_node = $_POST['parent_node'] + 0;
+    $node->parent_node = (int) $_POST['parent_node'];
+  }
+  // Other case where the node have a single parent.
+  elseif ($node->nid && (!relativity_multi_parent($node)) && ($check_parent = db_result(db_query("SELECT parent_nid FROM {relativity} WHERE nid = %d", $node->nid)))) {
+    $node->parent_node = $check_parent;
   }
 
   switch ($op) {
