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
|
// 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue