summaryrefslogtreecommitdiff
path: root/find.go
diff options
context:
space:
mode:
Diffstat (limited to 'find.go')
-rw-r--r--find.go50
1 files changed, 44 insertions, 6 deletions
diff --git a/find.go b/find.go
index d3aa19d..2cb94f3 100644
--- a/find.go
+++ b/find.go
@@ -176,12 +176,6 @@ func findWindowUnderMouse() *guiWidget {
return nil
}
-// todo: use this?
-func ctrlDown(g *gocui.Gui, v *gocui.View) error {
- log.Info("todo: clicked with ctrlDown")
- return nil
-}
-
func (tk *guiWidget) findParentWindow() *guiWidget {
if tk.WidgetType() == widget.Window {
return tk
@@ -191,3 +185,47 @@ func (tk *guiWidget) findParentWindow() *guiWidget {
}
return tk.parent.findParentWindow()
}
+
+func (tk *guiWidget) findWidgetByName(name string) *guiWidget {
+ if tk.cuiName == name {
+ return tk
+ }
+ for _, child := range tk.children {
+ found := child.findWidgetByName(name)
+ if found != nil {
+ return found
+ }
+ }
+ return nil
+}
+
+func (tk *guiWidget) findWidgetByView(v *gocui.View) *guiWidget {
+ if tk.v == v {
+ return tk
+ }
+ if tk.cuiName == v.Name() {
+ log.Log(NOW, "findWidget() error. names are mismatched or out of sync", tk.cuiName)
+ log.Log(NOW, "findWidget() or maybe the view has been deleted")
+ // return tk
+ }
+ for _, child := range tk.children {
+ found := child.findWidgetByView(v)
+ if found != nil {
+ return found
+ }
+ }
+ return nil
+}
+
+func (tk *guiWidget) findWidgetById(id int) *guiWidget {
+ if tk.WidgetId() == id {
+ return tk
+ }
+ for _, child := range tk.children {
+ found := child.findWidgetById(id)
+ if found != nil {
+ return found
+ }
+ }
+ return nil
+}