ext_workspace: Fix activation for output-bound
This commit is contained in:
parent
a066edab0b
commit
57f15da85d
1 changed files with 16 additions and 8 deletions
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
use crate::{
|
||||
shell::WorkspaceMode,
|
||||
state::ClientState,
|
||||
utils::prelude::*,
|
||||
wayland::protocols::workspace::{
|
||||
|
|
@ -29,14 +30,21 @@ impl WorkspaceHandler for State {
|
|||
for request in requests.into_iter() {
|
||||
match request {
|
||||
Request::Activate(handle) => {
|
||||
let output = self.common.last_active_seat().active_output();
|
||||
let maybe_idx = self
|
||||
.common
|
||||
.shell
|
||||
.workspaces
|
||||
.spaces_for_output(&output)
|
||||
.position(|w| w.handle == handle);
|
||||
if let Some(idx) = maybe_idx {
|
||||
let maybe = match &self.common.shell.workspaces {
|
||||
WorkspaceMode::Global(set) => set
|
||||
.workspaces
|
||||
.iter()
|
||||
.position(|w| w.handle == handle)
|
||||
.map(|i| (self.common.last_active_seat().active_output(), i)),
|
||||
WorkspaceMode::OutputBound(sets, _) => sets.iter().find_map(|(o, set)| {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue