fixed tree node navigation bug (when stepping up empty sub-trees)
[rocksndiamonds.git] / src / libgame / setup.c
index 9c6ddfe6cabd8fd202c43761aec225d951cf9e43..403d0dae558baa641d5ebf618fb45a8e514fe9c3 100644 (file)
@@ -1295,17 +1295,20 @@ 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);
-  else 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);
   }
-  else                         // this seems to be a regular level series
-    return node;
+
+  // this is a regular tree node
+  return node;
 }
 
 TreeInfo *getTreeInfoFirstGroupEntry(TreeInfo *node)