aboutsummaryrefslogtreecommitdiff
path: root/src/layout/floating.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-09-02 08:07:22 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-10-15 09:04:16 +0300
commite1fad994da9565b43c7fb139cb2fb7bf404cc320 (patch)
tree305fa0714d66ad2b4346b3aee6eb785099b29fa1 /src/layout/floating.rs
parente5d4e7c1b1a0b61770b6711a53fe41920d56452d (diff)
downloadniri-e1fad994da9565b43c7fb139cb2fb7bf404cc320.tar.gz
niri-e1fad994da9565b43c7fb139cb2fb7bf404cc320.tar.bz2
niri-e1fad994da9565b43c7fb139cb2fb7bf404cc320.zip
Implement maximize-to-edges (true Wayland maximize)
Diffstat (limited to 'src/layout/floating.rs')
-rw-r--r--src/layout/floating.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/layout/floating.rs b/src/layout/floating.rs
index 260775d3..5ef0a265 100644
--- a/src/layout/floating.rs
+++ b/src/layout/floating.rs
@@ -413,8 +413,8 @@ impl<W: LayoutElement> FloatingSpace<W> {
// unfullscreen it.
let floating_size = tile.floating_window_size;
let win = tile.window_mut();
- let mut size = if win.is_pending_fullscreen() {
- // If the window was fullscreen without a floating size, ask for (0, 0).
+ let mut size = if !win.pending_sizing_mode().is_normal() {
+ // If the window was fullscreen or maximized without a floating size, ask for (0, 0).
floating_size.unwrap_or_default()
} else {
// If the window wasn't fullscreen without a floating size (e.g. it was tiled before),
@@ -1312,6 +1312,8 @@ impl<W: LayoutElement> FloatingSpace<W> {
assert_eq!(self.tiles.len(), self.data.len());
for (i, (tile, data)) in zip(&self.tiles, &self.data).enumerate() {
+ use crate::layout::SizingMode;
+
assert!(Rc::ptr_eq(&self.options, &tile.options));
assert_eq!(self.view_size, tile.view_size());
assert_eq!(self.clock, tile.clock);
@@ -1325,9 +1327,10 @@ impl<W: LayoutElement> FloatingSpace<W> {
assert!(idx < self.options.layout.preset_window_heights.len());
}
- assert!(
- !tile.window().is_pending_fullscreen(),
- "floating windows cannot be fullscreen"
+ assert_eq!(
+ tile.window().pending_sizing_mode(),
+ SizingMode::Normal,
+ "floating windows cannot be maximized or fullscreen"
);
data.verify_invariants();