diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-12-28 10:49:31 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-12-28 10:49:31 +0400 |
| commit | 2d16c04869a545f3aa649947f151c158a13c3a3a (patch) | |
| tree | 0eac89ce4c90fd92b7597205850cb584686c658f | |
| parent | 249f2b7a21f883726e0c8c49cc3bbec52cc1b6cc (diff) | |
| download | niri-2d16c04869a545f3aa649947f151c158a13c3a3a.tar.gz niri-2d16c04869a545f3aa649947f151c158a13c3a3a.tar.bz2 niri-2d16c04869a545f3aa649947f151c158a13c3a3a.zip | |
Fix unfullscreening not always updating view offset
| -rw-r--r-- | src/layout/tile.rs | 12 | ||||
| -rw-r--r-- | src/layout/workspace.rs | 10 |
2 files changed, 17 insertions, 5 deletions
diff --git a/src/layout/tile.rs b/src/layout/tile.rs index ea8515af..3bc90687 100644 --- a/src/layout/tile.rs +++ b/src/layout/tile.rs @@ -54,6 +54,13 @@ impl<W: LayoutElement> Tile<W> { self.options = options; } + pub fn update_window(&mut self) { + // FIXME: remove when we can get a fullscreen size right away. + if self.fullscreen_size != Size::from((0, 0)) { + self.is_fullscreen = self.window.is_fullscreen(); + } + } + pub fn advance_animations(&mut self, _current_time: Duration, is_active: bool) { let width = self.border.width(); self.border.update( @@ -62,11 +69,6 @@ impl<W: LayoutElement> Tile<W> { self.window.has_ssd(), ); self.border.set_active(is_active); - - // FIXME: remove when we can get a fullscreen size right away. - if self.fullscreen_size != Size::from((0, 0)) { - self.is_fullscreen = self.window.is_fullscreen(); - } } pub fn window(&self) -> &W { diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs index 4a029fba..aa00b348 100644 --- a/src/layout/workspace.rs +++ b/src/layout/workspace.rs @@ -569,6 +569,7 @@ impl<W: LayoutElement> Workspace<W> { .enumerate() .find(|(_, col)| col.contains(window)) .unwrap(); + column.update_window(window); column.update_tile_sizes(); if idx == self.active_column_idx { @@ -1080,6 +1081,15 @@ impl<W: LayoutElement> Column<W> { self.update_tile_sizes(); } + fn update_window(&mut self, window: &W) { + let tile = self + .tiles + .iter_mut() + .find(|tile| tile.window() == window) + .unwrap(); + tile.update_window(); + } + fn update_tile_sizes(&mut self) { if self.is_fullscreen { self.tiles[0].request_fullscreen(self.view_size); |
