From 52e1dd8b068fa4c47e6bad12ecb10af7fbd5730c Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 2 Apr 2024 15:59:28 +0800 Subject: [PATCH 1/3] :bug: Improve outline dnd https://github.com/siyuan-note/siyuan/issues/10828 --- app/src/dialog/processSystem.ts | 8 +++++--- app/src/index.ts | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/dialog/processSystem.ts b/app/src/dialog/processSystem.ts index 5cbf26dcf..08f5f4e67 100644 --- a/app/src/dialog/processSystem.ts +++ b/app/src/dialog/processSystem.ts @@ -35,9 +35,11 @@ const updateTitle = (rootID: string, tab: Tab, protyle?: IProtyle) => { }); }; -export const reloadSync = (app: App, data: { upsertRootIDs: string[], removeRootIDs: string[] }) => { - hideMessage(); - /// #if MOBILE +export const reloadSync = (app: App, data: { upsertRootIDs: string[], removeRootIDs: string[] }, hideMsg = true) => { + if (hideMsg) { + hideMessage(); + } + /// #if MOBILE if (window.siyuan.mobile.popEditor) { if (data.removeRootIDs.includes(window.siyuan.mobile.popEditor.protyle.block.rootID)) { hideElements(["dialog"]); diff --git a/app/src/index.ts b/app/src/index.ts index 585686d17..90e9766c2 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -16,7 +16,8 @@ import { processSync, progressBackgroundTask, progressLoading, - progressStatus, reloadSync, + progressStatus, + reloadSync, setTitle, transactionError } from "./dialog/processSystem"; @@ -66,7 +67,7 @@ export class App { reloadSync(this, data.data); break; case "reloaddoc": - reloadSync(this, {upsertRootIDs: [data.data], removeRootIDs: []}); + reloadSync(this, {upsertRootIDs: [data.data], removeRootIDs: []}, false); break; case "readonly": window.siyuan.config.editor.readOnly = data.data; From 577837894fce1ce6a778d11c245a3b4ab21cfa7b Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 2 Apr 2024 16:01:09 +0800 Subject: [PATCH 2/3] :bug: Improve outline dnd https://github.com/siyuan-note/siyuan/issues/10828 --- app/appearance/langs/en_US.json | 3 ++- app/appearance/langs/es_ES.json | 3 ++- app/appearance/langs/fr_FR.json | 3 ++- app/appearance/langs/zh_CHT.json | 3 ++- app/appearance/langs/zh_CN.json | 3 ++- kernel/model/outline.go | 16 ++++++++++++++++ 6 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 956eaddbc..b94304322 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1462,6 +1462,7 @@ "237": "[%d] marketplace packages have all been updated successfully", "238": "Marketplace package [%s] update failed, please try again later", "239": "Related operations are being processed, please try again later", - "240": "The heading under the container block in the doc does not support dragging" + "240": "Drag heading under container blocks in the doc is not supported", + "241": "Drag to its subheading is not supported" } } diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 08430e32f..d537c3d20 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1462,6 +1462,7 @@ "237": "[%d] todos los paquetes del mercado se han actualizado correctamente", "238": "Error en la actualización del paquete Marketplace [%s], inténtalo de nuevo más tarde", "239": "Las operaciones relacionadas se están procesando, inténtalo de nuevo más tarde", - "240": "El encabezado debajo del bloque contenedor en el documento no admite el arrastre" + "240": "No se admite arrastrar encabezado debajo de los bloques contenedores en el documento", + "241": "No se admite arrastrar a su subtítulo" } } diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index fd4ff6191..aa5efb7b4 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1462,6 +1462,7 @@ "237": "[%d] packages Marketplace ont tous été mis à jour avec succès", "238": "La mise à jour du package Marketplace [%s] a échoué, veuillez réessayer plus tard", "239": "Les opérations associées sont en cours de traitement, veuillez réessayer plus tard", - "240": "Le titre sous le bloc conteneur dans la doc ne prend pas en charge le glisser" + "240": "Le déplacement du titre sous les blocs conteneurs dans la doc n'est pas pris en charge", + "241": "Le glisser vers son sous-titre n'est pas pris en charge" } } diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index b680e40af..3948166c6 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1462,6 +1462,7 @@ "237": "[%d] 個市集包已經全部更新成功", "238": "市集包 [%s] 更新失敗,請稍後再試", "239": "相關操作正在處理中,請稍後再試", - "240": "文件中容器區塊下的標題不支援拖曳" + "240": "不支援拖曳文件中容器區塊下的標題", + "241": "不支持拖曳為自己的子標題" } } diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 314bc3e41..a31b781bb 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1462,6 +1462,7 @@ "237": "[%d] 个集市包已经全部更新成功", "238": "集市包 [%s] 更新失败,请稍后再试", "239": "相关操作正在处理中,请稍后再试", - "240": "文档中容器块下的标题不支持拖拽" + "240": "不支持拖拽文档中容器块下的标题", + "241": "不支持拖拽为自己的子标题" } } diff --git a/kernel/model/outline.go b/kernel/model/outline.go index e89fe70bf..4ccc80d80 100644 --- a/kernel/model/outline.go +++ b/kernel/model/outline.go @@ -85,6 +85,14 @@ func (tx *Transaction) doMoveOutlineHeading(operation *Operation) (ret *TxErr) { return } + for _, h := range headingChildren { + if h.ID == previousID { + // 不能移动到自己的子标题下 + util.PushMsg(Conf.language(241), 5000) + return + } + } + targetNode := previousHeading previousHeadingChildren := treenode.HeadingChildren(previousHeading) if 0 < len(previousHeadingChildren) { @@ -122,6 +130,14 @@ func (tx *Transaction) doMoveOutlineHeading(operation *Operation) (ret *TxErr) { return } + for _, h := range headingChildren { + if h.ID == parentID { + // 不能移动到自己的子标题下 + util.PushMsg(Conf.language(241), 5000) + return + } + } + targetNode := parentHeading parentHeadingChildren := treenode.HeadingChildren(parentHeading) From d45bec56651a555edd090c8a8459a5ba41ef3a5b Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 2 Apr 2024 16:45:54 +0800 Subject: [PATCH 3/3] :bug: Improve outline dnd https://github.com/siyuan-note/siyuan/issues/10828 --- kernel/model/outline.go | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/kernel/model/outline.go b/kernel/model/outline.go index 4ccc80d80..ed82c6e7d 100644 --- a/kernel/model/outline.go +++ b/kernel/model/outline.go @@ -63,16 +63,6 @@ func (tx *Transaction) doMoveOutlineHeading(operation *Operation) (ret *TxErr) { headingChildren := treenode.HeadingChildren(heading) - // 过滤掉超级块结束节点 - var tmp []*ast.Node - for _, child := range headingChildren { - if ast.NodeSuperBlockCloseMarker == child.Type { - continue - } - tmp = append(tmp, child) - } - headingChildren = tmp - if "" != previousID { previousHeading := treenode.GetNodeInTree(tree, previousID) if nil == previousHeading { @@ -142,7 +132,7 @@ func (tx *Transaction) doMoveOutlineHeading(operation *Operation) (ret *TxErr) { parentHeadingChildren := treenode.HeadingChildren(parentHeading) // 找到下方第一个非标题节点 - tmp = nil + var tmp []*ast.Node for _, child := range parentHeadingChildren { if ast.NodeHeading == child.Type { break @@ -160,7 +150,7 @@ func (tx *Transaction) doMoveOutlineHeading(operation *Operation) (ret *TxErr) { } } - diffLevel := 1 + diffLevel := heading.HeadingLevel - parentHeading.HeadingLevel - 1 heading.HeadingLevel = parentHeading.HeadingLevel + 1 if 6 < heading.HeadingLevel { heading.HeadingLevel = 6 @@ -169,7 +159,7 @@ func (tx *Transaction) doMoveOutlineHeading(operation *Operation) (ret *TxErr) { for i := len(headingChildren) - 1; i >= 0; i-- { child := headingChildren[i] if ast.NodeHeading == child.Type { - child.HeadingLevel += diffLevel + child.HeadingLevel -= diffLevel if 6 < child.HeadingLevel { child.HeadingLevel = 6 }