fixed tree node navigation bug (when stepping up empty sub-trees)
[rocksndiamonds.git] / src / libgame / setup.c
index 715464ab13da9140fec5b6cc3e29a9aec93f3774..403d0dae558baa641d5ebf618fb45a8e514fe9c3 100644 (file)
@@ -1295,18 +1295,19 @@ TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
   if (node == NULL)
     return NULL;
 
-  if (node->node_group)                // enter level group (step down into tree)
+  if (node->node_group)                // enter node group (step down into tree)
     return getFirstValidTreeInfoEntry(node->node_group);
 
-  if (node->parent_link)       // skip start entry of level group
+  if (node->parent_link)       // skip first node (back link) of node group
   {
-    if (node->next)            // get first real level series entry
-      return getFirstValidTreeInfoEntry(node->next);
-    else                       // leave empty level group and go on
-      return getFirstValidTreeInfoEntry(node->node_parent->next);
+    // get next regular tree node, or step up until one is found
+    while (node->next == NULL && node->node_parent != NULL)
+      node = node->node_parent;
+
+    return getFirstValidTreeInfoEntry(node->next);
   }
 
-  // this seems to be a regular level series
+  // this is a regular tree node
   return node;
 }