input: Displays take precendence over workspaces

This commit is contained in:
Victoria Brekenfeld 2023-11-17 19:39:37 +01:00 • committed by Victoria Brekenfeld
parent 59581f717f
commit 18a8692517

View file

@ -1404,6 +1404,29 @@ impl State {
Ok(None) => { Ok(None) => {
seat.set_active_output(&next_output); seat.set_active_output(&next_output);
} }
_ => {}
}
} else {
match (direction, self.common.config.workspace.workspace_layout) {
(Direction::Left, WorkspaceLayout::Horizontal)
| (Direction::Up, WorkspaceLayout::Vertical) => self.handle_action(
Action::PreviousWorkspace,
seat,
serial,
time,
pattern,
Some(direction),
),
(Direction::Right, WorkspaceLayout::Horizontal)
| (Direction::Down, WorkspaceLayout::Vertical) => self.handle_action(
Action::NextWorkspace,
seat,
serial,
time,
pattern,
Some(direction),
),
_ => {} _ => {}
} }
} }
@ -1516,6 +1539,29 @@ impl State {
ptr.frame(self); ptr.frame(self);
} }
} }
} else {
match (direction, self.common.config.workspace.workspace_layout) {
(Direction::Left, WorkspaceLayout::Horizontal)
| (Direction::Up, WorkspaceLayout::Vertical) => self.handle_action(
Action::MoveToPreviousWorkspace,
seat,
serial,
time,
pattern,
Some(direction),
),
(Direction::Right, WorkspaceLayout::Horizontal)
| (Direction::Down, WorkspaceLayout::Vertical) => self.handle_action(
Action::MoveToNextWorkspace,
seat,
serial,
time,
pattern,
Some(direction),
),
_ => {}
}
} }
} }
x @ Action::MoveToNextOutput | x @ Action::SendToNextOutput => { x @ Action::MoveToNextOutput | x @ Action::SendToNextOutput => {
@ -1602,56 +1648,25 @@ impl State {
match result { match result {
FocusResult::None => { FocusResult::None => {
match (focus, self.common.config.workspace.workspace_layout) { let dir = match focus {
(FocusDirection::Left, WorkspaceLayout::Horizontal) FocusDirection::Down => Some(Direction::Down),
| (FocusDirection::Up, WorkspaceLayout::Vertical) => self FocusDirection::Up => Some(Direction::Up),
.handle_action( FocusDirection::Left => Some(Direction::Left),
Action::PreviousWorkspace, FocusDirection::Right => Some(Direction::Right),
seat, _ => None,
serial, };
time,
pattern, if let Some(direction) = dir {
direction,
),
(FocusDirection::Right, WorkspaceLayout::Horizontal)
| (FocusDirection::Down, WorkspaceLayout::Vertical) => self
.handle_action(
Action::NextWorkspace,
seat,
serial,
time,
pattern,
direction,
),
(FocusDirection::Left, WorkspaceLayout::Vertical)
| (FocusDirection::Up, WorkspaceLayout::Horizontal) => {
if let Some(inferred) = pattern.inferred_direction() {
self.handle_action( self.handle_action(
Action::SwitchOutput(inferred), Action::SwitchOutput(direction),
seat, seat,
serial, serial,
time, time,
pattern, pattern,
direction, Some(direction),
) )
} }
} }
(FocusDirection::Right, WorkspaceLayout::Vertical)
| (FocusDirection::Down, WorkspaceLayout::Horizontal) => {
if let Some(inferred) = pattern.inferred_direction() {
self.handle_action(
Action::SwitchOutput(inferred),
seat,
serial,
time,
pattern,
direction,
)
}
}
_ => {}
}
}
FocusResult::Handled => {} FocusResult::Handled => {}
FocusResult::Some(target) => { FocusResult::Some(target) => {
Common::set_focus(self, Some(&target), seat, None); Common::set_focus(self, Some(&target), seat, None);
@ -1663,54 +1678,14 @@ impl State {
let workspace = self.common.shell.active_space_mut(&current_output); let workspace = self.common.shell.active_space_mut(&current_output);
match workspace.move_current_element(direction, seat) { match workspace.move_current_element(direction, seat) {
MoveResult::MoveFurther(_move_further) => { MoveResult::MoveFurther(_move_further) => self.handle_action(
match (direction, self.common.config.workspace.workspace_layout) { Action::MoveToOutput(direction),
(Direction::Left, WorkspaceLayout::Horizontal)
| (Direction::Up, WorkspaceLayout::Vertical) => self.handle_action(
Action::MoveToPreviousWorkspace,
seat, seat,
serial, serial,
time, time,
pattern, pattern,
Some(direction), Some(direction),
), ),
(Direction::Right, WorkspaceLayout::Horizontal)
| (Direction::Down, WorkspaceLayout::Vertical) => self.handle_action(
Action::MoveToNextWorkspace,
seat,
serial,
time,
pattern,
Some(direction),
),
(Direction::Left, WorkspaceLayout::Vertical)
| (Direction::Up, WorkspaceLayout::Horizontal) => {
if let Some(inferred) = pattern.inferred_direction() {
self.handle_action(
Action::MoveToOutput(inferred),
seat,
serial,
time,
pattern,
Some(direction),
)
}
}
(Direction::Right, WorkspaceLayout::Vertical)
| (Direction::Down, WorkspaceLayout::Horizontal) => {
if let Some(inferred) = pattern.inferred_direction() {
self.handle_action(
Action::MoveToOutput(inferred),
seat,
serial,
time,
pattern,
Some(direction),
)
}
}
}
}
MoveResult::ShiftFocus(shift) => { MoveResult::ShiftFocus(shift) => {
Common::set_focus(self, Some(&shift), seat, None); Common::set_focus(self, Some(&shift), seat, None);
} }