From cd32ec980a01a9180a9f28926153b84e3050b7b0 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sun, 3 Nov 2024 12:50:31 +0100 Subject: [PATCH] Fix swapping --- main.go | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/main.go b/main.go index d8e0806..85ac887 100644 --- a/main.go +++ b/main.go @@ -43,7 +43,7 @@ func init() { log.Lmicroseconds|log.Lshortfile) } -var windows = []uintptr{} +var windows = make([]uintptr, 10, 10) func main() { go systray.Run(onReady, nil) @@ -70,8 +70,8 @@ func main() { func TabTo(idx int) { log.Printf("TabTo: %d", idx) log.Printf("%+v", windows) - if idx > len(windows)-1 { - Warning.Printf("idx %d is greater than length of windows %d", idx, len(windows)) + if idx > cap(windows)-1 { + Warning.Printf("idx %d is greater than length of windows %d", idx, cap(windows)) return } hwnd := windows[idx] @@ -83,17 +83,23 @@ func TabTo(idx int) { } func Swap(idx int) { log.Printf("Swap: %d", idx) - if idx > len(windows) { - Warning.Printf("idx %d is greater than length of windows %d", idx, len(windows)) + if idx > cap(windows)-1 { + Warning.Printf("idx %d is greater than length of windows %d", idx, cap(windows)) return } hwnd, _, _ := GetForegroundWindow.Call() if !IsTracked(hwnd) { TrackWindow(hwnd) } - swap := windows[idx] - windows[idx] = hwnd - windows[idx] = swap + log.Printf("Swapping %d to %d", hwnd, idx) + for i := 0; i < cap(windows); i++ { + if windows[i] == hwnd { + windows[i] = windows[idx] + windows[idx] = hwnd + log.Printf("Swapped %d to %d at index %d", hwnd, idx, i) + break + } + } log.Printf("windows swapped: %+v", windows) } @@ -105,7 +111,13 @@ func TrackWindow(hwnd uintptr) { }) } else { log.Printf("Tracking window: %d", hwnd) - windows = append(windows, hwnd) + for i := 0; i < cap(windows); i++ { + if windows[i] == 0 { + windows[i] = hwnd + log.Printf("Tracked window: %d at index %d", hwnd, i) + return + } + } } } func IsTracked(hwnd uintptr) bool {