ext_workspace: Fix activation for output-bound

This commit is contained in:
Victoria Brekenfeld 2022-11-22 16:31:58 +01:00
parent a066edab0b
commit 57f15da85d

View file

@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-3.0-only // SPDX-License-Identifier: GPL-3.0-only
use crate::{ use crate::{
shell::WorkspaceMode,
state::ClientState, state::ClientState,
utils::prelude::*, utils::prelude::*,
wayland::protocols::workspace::{ wayland::protocols::workspace::{
@ -29,14 +30,21 @@ impl WorkspaceHandler for State {
for request in requests.into_iter() { for request in requests.into_iter() {
match request { match request {
Request::Activate(handle) => { Request::Activate(handle) => {
let output = self.common.last_active_seat().active_output(); let maybe = match &self.common.shell.workspaces {
let maybe_idx = self WorkspaceMode::Global(set) => set
.common .workspaces
.shell .iter()
.workspaces .position(|w| w.handle == handle)
.spaces_for_output(&output) .map(|i| (self.common.last_active_seat().active_output(), i)),
.position(|w| w.handle == handle); WorkspaceMode::OutputBound(sets, _) => sets.iter().find_map(|(o, set)| {
if let Some(idx) = maybe_idx { set.workspaces
.iter()
.position(|w| w.handle == handle)
.map(|i| (o.clone(), i))
}),
};
if let Some((output, idx)) = maybe {
self.common.shell.activate(&output, idx); self.common.shell.activate(&output, idx);
} }
} }