Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-10-04 15:34:21 +08:00
commit 700fbc41f5
3 changed files with 26 additions and 8 deletions

View file

@ -41,7 +41,7 @@ import {countBlockWord} from "../../layout/status";
import {Constants} from "../../constants";
import {mathRender} from "../render/mathRender";
import {duplicateBlock} from "../wysiwyg/commonHotkey";
import {movePathTo} from "../../util/pathName";
import {movePathTo, useShell} from "../../util/pathName";
import {hintMoveBlock} from "../hint/extend";
import {makeCard, quickMakeCard} from "../../card/makeCard";
import {transferBlockRef} from "../../menus/block";
@ -59,6 +59,7 @@ import {addEditorToDatabase} from "../render/av/addToDatabase";
import {processClonePHElement} from "../render/util";
/// #if !MOBILE
import {openFileById} from "../../editor/util";
import * as path from "path";
/// #endif
import {checkFold} from "../../util/noRelyPCFunction";
import {clearSelect} from "../util/clearSelect";
@ -1559,6 +1560,14 @@ export class Gutter {
});
}
}).element);
window.siyuan.menus.menu.append(new MenuItem({
id: "showDatabaseInFolder",
icon: "iconFolder",
label: window.siyuan.languages.showInFolder,
click() {
useShell("showItemInFolder", path.join(window.siyuan.config.system.dataDir, "storage", "av", nodeElement.getAttribute("data-av-id")) + ".json");
}
}).element);
} else if ((type === "NodeVideo" || type === "NodeAudio") && !protyle.disabled) {
window.siyuan.menus.menu.append(new MenuItem({id: "separator_VideoOrAudio", type: "separator"}).element);
window.siyuan.menus.menu.append(new MenuItem({

View file

@ -1525,17 +1525,25 @@ func (tx *Transaction) doUpdate(operation *Operation) (ret *TxErr) {
syncDelete2AvBlock(n, tree, tx)
}
var needUnfoldParentHeading bool
if 0 < oldNode.HeadingLevel && (0 == updatedNode.HeadingLevel || oldNode.HeadingLevel < updatedNode.HeadingLevel) {
// 将不属于折叠标题的块移动到折叠标题下方,需要展开折叠标题
needUnfoldParentHeading = true
needUnfoldParentHeading := 0 < oldNode.HeadingLevel && (0 == updatedNode.HeadingLevel || oldNode.HeadingLevel < updatedNode.HeadingLevel)
parentFoldedHeading := treenode.GetParentFoldedHeading(oldNode)
// 将原先折叠标题下的块提升为与折叠标题同级或更高一级的标题时,需要在折叠标题后插入该提升后的标题块(只需要推送界面插入)
if needInsertAfterParentHeading := nil != parentFoldedHeading && 0 != updatedNode.HeadingLevel && updatedNode.HeadingLevel <= parentFoldedHeading.HeadingLevel; needInsertAfterParentHeading {
evt := util.NewCmdResult("transactions", 0, util.PushModeBroadcast)
evt.Data = []*Transaction{{
DoOperations: []*Operation{{Action: "insert", ID: updatedNode.ID, PreviousID: parentFoldedHeading.ID, Data: data}},
UndoOperations: []*Operation{{Action: "delete", ID: updatedNode.ID}},
}}
util.PushEvent(evt)
}
oldNode.InsertAfter(updatedNode)
oldNode.Unlink()
if needUnfoldParentHeading {
parentFoldedHeading := treenode.GetParentFoldedHeading(updatedNode)
parentFoldedHeading = treenode.GetParentFoldedHeading(updatedNode)
unfoldHeading(parentFoldedHeading)
}
@ -1590,8 +1598,9 @@ func unfoldHeading(heading *ast.Node) {
heading.RemoveIALAttr("heading-fold")
evt := util.NewCmdResult("transactions", 0, util.PushModeBroadcast)
fillBlockRefCount(children)
evt.Data = []*Transaction{{
DoOperations: []*Operation{{Action: "unfoldHeading", ID: heading.ID}},
DoOperations: []*Operation{{Action: "unfoldHeading", ID: heading.ID, RetData: renderBlockDOMByNodes(children, NewLute())}},
UndoOperations: []*Operation{{Action: "foldHeading", ID: heading.ID}},
}}

View file

@ -12,7 +12,7 @@
"FileDescription": "SiYuan Kernel",
"FileVersion": "",
"InternalName": "",
"LegalCopyright": "© 2024 Yunnan Liandi Technology Co., Ltd.",
"LegalCopyright": "© 2020-present Yunnan Liandi Technology Co., Ltd.",
"LegalTrademarks": "",
"OriginalFilename": "",
"PrivateBuild": "",