Fix swapping
This commit is contained in:
28
main.go
28
main.go
@@ -43,7 +43,7 @@ func init() {
|
|||||||
log.Lmicroseconds|log.Lshortfile)
|
log.Lmicroseconds|log.Lshortfile)
|
||||||
}
|
}
|
||||||
|
|
||||||
var windows = []uintptr{}
|
var windows = make([]uintptr, 10, 10)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
go systray.Run(onReady, nil)
|
go systray.Run(onReady, nil)
|
||||||
@@ -70,8 +70,8 @@ func main() {
|
|||||||
func TabTo(idx int) {
|
func TabTo(idx int) {
|
||||||
log.Printf("TabTo: %d", idx)
|
log.Printf("TabTo: %d", idx)
|
||||||
log.Printf("%+v", windows)
|
log.Printf("%+v", windows)
|
||||||
if idx > len(windows)-1 {
|
if idx > cap(windows)-1 {
|
||||||
Warning.Printf("idx %d is greater than length of windows %d", idx, len(windows))
|
Warning.Printf("idx %d is greater than length of windows %d", idx, cap(windows))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hwnd := windows[idx]
|
hwnd := windows[idx]
|
||||||
@@ -83,17 +83,23 @@ func TabTo(idx int) {
|
|||||||
}
|
}
|
||||||
func Swap(idx int) {
|
func Swap(idx int) {
|
||||||
log.Printf("Swap: %d", idx)
|
log.Printf("Swap: %d", idx)
|
||||||
if idx > len(windows) {
|
if idx > cap(windows)-1 {
|
||||||
Warning.Printf("idx %d is greater than length of windows %d", idx, len(windows))
|
Warning.Printf("idx %d is greater than length of windows %d", idx, cap(windows))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hwnd, _, _ := GetForegroundWindow.Call()
|
hwnd, _, _ := GetForegroundWindow.Call()
|
||||||
if !IsTracked(hwnd) {
|
if !IsTracked(hwnd) {
|
||||||
TrackWindow(hwnd)
|
TrackWindow(hwnd)
|
||||||
}
|
}
|
||||||
swap := windows[idx]
|
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
|
windows[idx] = hwnd
|
||||||
windows[idx] = swap
|
log.Printf("Swapped %d to %d at index %d", hwnd, idx, i)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
log.Printf("windows swapped: %+v", windows)
|
log.Printf("windows swapped: %+v", windows)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,7 +111,13 @@ func TrackWindow(hwnd uintptr) {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
log.Printf("Tracking window: %d", hwnd)
|
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 {
|
func IsTracked(hwnd uintptr) bool {
|
||||||
|
Reference in New Issue
Block a user