This commit is contained in:
Milarin 2024-04-05 14:00:33 +02:00
parent e9e0ed153a
commit 6b14350251

19
main.go
View File

@ -70,14 +70,14 @@ func RestoreWindowPositions(client *hypr.Client) error {
boundsOfActualMonitor := GetMonitorBoundsByWindowBounds(windowBounds, monitorBoundsByID)
shouldPos := image.Pt(-1, -1)
if boundsOfActualMonitor == nil {
// use coords [0,0] respective to the wanted monitor if window is completely OOB
shouldPos = monitorBounds.Min
} else {
// calculate new position based on the position of the window and its actual monitor
diff := windowBounds.Min.Sub(boundsOfActualMonitor.Min)
shouldPos := monitorBounds.Min.Add(diff)
// use coords [0,0] respective to the wanted monitor
// if window is completely OOB
if boundsOfActualMonitor == image.Rect(-1, -1, -1, -1) {
shouldPos = monitorBounds.Min
shouldPos = monitorBounds.Min.Add(diff)
}
cmd := fmt.Sprintf(
@ -99,11 +99,12 @@ func RestoreWindowPositions(client *hypr.Client) error {
// GetMonitorBoundsByWindowBounds returns the monitor bounds which contains windowBounds
// or image.Rect(-1, -1, -1, -1) if windowBounds is outside any monitor bounds
func GetMonitorBoundsByWindowBounds(windowBounds image.Rectangle, monitorBoundsByID map[int]image.Rectangle) image.Rectangle {
func GetMonitorBoundsByWindowBounds(windowBounds image.Rectangle, monitorBoundsByID map[int]image.Rectangle) *image.Rectangle {
for _, monitorBounds := range monitorBoundsByID {
if windowBounds.In(monitorBounds) {
return monitorBounds
newBounds := windowBounds
return &newBounds
}
}
return image.Rect(-1, -1, -1, -1)
return nil
}