From 1c57d0b69657f184c827bc991fc8a03f83ecb2cd Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 29 Aug 2025 10:47:04 +0800 Subject: [PATCH] :bug: The folded state of the block under the folded heading is incorrect in some cases https://github.com/siyuan-note/siyuan/issues/15717 --- kernel/treenode/heading.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/kernel/treenode/heading.go b/kernel/treenode/heading.go index b8b49cfd2..26ebd8102 100644 --- a/kernel/treenode/heading.go +++ b/kernel/treenode/heading.go @@ -86,13 +86,24 @@ func GetHeadingFold(nodes []*ast.Node) (ret []*ast.Node) { } func IsUnderFoldedHeading(node *ast.Node) bool { + currentLevel := 7 + if ast.NodeHeading == node.Type { + currentLevel = node.HeadingLevel + } for n := node.Previous; nil != n; n = n.Previous { - if ast.NodeHeading == n.Type && "1" == n.IALAttr("fold") { - if ast.NodeHeading != node.Type { - return true + if ast.NodeHeading == n.Type { + if n.HeadingLevel >= currentLevel { + break } - if n.HeadingLevel > node.HeadingLevel { - return true + currentLevel = n.HeadingLevel + + if "1" == n.IALAttr("fold") { + if ast.NodeHeading != node.Type { + return true + } + if n.HeadingLevel > node.HeadingLevel { + return true + } } } }