window reference state for better ui control

This commit is contained in:
2026-02-12 23:55:35 +00:00
parent 0b6c589304
commit 4c2bebd35f
+25 -9
View File
@@ -16,6 +16,21 @@ const (
layoutToolActionPagesID = "layout-tool-action-pages" layoutToolActionPagesID = "layout-tool-action-pages"
) )
type windowReference struct {
ID int16
}
func getWindowRefFromNode(node *tview.TreeNode) *windowReference {
ref := node.GetReference()
wRef, ok := ref.(windowReference)
if !ok {
return nil
}
return &wRef
}
func FindNodeByReference( func FindNodeByReference(
node *tview.TreeNode, node *tview.TreeNode,
want any, want any,
@@ -45,7 +60,10 @@ func appendWindow(bus *events.Bus, tree *tview.TreeView, idx int16, title string
} }
fmtTitle := fmt.Sprintf("%s [%2d]", title, idx) fmtTitle := fmt.Sprintf("%s [%2d]", title, idx)
newWindow := tview.NewTreeNode(fmtTitle).SetReference(idx) ref := windowReference{
ID: idx,
}
newWindow := tview.NewTreeNode(fmtTitle).SetReference(ref)
root.AddChild(newWindow) root.AddChild(newWindow)
} }
@@ -135,14 +153,13 @@ func layoutToolTreeViewEvCapture(bus *events.Bus, doc *dom.DOM,
break break
} }
ref := curNode.GetReference() winRef := getWindowRefFromNode(curNode)
wID, ok := ref.(int16) if winRef == nil {
if !ok {
// Whatever, do something better here // Whatever, do something better here
break break
} }
bus.Emit(ui.DestroyWindowEv{ID: wID}) bus.Emit(ui.DestroyWindowEv{ID: winRef.ID})
case 'm': case 'm':
// Go into move mode // Go into move mode
curNode := tree.GetCurrentNode() curNode := tree.GetCurrentNode()
@@ -151,14 +168,13 @@ func layoutToolTreeViewEvCapture(bus *events.Bus, doc *dom.DOM,
break break
} }
ref := curNode.GetReference() winRef := getWindowRefFromNode(curNode)
wID, ok := ref.(int16) if winRef == nil {
if !ok {
// Whatever, do something better here // Whatever, do something better here
break break
} }
windowManipulationTool(bus, doc, wID) windowManipulationTool(bus, doc, winRef.ID)
case 'e': case 'e':
// Go into edit mode // Go into edit mode
case 's': case 's':