From 88f33afbb777a3d02631c4eb6a2d6f6dbf7fba3f Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 6 Feb 2025 13:47:19 -0600 Subject: window depth order works --- find.go | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'find.go') diff --git a/find.go b/find.go index 434a42d..6833b9a 100644 --- a/find.go +++ b/find.go @@ -5,6 +5,7 @@ package main import ( "fmt" + "slices" "github.com/awesome-gocui/gocui" log "go.wit.com/log" @@ -111,23 +112,21 @@ func (tk *guiWidget) findBG() *guiWidget { return nil } +// used by gocui.TabKey to rotate through the windows func findNextWindow() *guiWidget { var found bool if len(me.allwin) == 0 { return nil } - for _, win := range me.allwin { - if win.activeWindow { + for _, tk := range me.allwin { + if tk.window.active { found = true - win.activeWindow = false continue } if found { - win.activeWindow = true - return win + return tk } } - me.allwin[0].activeWindow = true // at the end, loop to the beginning return me.allwin[0] } @@ -147,17 +146,31 @@ func findWindowUnderMouse() *guiWidget { } } + // print out the window list + for _, tk := range me.allwin { + log.Info("findWindowUnderMouse() print:", tk.labelN, tk.window.active, tk.window.order) + } + // now check if the active window is below the mouse - for _, win := range me.allwin { - if win.activeWindow { - if win.full.inRect(w, h) { - log.Info(fmt.Sprintf("findWindowUnderMouse() found %s active window (%dx%d)", win.cuiName, w, h)) - return win + for _, tk := range me.allwin { + if tk.window.active { + if tk.full.inRect(w, h) { + log.Info(fmt.Sprintf("findWindowUnderMouse() found %s active window (%dx%d)", tk.cuiName, w, h)) + return tk } } } // well, just find any window then + // sorting by order might work? + slices.SortFunc(me.allwin, func(a, b *guiWidget) int { + return a.window.order - b.window.order + }) + + // print out the window list + for _, tk := range me.allwin { + log.Info("findWindowUnderMouse() print:", tk.labelN, tk.window.active, tk.window.order) + } for _, win := range me.allwin { if win.full.inRect(w, h) { log.Info(fmt.Sprintf("findWindowUnderMouse() found %s window (%dx%d)", win.cuiName, w, h)) -- cgit v1.2.3