From 9e7426a6f4884813be3f4d16ee348820d3671bcc Mon Sep 17 00:00:00 2001 From: Jeffrey Chen <78434827+TCOTC@users.noreply.github.com> Date: Wed, 30 Jul 2025 17:22:40 +0800 Subject: [PATCH 1/2] :lipstick: Improve the animation for opening dialog (#15383) fix https://github.com/siyuan-note/siyuan/issues/15085 --- app/src/constants.ts | 1 + app/src/dialog/index.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/constants.ts b/app/src/constants.ts index 511dc7b47..04c5aca81 100644 --- a/app/src/constants.ts +++ b/app/src/constants.ts @@ -225,6 +225,7 @@ export abstract class Constants { public static readonly DIALOG_SAVEWORKSPACE = "dialog-saveworkspace"; // 保存工作空间 // timeout + public static readonly TIMEOUT_OPENDIALOG = 50; public static readonly TIMEOUT_DBLCLICK = 190; public static readonly TIMEOUT_INPUT = 256; public static readonly TIMEOUT_LOAD = 300; diff --git a/app/src/dialog/index.ts b/app/src/dialog/index.ts index 7933473b0..39c856375 100644 --- a/app/src/dialog/index.ts +++ b/app/src/dialog/index.ts @@ -78,7 +78,7 @@ left:${left || "auto"};top:${top || "auto"}"> } else { setTimeout(() => { this.element.classList.add("b3-dialog--open"); - }); + }, Constants.TIMEOUT_OPENDIALOG); } /// #if !MOBILE moveResize(this.element.querySelector(".b3-dialog__container"), options.resizeCallback); From de55ea9315cefe40a9187a1a61e74e676e6e9495 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 30 Jul 2025 16:59:24 +0800 Subject: [PATCH 2/2] :art: Improve fold heading editing https://github.com/siyuan-note/siyuan/issues/14349 Point 01 --- kernel/model/transaction.go | 12 ++++++++++++ kernel/treenode/heading.go | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 1057fed86..483c09c16 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -1222,6 +1222,12 @@ func (tx *Transaction) doInsert(operation *Operation) (ret *TxErr) { node.InsertAfter(remain) } node.InsertAfter(insertedNode) + + if treenode.IsUnderFoldedHeading(insertedNode) { + // 保持在标题下的折叠状态 + insertedNode.SetIALAttr("fold", "1") + insertedNode.SetIALAttr("heading-fold", "1") + } } else { node = treenode.GetNodeInTree(tree, operation.ParentID) if nil == node { @@ -1459,6 +1465,12 @@ func (tx *Transaction) doUpdate(operation *Operation) (ret *TxErr) { oldNode.InsertAfter(updatedNode) oldNode.Unlink() + if treenode.IsUnderFoldedHeading(updatedNode) { + // 保持在标题下的折叠状态 + updatedNode.SetIALAttr("fold", "1") + updatedNode.SetIALAttr("heading-fold", "1") + } + createdUpdated(updatedNode) tx.nodes[updatedNode.ID] = updatedNode diff --git a/kernel/treenode/heading.go b/kernel/treenode/heading.go index 78316fc44..b8b49cfd2 100644 --- a/kernel/treenode/heading.go +++ b/kernel/treenode/heading.go @@ -85,6 +85,20 @@ func GetHeadingFold(nodes []*ast.Node) (ret []*ast.Node) { return } +func IsUnderFoldedHeading(node *ast.Node) bool { + 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 n.HeadingLevel > node.HeadingLevel { + return true + } + } + } + return false +} + func HeadingChildren(heading *ast.Node) (ret []*ast.Node) { start := heading.Next if nil == start {