From f4476b10f22332c89e4d1e915a05afff7c7003ec Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Wed, 23 Nov 2022 16:00:33 +0100 Subject: [PATCH] shell: Fix global+static mode --- src/input/mod.rs | 1 - src/shell/mod.rs | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/input/mod.rs b/src/input/mod.rs index 88b96afb..51657b48 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -693,7 +693,6 @@ impl State { .cloned() { let idx = self.common.shell.workspaces.active_num(&prev_output); - seat.set_active_output(&prev_output); if let Some(new_pos) = self.common.shell.activate(&prev_output, idx) { seat.set_active_output(&prev_output); if let Some(ptr) = seat.get_pointer() { diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 1bd005e1..7cad816a 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use std::collections::HashMap; +use std::{collections::HashMap, cell::RefCell}; use cosmic_protocols::workspace::v1::server::zcosmic_workspace_handle_v1::State as WState; use smithay::{ @@ -20,7 +20,7 @@ use smithay::{ }; use crate::{ - config::{Config, WorkspaceMode as ConfigMode}, + config::{Config, WorkspaceMode as ConfigMode, OutputConfig}, utils::prelude::*, wayland::protocols::{ toplevel_info::ToplevelInfoState, @@ -459,7 +459,13 @@ impl Shell { // TODO: Restore any window positions from previous outputs ??? state.add_group_output(&set.group, output); for workspace in &mut set.workspaces { - workspace.map_output(output, output.current_location()); + workspace.map_output(output, output.user_data() + .get::>() + .unwrap() + .borrow() + .position + .into() + ); } } } @@ -532,7 +538,12 @@ impl Shell { if let WorkspaceMode::Global(set) = &mut self.workspaces { for workspace in &mut set.workspaces { for output in self.outputs.iter() { - workspace.map_output(output, output.current_location()); + workspace.map_output(output, output.user_data() + .get::>() + .unwrap() + .borrow() + .position + .into()); } } }