srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/wayland/src/udev
diff options
context:
space:
mode:
Diffstat (limited to 'crates/wayland/src/udev')
-rw-r--r--crates/wayland/src/udev/platform.rs2
-rw-r--r--crates/wayland/src/udev/render.rs11
2 files changed, 11 insertions, 2 deletions
diff --git a/crates/wayland/src/udev/platform.rs b/crates/wayland/src/udev/platform.rs
index 0ae65f7..ea2260e 100644
--- a/crates/wayland/src/udev/platform.rs
+++ b/crates/wayland/src/udev/platform.rs
@@ -830,7 +830,7 @@ impl Platform for UdevPlatform {
// deliberately *not* defaulted from `usable` the way `Monitor::
// new` alone would (see the fullscreen note below).
let full = srdwm_core::Rect::new(head.location.x, head.location.y, head.size.0 as u32, head.size.1 as u32);
- let maximize = crate::input::maximize_geometry_for(&head.output, full);
+ let maximize = crate::input::maximize_geometry_for(&head.output, full, wm.maximize_covers_dock);
let name = head.output.name();
let split = wm.monitor_split(&name);
let parts = split.map(|s| s.parts).unwrap_or(1).max(1);
diff --git a/crates/wayland/src/udev/render.rs b/crates/wayland/src/udev/render.rs
index aa05529..3bd9a52 100644
--- a/crates/wayland/src/udev/render.rs
+++ b/crates/wayland/src/udev/render.rs
@@ -334,7 +334,16 @@ impl CompState {
// be_masked` degenerates to just `w.decorated` when
// masking can never succeed).
let border_curve_is_safe = w.decorated;
- if w.border_width > 0 {
+ // No border on a maximized window. A maximized window's own
+ // edges are the screen's edges, so a border has nothing to
+ // separate it from - and where maximize *does* stop short (the
+ // strip a top bar reserves) the border lands in that gap, drawn
+ // as a hard line right against the bar. Reported live with a
+ // screenshot: a 4px accent line between the bar and the window,
+ // and none anywhere else, because the left/right/bottom strips
+ // fall off-screen. Fullscreen is already borderless for the
+ // same reason, via `decorated` being cleared.
+ if w.border_width > 0 && !w.maximized {
let strips = decoration::border_strips(geom, w.border_width);
if let Some(buffer) = self.border_top_decorations.get(&id) {
let (row0, rows, shift) = decoration::border_top_visible_rows(border_curve_is_safe, w.border_width, w.corner_radius);