diff options
Diffstat (limited to 'button.go')
| -rw-r--r-- | button.go | 33 |
1 files changed, 31 insertions, 2 deletions
@@ -15,6 +15,35 @@ func (n *Node) NewButton(name string, custom func()) *Node { return newNode } -func callback(i int) { - log(debugError, "button callback() i =", i) +func callback(i int) bool { + log(debugError, "callback() for widget id =", i) + n := Config.rootNode.FindId(i) + log(debugError, "callback() found node =", n) + // running custom here means the button get's clicked twice + if (n.Custom == nil) { + log(debugError, "callback() = nil. SKIPPING") + return false + } + n.Custom() + return true } + +// find widget by number +func (n *Node) FindId(i int) (*Node) { + if (n == nil) { + return nil + } + + if (n.id == i) { + return n + } + + for _, child := range n.children { + newN := child.FindId(i) + if (newN != nil) { + return newN + } + } + return nil +} + |
