From 2802efdfb374b000804e2a4b331a72d7173aa345 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 10 Nov 2023 09:07:21 +0800 Subject: [PATCH 1/2] :bug: The referenced block under the folded heading cannot be hovered to view Fix https://github.com/siyuan-note/siyuan/issues/9582 --- kernel/model/file.go | 8 ++++++-- kernel/model/heading.go | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/kernel/model/file.go b/kernel/model/file.go index 092d30858..6318a51bb 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -722,8 +722,12 @@ func GetDoc(startID, endID, id string, index int, query string, queryTypes map[s } if "1" == n.IALAttr("heading-fold") { - unlinks = append(unlinks, n) - return ast.WalkContinue + // 折叠标题下被引用的块无法悬浮查看 + // The referenced block under the folded heading cannot be hovered to view https://github.com/siyuan-note/siyuan/issues/9582 + if 0 != mode && id != n.ID { + unlinks = append(unlinks, n) + return ast.WalkContinue + } } if "" != n.ID { diff --git a/kernel/model/heading.go b/kernel/model/heading.go index 072641194..38a7528ca 100644 --- a/kernel/model/heading.go +++ b/kernel/model/heading.go @@ -54,7 +54,6 @@ func (tx *Transaction) doFoldHeading(operation *Operation) (ret *TxErr) { return ast.WalkContinue } - n.SetIALAttr("fold", "1") n.SetIALAttr("heading-fold", "1") return ast.WalkContinue }) From a1ac6fb86712a7fb6838d439102964dd6537b1a1 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 10 Nov 2023 10:22:19 +0800 Subject: [PATCH 2/2] :art: Attribute view support sticky layout https://github.com/siyuan-note/siyuan/pull/9617 --- kernel/av/table.go | 2 ++ kernel/model/attribute_view.go | 34 ++++++++++++++++++++++++++++++++++ kernel/model/transaction.go | 2 ++ kernel/treenode/node.go | 1 + 4 files changed, 39 insertions(+) diff --git a/kernel/av/table.go b/kernel/av/table.go index a4ba6406c..77f0cdf78 100644 --- a/kernel/av/table.go +++ b/kernel/av/table.go @@ -39,6 +39,7 @@ type ViewTableColumn struct { Wrap bool `json:"wrap"` // 是否换行 Hidden bool `json:"hidden"` // 是否隐藏 + Pin bool `json:"pin"` // 是否固定 Width string `json:"width"` // 列宽度 Calc *ColumnCalc `json:"calc,omitempty"` // 计算 } @@ -562,6 +563,7 @@ type TableColumn struct { Icon string `json:"icon"` // 列图标 Wrap bool `json:"wrap"` // 是否换行 Hidden bool `json:"hidden"` // 是否隐藏 + Pin bool `json:"pin"` // 是否固定 Width string `json:"width"` // 列宽度 Calc *ColumnCalc `json:"calc"` // 计算 diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 603ff105b..7de99c1ea 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -366,6 +366,7 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a Wrap: col.Wrap, Hidden: col.Hidden, Width: col.Width, + Pin: col.Pin, Calc: col.Calc, }) } @@ -947,6 +948,39 @@ func setAttributeViewColHidden(operation *Operation) (err error) { return } +func (tx *Transaction) doSetAttrViewColumnPin(operation *Operation) (ret *TxErr) { + err := setAttributeViewColPin(operation) + if nil != err { + return &TxErr{code: TxErrWriteAttributeView, id: operation.AvID, msg: err.Error()} + } + return +} + +func setAttributeViewColPin(operation *Operation) (err error) { + attrView, err := av.ParseAttributeView(operation.AvID) + if nil != err { + return + } + + view, err := attrView.GetView() + if nil != err { + return + } + + switch view.LayoutType { + case av.LayoutTypeTable: + for _, column := range view.Table.Columns { + if column.ID == operation.ID { + column.Pin = operation.Data.(bool) + break + } + } + } + + err = av.SaveAttributeView(attrView) + return +} + func (tx *Transaction) doSetAttrViewColumnIcon(operation *Operation) (ret *TxErr) { err := setAttributeViewColIcon(operation) if nil != err { diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index ef5318a1b..460c23efc 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -208,6 +208,8 @@ func performTx(tx *Transaction) (ret *TxErr) { ret = tx.doSetAttrViewColumnWrap(op) case "setAttrViewColHidden": ret = tx.doSetAttrViewColumnHidden(op) + case "setAttrViewColPin": + ret = tx.doSetAttrViewColumnPin(op) case "setAttrViewColIcon": ret = tx.doSetAttrViewColumnIcon(op) case "insertAttrViewBlock": diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index 8658f215d..70621b178 100644 --- a/kernel/treenode/node.go +++ b/kernel/treenode/node.go @@ -582,6 +582,7 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a Wrap: col.Wrap, Hidden: col.Hidden, Width: col.Width, + Pin: col.Pin, Calc: col.Calc, }) }