diff --git a/komorebi/src/windows_api.rs b/komorebi/src/windows_api.rs index bd556c39..4e4bd053 100644 --- a/komorebi/src/windows_api.rs +++ b/komorebi/src/windows_api.rs @@ -185,7 +185,12 @@ impl WindowsApi { workspace.containers_mut() as *mut VecDeque as isize, )?; - // So we have to prune each monitor's primary workspace of undesired windows here + // Ensure that the resize_dimensions Vec length matches the number of containers for + // the potential later calls to workspace.remove_window later in this fn + let len = workspace.containers().len(); + workspace.resize_dimensions_mut().resize(len, None); + + // We have to prune each monitor's primary workspace of undesired windows here let mut windows_on_other_monitors = vec![]; for container in workspace.containers_mut() { diff --git a/komorebi/src/workspace.rs b/komorebi/src/workspace.rs index c1ea4f49..569635e6 100644 --- a/komorebi/src/workspace.rs +++ b/komorebi/src/workspace.rs @@ -281,7 +281,9 @@ impl Workspace { .context("there is no container")?; // Whenever a container is empty, we need to remove any resize dimensions for it too - self.resize_dimensions_mut().remove(container_idx); + if self.resize_dimensions().get(container_idx).is_some() { + self.resize_dimensions_mut().remove(container_idx); + } } if container_idx != 0 {