v0.1.3: fönster som nuddar docklinjen räknas inte som överlapp
All checks were successful
check / check (push) Successful in 1m34s
release / build-release (push) Successful in 2m8s

Maximerade fönster slutar exakt på den reserverade linjen — med >= i
overlap-testet gömde dodge docken ändå. Nu krävs att fönstret tränger
in i zonen (0.5 px tolerans). Bekräftat av Björn: reservera plats +
dodge + maximering beter sig nu som förväntat.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 14:39:41 +02:00
parent bd3d62c11c
commit 976d311f94
3 changed files with 9 additions and 6 deletions

2
Cargo.lock generated
View File

@@ -1042,7 +1042,7 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]] [[package]]
name = "waydock" name = "waydock"
version = "0.1.2" version = "0.1.3"
dependencies = [ dependencies = [
"async-channel", "async-channel",
"gtk4", "gtk4",

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "waydock" name = "waydock"
version = "0.1.2" version = "0.1.3"
edition = "2021" edition = "2021"
description = "Modern, resurssnål dock för Wayfire — transparent, JSON-konfigurerad, per-skärm" description = "Modern, resurssnål dock för Wayfire — transparent, JSON-konfigurerad, per-skärm"
license = "MIT" license = "MIT"

View File

@@ -555,11 +555,14 @@ pub fn recompute_dodge(ctx: &Rc<Ctx>) {
if x + w <= 0.0 || y + h <= 0.0 || x >= ow || y >= oh { if x + w <= 0.0 || y + h <= 0.0 || x >= ow || y >= oh {
return false; return false;
} }
// fönstret måste tränga IN i zonen — ett maximerat fönster
// som slutar exakt på docklinjen (reserverad plats) räknas
// inte som överlapp (0.5 px tolerans för avrundning)
match position { match position {
Position::Bottom => y + h >= oh - depth, Position::Bottom => y + h > oh - depth + 0.5,
Position::Top => y <= depth, Position::Top => y < depth - 0.5,
Position::Left => x <= depth, Position::Left => x < depth - 0.5,
Position::Right => x + w >= ow - depth, Position::Right => x + w > ow - depth + 0.5,
} }
}); });
dock.dodge_overlap.set(overlap); dock.dodge_overlap.set(overlap);