shithub: mycel

Download patch

ref: 286d2f7e3fe365426c559b5ff8b48573ad1ce5ba
parent: 8c68719b7a3b8c7e4a1db663e6d2802a220924c5
author: Philip Silva <philip.silva@protonmail.com>
date: Fri Dec 18 08:19:34 EST 2020

more generic version of ParentForm()

--- a/browser/browser.go
+++ b/browser/browser.go
@@ -285,7 +285,7 @@
 		Text: t,
 		Font: n.Font(),
 		Click: func() (r duit.Event) {
-			b.submit(n.ParentForm().DomSubtree)
+			b.submit(n.Ancestor("form").DomSubtree)
 			return duit.Event{
 				Consumed:   true,
 				NeedLayout: true,
@@ -315,7 +315,7 @@
 				},
 				Keys: func(k rune, m draw.Mouse) (e duit.Event) {
 					if k == 10 {
-						browser.submit(n.ParentForm().DomSubtree)
+						browser.submit(n.Ancestor("form").DomSubtree)
 						return duit.Event{
 							Consumed:   true,
 							NeedLayout: true,
--- a/nodes/nodes.go
+++ b/nodes/nodes.go
@@ -75,15 +75,16 @@
 	return n.DomSubtree.Data
 }
 
-func (n *Node) ParentForm() *Node {
+// Ancestor of tag
+func (n *Node) Ancestor(tag string) *Node {
 	log.Printf("<%v>.ParentForm()", n.DomSubtree.Data)
-	if n.DomSubtree.Data == "form" {
-		log.Printf("  I'm a form :-)")
+	if n.DomSubtree.Data == tag {
+		log.Printf("  I'm a %v :-)", tag)
 		return n
 	}
 	if n.Parent != nil {
 		log.Printf("  go to my parent")
-		return n.Parent.ParentForm()
+		return n.Parent.Ancestor(tag)
 	}
 	return nil
 }