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/log" "go.wit.com/widget" ) // 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() } } }