From 2dc9ebdd4c1141341890c1d368b5f27b2da6a332 Mon Sep 17 00:00:00 2001 From: nadrad Date: Fri, 17 Mar 2023 20:24:17 +0100 Subject: [PATCH] sibling activated when node becomes hidden --- h-m-m | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/h-m-m b/h-m-m index 0e8012b..2b1d556 100755 --- a/h-m-m +++ b/h-m-m @@ -1211,8 +1211,30 @@ function toggle_hide(&$mm) { $mm['nodes'][ $mm['active_node'] ]['title'] = '[HIDDEN] ' . $mm['nodes'][ $mm['active_node'] ]['title']; $is_hidden = true; + if (!$mm['show_hidden']) - $mm['active_node'] = $mm['nodes'][ $mm['active_node'] ]['parent']; + { + $parent_id = $mm['nodes'][ $mm['active_node'] ]['parent']; + if (count($mm['nodes'][$parent_id]['visible_children'])<=1) + $mm['active_node'] = $parent_id; + else + { + $previous_sibling = 0; + $passed = false; + foreach ($mm['nodes'][$parent_id]['visible_children'] as $cid) + if ($cid==$mm['active_node']) + { + if ($previous_sibling!=0) break; + $passed = true; + } + else + { + $previous_sibling = $cid; + if ($passed) break; + } + $mm['active_node'] = $previous_sibling; + } + } } build_map($mm); @@ -2606,7 +2628,7 @@ function delete_node_internal(&$mm, $active_node, $exclude_parent = false ) $previous_sibling = 0; $passed = false; - foreach ($mm['nodes'][$parent_id]['children'] as $cid) + foreach ($mm['nodes'][$parent_id]['visible_children'] as $cid) if ($cid==$active_node) { if ($previous_sibling!=0) break; @@ -2631,7 +2653,7 @@ function delete_node_internal(&$mm, $active_node, $exclude_parent = false ) unset($mm['nodes'][ $active_node ]); - if ($mm['nodes'][$parent_id]['is_leaf']) + if (count($mm['nodes'][$parent_id]['visible_children'])==0) $mm['active_node'] = $parent_id; else $mm['active_node'] = $previous_sibling;