diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-12-11 09:27:38 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-12-30 20:12:37 +0300 |
| commit | 10460191b93194ed4d9dc16e1fd7a2eb6f297ae3 (patch) | |
| tree | 7188b36849ef71caca2a1cf69fc577c351dc4f0f /src/layout/mod.rs | |
| parent | c5fffd6e2c48aa7fb8b45b8bdcd972bbd8ce900b (diff) | |
| download | niri-10460191b93194ed4d9dc16e1fd7a2eb6f297ae3.tar.gz niri-10460191b93194ed4d9dc16e1fd7a2eb6f297ae3.tar.bz2 niri-10460191b93194ed4d9dc16e1fd7a2eb6f297ae3.zip | |
Honor min/max size in more places like initial configure
Diffstat (limited to 'src/layout/mod.rs')
| -rw-r--r-- | src/layout/mod.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs index 48a7954a..916b6b41 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -3219,9 +3219,21 @@ impl<W: LayoutElement> Layout<W> { // prefer-no-csd, and occasionally that last size can become the full-width size // rather than a smaller size, which is annoying. Need to see if niri can use some // heuristics to make this case behave better. - if tile.window().is_pending_fullscreen() { - tile.window_mut() - .request_size(Size::from((0, 0)), true, None); + let win = tile.window_mut(); + if win.is_pending_fullscreen() { + let mut size = Size::from((0, 0)); + + // Make sure fixed-size through window rules keeps working. + let min_size = win.min_size(); + let max_size = win.max_size(); + if min_size.w == max_size.w { + size.w = min_size.w; + } + if min_size.h == max_size.h { + size.h = min_size.h; + } + + win.request_size(size, true, None); } let mut data = InteractiveMoveData { |
