shell: Don't consider active overviews animations
This commit is contained in:
parent
3277435ff9
commit
c506d94ac8
6 changed files with 139 additions and 53 deletions
|
|
@ -16,8 +16,7 @@ use crate::{
|
|||
floating::ResizeGrabMarker,
|
||||
tiling::{SwapWindowGrab, TilingLayout},
|
||||
},
|
||||
FocusResult, InvalidWorkspaceIndex, MoveResult, OverviewMode, ResizeMode, SeatExt, Trigger,
|
||||
WorkspaceDelta,
|
||||
FocusResult, InvalidWorkspaceIndex, MoveResult, SeatExt, Trigger, WorkspaceDelta,
|
||||
},
|
||||
utils::prelude::*,
|
||||
wayland::{
|
||||
|
|
@ -229,8 +228,8 @@ impl State {
|
|||
time,
|
||||
|data, modifiers, handle| {
|
||||
// Leave move overview mode, if any modifier was released
|
||||
if let OverviewMode::Started(Trigger::KeyboardMove(action_modifiers), _) =
|
||||
shell.overview_mode().0
|
||||
if let Some(Trigger::KeyboardMove(action_modifiers)) =
|
||||
shell.overview_mode().0.active_trigger()
|
||||
{
|
||||
if (action_modifiers.ctrl && !modifiers.ctrl)
|
||||
|| (action_modifiers.alt && !modifiers.alt)
|
||||
|
|
@ -241,8 +240,8 @@ impl State {
|
|||
}
|
||||
}
|
||||
// Leave swap overview mode, if any key was released
|
||||
if let OverviewMode::Started(Trigger::KeyboardSwap(action_pattern, old_descriptor), _) =
|
||||
shell.overview_mode().0
|
||||
if let Some(Trigger::KeyboardSwap(action_pattern, old_descriptor)) =
|
||||
shell.overview_mode().0.active_trigger()
|
||||
{
|
||||
if (action_pattern.modifiers.ctrl && !modifiers.ctrl)
|
||||
|| (action_pattern.modifiers.alt && !modifiers.alt)
|
||||
|
|
@ -290,7 +289,7 @@ impl State {
|
|||
if let Some(old_workspace) = old_w.get_mut(0) {
|
||||
if let Some(new_workspace) = other_w.iter_mut().find(|w| w.handle == new_workspace) {
|
||||
if new_workspace.tiling_layer.windows().next().is_none() {
|
||||
if let Some(focus) = TilingLayout::move_tree(&mut old_workspace.tiling_layer, &mut new_workspace.tiling_layer, &new_workspace.handle, &seat, new_workspace.focus_stack.get(&seat).iter(), old_descriptor) {
|
||||
if let Some(focus) = TilingLayout::move_tree(&mut old_workspace.tiling_layer, &mut new_workspace.tiling_layer, &new_workspace.handle, &seat, new_workspace.focus_stack.get(&seat).iter(), old_descriptor.clone()) {
|
||||
let seat = seat.clone();
|
||||
data.common.event_loop_handle.insert_idle(move |state| {
|
||||
Shell::set_focus(state, Some(&focus), &seat, None);
|
||||
|
|
@ -306,8 +305,8 @@ impl State {
|
|||
}
|
||||
|
||||
// Leave or update resize mode, if modifiers changed or initial key was released
|
||||
if let (ResizeMode::Started(action_pattern, _, _), _) =
|
||||
shell.resize_mode()
|
||||
if let Some(action_pattern) =
|
||||
shell.resize_mode().0.active_binding()
|
||||
{
|
||||
if action_pattern.key.is_some() && state == KeyState::Released
|
||||
&& handle.raw_syms().contains(&action_pattern.key.unwrap())
|
||||
|
|
@ -336,8 +335,8 @@ impl State {
|
|||
}
|
||||
|
||||
// Special case resizing with regards to arrow keys
|
||||
if let (ResizeMode::Started(_, _, direction), _) =
|
||||
shell.resize_mode()
|
||||
if let Some(direction) =
|
||||
shell.resize_mode().0.active_direction()
|
||||
{
|
||||
let resize_edge = match handle.modified_sym() {
|
||||
Keysym::Left | Keysym::h | Keysym::H => Some(ResizeEdge::LEFT),
|
||||
|
|
@ -913,10 +912,10 @@ impl State {
|
|||
std::mem::drop(shell);
|
||||
}
|
||||
} else {
|
||||
if let OverviewMode::Started(Trigger::Pointer(action_button), _) =
|
||||
shell.overview_mode().0
|
||||
if let Some(Trigger::Pointer(action_button)) =
|
||||
shell.overview_mode().0.active_trigger()
|
||||
{
|
||||
if action_button == button {
|
||||
if *action_button == button {
|
||||
shell
|
||||
.set_overview_mode(None, self.common.event_loop_handle.clone());
|
||||
}
|
||||
|
|
@ -1341,8 +1340,8 @@ impl State {
|
|||
}
|
||||
InputEvent::TouchUp { event, .. } => {
|
||||
let mut shell = self.common.shell.write().unwrap();
|
||||
if let OverviewMode::Started(Trigger::Touch(slot), _) = shell.overview_mode().0 {
|
||||
if slot == event.slot() {
|
||||
if let Some(Trigger::Touch(slot)) = shell.overview_mode().0.active_trigger() {
|
||||
if *slot == event.slot() {
|
||||
shell.set_overview_mode(None, self.common.event_loop_handle.clone());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue