srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/core/src/manager/winops.rs
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2024-11-26 23:16:00 +0200
committersrdusr <[email protected]>2024-11-26 23:16:00 +0200
commit87f5c04b2593dc49409644e69e7962b73d26b9d8 (patch)
tree5a1da319c9f5e81489af44a4a576eada595b9a22 /crates/core/src/manager/winops.rs
parentfe92f6e6b8ab680c9603cc6bcf16c98555c378ae (diff)
downloadsrdwm-87f5c04b2593dc49409644e69e7962b73d26b9d8.tar.gz
srdwm-87f5c04b2593dc49409644e69e7962b73d26b9d8.zip
Add Monitor::maximize_geometry: maximize covers a dock, still stops at a top bar
toggle_maximize previously targeted full_geometry outright (past every reserved zone), on an earlier request specifically about the dock - which also silently let it extend behind a top bar's zone, reported back as its own bug once live-tested. maximize_geometry is a third rect distinct from geometry (every zone) and full_geometry (none): full_geometry with only a top-anchored bar's exclusive zone subtracted back out. New test locks in dock-covered/bar-respected together.
Diffstat (limited to 'crates/core/src/manager/winops.rs')
-rw-r--r--crates/core/src/manager/winops.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/crates/core/src/manager/winops.rs b/crates/core/src/manager/winops.rs
index e656298..6f4d53e 100644
--- a/crates/core/src/manager/winops.rs
+++ b/crates/core/src/manager/winops.rs
@@ -93,7 +93,19 @@ impl WindowManager {
}
pub fn toggle_maximize(&mut self, id: WindowId) {
- let monitor_geom = self.windows.get(&id).and_then(|w| self.monitor_for(w.monitor)).map(|m| m.geometry);
+ // `maximize_geometry`, not `geometry` or `full_geometry`: maximize
+ // covers the whole monitor past a dock's reserved zone, same as
+ // `toggle_fullscreen` - but still stops at a top bar's, unlike
+ // fullscreen. Previously targeted `full_geometry` outright (past
+ // both), on the user's own request specifically about the dock;
+ // that also silently pulled maximize past the top bar, which
+ // wasn't part of that request and was reported back as its own
+ // bug once live-tested. See `Monitor::maximize_geometry`'s own doc
+ // comment for the exact rect this now is. The only remaining
+ // difference from fullscreen is `decorated` (maximize keeps
+ // whatever decoration state the window already had; fullscreen
+ // forces it off).
+ let monitor_geom = self.windows.get(&id).and_then(|w| self.monitor_for(w.monitor)).map(|m| m.maximize_geometry);
let animations_enabled = self.animations_enabled;
let Some(w) = self.windows.get_mut(&id) else { return };
let from = w.geometry;