55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
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()
|
|
}
|
|
}
|
|
}
|