From 39a3b948e525fe2b22b90e07df323ab77f6a81f6 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Fri, 19 Jan 2024 21:26:16 -0500 Subject: keep track of focused widget --- focus.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 focus.go (limited to 'focus.go') diff --git a/focus.go b/focus.go new file mode 100644 index 0000000..e6de390 --- /dev/null +++ b/focus.go @@ -0,0 +1,33 @@ +package main + +type Focus struct { + widgets []chan bool + i int // index of focused widget +} + +func NewFocus(nWidgets int) Focus { + f := Focus{make([]chan bool, nWidgets), 0} + for i := range f.widgets { + f.widgets[i] = make(chan bool) + } + return f +} + +func (f *Focus) Next() { + f.widgets[f.i] <- false + f.i = (f.i + 1) % len(f.widgets) + f.widgets[f.i] <- true +} + +func (f *Focus) Prev() { + f.widgets[f.i] <- false + f.i = abs(f.i-1) % len(f.widgets) + f.widgets[f.i] <- true +} + +func abs(n int) int { + if n < 0 { + return -n + } + return n +} -- cgit v1.2.3