shell: Don't consider active overviews animations

This commit is contained in:
Victoria Brekenfeld 2024-07-15 16:30:54 +02:00
parent 3277435ff9
commit c506d94ac8
6 changed files with 139 additions and 53 deletions

View file

@ -14,7 +14,7 @@ use xkbcommon::xkb::Keysym;
use crate::{
config::key_bindings::cosmic_modifiers_from_smithay,
shell::{layout::tiling::NodeDesc, OverviewMode, Trigger},
shell::{layout::tiling::NodeDesc, Trigger},
state::State,
};
@ -40,7 +40,7 @@ impl KeyboardGrab<State> for SwapWindowGrab {
serial: Serial,
time: u32,
) {
if !matches!(&data.common.shell.read().unwrap().overview_mode, OverviewMode::Started(Trigger::KeyboardSwap(_, d), _) if d == &self.desc)
if !matches!(&data.common.shell.read().unwrap().overview_mode.active_trigger(), Some(Trigger::KeyboardSwap(_, d)) if d == &self.desc)
{
handle.unset_grab(self, data, serial, false);
return;

View file

@ -3137,7 +3137,10 @@ impl TilingLayout {
}
}
if !matches!(overview, OverviewMode::Started(_, _)) {
if !matches!(
overview,
OverviewMode::Started(_, _) | OverviewMode::Active(_)
) {
last_overview_hover.take();
}
@ -3249,8 +3252,8 @@ impl TilingLayout {
_ => None,
}
} else if matches!(
overview,
OverviewMode::Started(Trigger::Pointer(_) | Trigger::Touch(_), _)
overview.active_trigger(),
Some(Trigger::Pointer(_) | Trigger::Touch(_))
) {
let non_exclusive_zone = layer_map_for_output(&self.output)
.non_exclusive_zone()
@ -3889,12 +3892,12 @@ impl TilingLayout {
let mut popup_elements = Vec::new();
let is_overview = !matches!(overview.0, OverviewMode::None);
let is_mouse_tiling = (matches!(overview.0, OverviewMode::Started(Trigger::Pointer(_), _)))
let is_mouse_tiling = (matches!(overview.0.trigger(), Some(Trigger::Pointer(_))))
.then(|| self.last_overview_hover.as_ref().map(|x| &x.1));
let swap_desc = match &overview.0 {
OverviewMode::Started(Trigger::KeyboardSwap(_, desc), _)
| OverviewMode::Ended(Some(Trigger::KeyboardSwap(_, desc)), _) => Some(desc.clone()),
_ => None,
let swap_desc = if let Some(Trigger::KeyboardSwap(_, desc)) = overview.0.trigger() {
Some(desc.clone())
} else {
None
};
// all gone windows and fade them out