diff options
Diffstat (limited to 'delete.go')
| -rw-r--r-- | delete.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/delete.go b/delete.go new file mode 100644 index 0000000..7d29bf2 --- /dev/null +++ b/delete.go @@ -0,0 +1,54 @@ +package main + +// if you include more than just this import +// then your plugin might be doing something un-ideal (just a guess from 2023/02/27) +import ( + "go.wit.com/lib/widget" + "go.wit.com/log" +) + +// delete the child widget from the parent +// p = parent, c = child +func (n *node) destroy() { + pId := n.parent.WidgetId + cId := n.WidgetId + log.Log(NOW, "delete()", pId, cId) + + pt := n.parent.tk + ct := n.tk + if ct == nil { + log.Log(NOW, "delete FAILED (ct = mapToolkit[c] == nil) for c", pId, cId) + // this pukes out a whole universe of shit + // listMap() + return + } + + switch n.WidgetType { + case widget.Button: + log.Log(NOW, "Should delete Button here:", n.progname) + log.Log(NOW, "Parent:") + pt.Dump(true) + log.Log(NOW, "Child:") + ct.Dump(true) + if pt.uiBox == nil { + log.Log(NOW, "Don't know how to destroy this") + } else { + log.Log(NOW, "Fuck it, destroy the whole box", n.parent.progname) + // pt.uiBox.Destroy() // You have a bug: You cannot destroy a uiControl while it still has a parent. + pt.uiBox.SetPadded(false) + pt.uiBox.Delete(4) + ct.uiButton.Disable() + // ct.uiButton.Hide() + ct.uiButton.Destroy() + } + + case widget.Window: + log.Log(NOW, "Should delete Window here:", n.progname) + default: + log.Log(NOW, "Fuckit, let's destroy a button") + if ct.uiButton != nil { + pt.uiBox.Delete(4) + ct.uiButton.Destroy() + } + } +} |
