diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 8e2740a5..1206b338 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -3251,7 +3251,7 @@ impl Shell { toplevel_enter_workspace(window, to); // we can't restore to a given position - if let WorkspaceRestoreData::Tiling(Some(state)) = &mut window_state { + if let WorkspaceRestoreData::Tiling(state) = &mut window_state { state.state.take(); } // update fullscreen state to restore to the new workspace @@ -3278,7 +3278,7 @@ impl Shell { if is_minimized { let to_workspace = self.workspaces.space_for_handle_mut(to).unwrap(); // checked above let minimized_window = match window_state { - WorkspaceRestoreData::Floating(Some(previous)) => { + WorkspaceRestoreData::Floating(previous) => { let window = CosmicMapped::from(CosmicWindow::new( window.clone(), evlh.clone(), @@ -3288,7 +3288,7 @@ impl Shell { window.set_minimized(true); MinimizedWindow::Floating { window, previous } } - WorkspaceRestoreData::Tiling(Some(previous)) => { + WorkspaceRestoreData::Tiling(previous) => { let window = CosmicMapped::from(CosmicWindow::new( window.clone(), evlh.clone(), @@ -3355,7 +3355,7 @@ impl Shell { self.appearance_conf, )); let position = match window_state { - WorkspaceRestoreData::Floating(Some(data)) => Some( + WorkspaceRestoreData::Floating(data) => Some( data.position_relative(to_workspace.output.geometry().size.as_logical()), ), _ => None, @@ -3455,7 +3455,7 @@ impl Shell { let to_workspace = self.workspaces.space_for_handle_mut(to).unwrap(); // checked above if !to_workspace.tiling_enabled { let (position, was_maximized, was_snapped) = match &window_state { - WorkspaceRestoreData::Floating(Some(data)) => ( + WorkspaceRestoreData::Floating(data) => ( Some(data.position_relative(to_workspace.output.geometry().size.as_logical())), data.was_maximized, data.was_snapped, @@ -4883,15 +4883,15 @@ impl Shell { &seat, match state { WorkspaceRestoreData::Floating(floating_state) => { - floating_state.map(|state| FullscreenRestoreState::Floating { + Some(FullscreenRestoreState::Floating { workspace: handle, - state, + state: floating_state, }) } WorkspaceRestoreData::Tiling(tiling_state) => { - tiling_state.map(|state| FullscreenRestoreState::Tiling { + Some(FullscreenRestoreState::Tiling { workspace: handle, - state, + state: tiling_state, }) } WorkspaceRestoreData::Stack(stack_state) => { diff --git a/src/shell/workspace.rs b/src/shell/workspace.rs index bc5071da..c22daf07 100644 --- a/src/shell/workspace.rs +++ b/src/shell/workspace.rs @@ -282,8 +282,8 @@ impl FullscreenRestoreState { #[derive(Debug, Clone)] pub enum WorkspaceRestoreData { Fullscreen(Option), - Tiling(Option), - Floating(Option), + Tiling(TilingRestoreData), + Floating(FloatingRestoreData), Stack(StackRestoreData), } @@ -643,32 +643,30 @@ impl Workspace { mapped.set_minimized(false); return Some(match state { MinimizedWindow::Floating { previous, .. } => { - WorkspaceRestoreData::Floating(Some(previous)) - } - MinimizedWindow::Tiling { previous, .. } => { - WorkspaceRestoreData::Tiling(Some(previous)) + WorkspaceRestoreData::Floating(previous) } + MinimizedWindow::Tiling { previous, .. } => WorkspaceRestoreData::Tiling(previous), MinimizedWindow::Fullscreen { .. } => unreachable!(), }); } if let Ok(state) = self.tiling_layer.unmap(mapped, None) { - return Some(WorkspaceRestoreData::Tiling(Some(TilingRestoreData { + return Some(WorkspaceRestoreData::Tiling(TilingRestoreData { state, was_maximized: was_maximized.is_some(), - }))); + })); } let was_snapped = *mapped.floating_tiled.lock().unwrap(); // unmaximize_request might have triggered a `floating_layer.refresh()`, // which may have already removed a non-alive surface. if let Some(floating_geometry) = self.floating_layer.unmap(mapped, None).or(was_maximized) { - return Some(WorkspaceRestoreData::Floating(Some(FloatingRestoreData { + return Some(WorkspaceRestoreData::Floating(FloatingRestoreData { geometry: floating_geometry, output_size: self.output.geometry().size.as_logical(), was_maximized: was_maximized.is_some(), was_snapped, - }))); + })); }; None