From 2d16c04869a545f3aa649947f151c158a13c3a3a Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Thu, 28 Dec 2023 10:49:31 +0400 Subject: Fix unfullscreening not always updating view offset --- src/layout/tile.rs | 12 +++++++----- 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 Tile { 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 Tile { 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 Workspace { .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 Column { 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); -- cgit