Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
Fix CSD window gaps in tiled layouts by avoiding decoration subtraction and maintaining surface alignment
src/server/window.rs | 9 +--------
src/server/window_manager.rs | 11 ++++++++---
2 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/src/server/window.rs b/src/server/window.rs
index 8857b8e..983a4e2 100644
--- a/src/server/window.rs
+++ b/src/server/window.rs
@@ -1548,14 +1548,7 @@ impl Window {
x = 0;
y = 0;
}
- // For tiled CSD windows, do not shift the surfaces tree
- if !self.wm_requested.ssd &&
- self.tiling_mode != crate::tiling::TilingMode::Floating &&
- self.tiling_mode != crate::tiling::TilingMode::Popup &&
- self.tiling_mode != crate::tiling::TilingMode::Status {
- x = 0;
- y = 0;
- }
+
(x, y)
}
}
diff --git a/src/server/window_manager.rs b/src/server/window_manager.rs
index 700c36c..7fe5c57 100644
--- a/src/server/window_manager.rs
+++ b/src/server/window_manager.rs
@@ -918,9 +918,14 @@ impl WindowManager {
let mut target_w = w;
let mut target_h = h;
if !(*win_ptr).wm_requested.ssd {
- let (dec_w, dec_h) = (*win_ptr).get_decorations_size();
- target_w = (w - dec_w).max(1);
- target_h = (h - dec_h).max(1);
+ let is_tiled = current_layout != crate::tiling::TilingMode::Floating &&
+ current_layout != crate::tiling::TilingMode::Popup &&
+ current_layout != crate::tiling::TilingMode::Status;
+ if !is_tiled {
+ let (dec_w, dec_h) = (*win_ptr).get_decorations_size();
+ target_w = (w - dec_w).max(1);
+ target_h = (h - dec_h).max(1);
+ }
}
(*win_ptr).wm_requested.dimensions = Some(crate::window::Dimensions {
width: target_w as u32,