mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-04-10 11:13:57 +02:00
fix(animation): disable on cross-monitor drag
This commit adds an edge case missed in
50a279239a.
This commit is contained in:
@@ -225,7 +225,7 @@ pub static SESSION_ID: AtomicU32 = AtomicU32::new(0);
|
||||
|
||||
pub static REMOVE_TITLEBARS: AtomicBool = AtomicBool::new(false);
|
||||
pub static ANIMATION_ENABLED: AtomicBool = AtomicBool::new(false);
|
||||
pub static ANIMATION_TEMPORARY_DISABLED: AtomicBool = AtomicBool::new(false);
|
||||
pub static ANIMATION_TEMPORARILY_DISABLED: AtomicBool = AtomicBool::new(false);
|
||||
pub static ANIMATION_DURATION: AtomicU64 = AtomicU64::new(250);
|
||||
|
||||
#[must_use]
|
||||
|
||||
@@ -32,6 +32,7 @@ use crate::workspace_reconciliator::ALT_TAB_HWND;
|
||||
use crate::workspace_reconciliator::ALT_TAB_HWND_INSTANT;
|
||||
use crate::Notification;
|
||||
use crate::NotificationEvent;
|
||||
use crate::ANIMATION_TEMPORARILY_DISABLED;
|
||||
use crate::DATA_DIR;
|
||||
use crate::HIDDEN_HWNDS;
|
||||
use crate::REGEX_IDENTIFIERS;
|
||||
@@ -477,6 +478,8 @@ impl WindowManager {
|
||||
origin_container_idx,
|
||||
)) = pending
|
||||
{
|
||||
ANIMATION_TEMPORARILY_DISABLED.store(true, Ordering::SeqCst);
|
||||
|
||||
let target_workspace_idx = self
|
||||
.monitors()
|
||||
.get(target_monitor_idx)
|
||||
@@ -518,6 +521,8 @@ impl WindowManager {
|
||||
self.focus_monitor(target_monitor_idx)?;
|
||||
self.focus_workspace(target_workspace_idx)?;
|
||||
self.update_focused_workspace(false, false)?;
|
||||
|
||||
ANIMATION_TEMPORARILY_DISABLED.store(false, Ordering::SeqCst);
|
||||
}
|
||||
// Here we handle a simple move on the same monitor which is treated as
|
||||
// a container swap
|
||||
|
||||
@@ -5,7 +5,7 @@ use crate::stackbar_manager;
|
||||
use crate::ANIMATIONS_IN_PROGRESS;
|
||||
use crate::ANIMATION_DURATION;
|
||||
use crate::ANIMATION_ENABLED;
|
||||
use crate::ANIMATION_TEMPORARY_DISABLED;
|
||||
use crate::ANIMATION_TEMPORARILY_DISABLED;
|
||||
use std::collections::HashMap;
|
||||
use std::convert::TryFrom;
|
||||
use std::fmt::Display;
|
||||
@@ -226,7 +226,7 @@ impl Window {
|
||||
}
|
||||
|
||||
if ANIMATION_ENABLED.load(Ordering::SeqCst)
|
||||
&& !ANIMATION_TEMPORARY_DISABLED.load(Ordering::SeqCst)
|
||||
&& !ANIMATION_TEMPORARILY_DISABLED.load(Ordering::SeqCst)
|
||||
{
|
||||
self.animate_position(layout, top)
|
||||
} else {
|
||||
|
||||
@@ -66,7 +66,7 @@ use crate::BorderColours;
|
||||
use crate::Colour;
|
||||
use crate::Rgb;
|
||||
use crate::WorkspaceRule;
|
||||
use crate::ANIMATION_TEMPORARY_DISABLED;
|
||||
use crate::ANIMATION_TEMPORARILY_DISABLED;
|
||||
use crate::CUSTOM_FFM;
|
||||
use crate::DATA_DIR;
|
||||
use crate::DISPLAY_INDEX_PREFERENCES;
|
||||
@@ -1109,7 +1109,7 @@ impl WindowManager {
|
||||
follow: bool,
|
||||
) -> Result<()> {
|
||||
self.handle_unmanaged_window_behaviour()?;
|
||||
ANIMATION_TEMPORARY_DISABLED.store(true, Ordering::SeqCst);
|
||||
ANIMATION_TEMPORARILY_DISABLED.store(true, Ordering::SeqCst);
|
||||
|
||||
tracing::info!("moving container");
|
||||
|
||||
@@ -1181,7 +1181,7 @@ impl WindowManager {
|
||||
|
||||
self.update_focused_workspace(self.mouse_follows_focus, true)?;
|
||||
|
||||
ANIMATION_TEMPORARY_DISABLED.store(false, Ordering::SeqCst);
|
||||
ANIMATION_TEMPORARILY_DISABLED.store(false, Ordering::SeqCst);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -1189,7 +1189,7 @@ impl WindowManager {
|
||||
#[tracing::instrument(skip(self))]
|
||||
pub fn move_container_to_workspace(&mut self, idx: usize, follow: bool) -> Result<()> {
|
||||
self.handle_unmanaged_window_behaviour()?;
|
||||
ANIMATION_TEMPORARY_DISABLED.store(true, Ordering::SeqCst);
|
||||
ANIMATION_TEMPORARILY_DISABLED.store(true, Ordering::SeqCst);
|
||||
|
||||
tracing::info!("moving container");
|
||||
|
||||
@@ -1203,7 +1203,7 @@ impl WindowManager {
|
||||
|
||||
self.update_focused_workspace(mouse_follows_focus, true)?;
|
||||
|
||||
ANIMATION_TEMPORARY_DISABLED.store(false, Ordering::SeqCst);
|
||||
ANIMATION_TEMPORARILY_DISABLED.store(false, Ordering::SeqCst);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -1309,7 +1309,7 @@ impl WindowManager {
|
||||
let target_container_idx = workspace.new_idx_for_direction(direction);
|
||||
|
||||
let animation_temporarily_disabled = if target_container_idx.is_none() {
|
||||
ANIMATION_TEMPORARY_DISABLED.store(true, Ordering::SeqCst);
|
||||
ANIMATION_TEMPORARILY_DISABLED.store(true, Ordering::SeqCst);
|
||||
true
|
||||
} else {
|
||||
false
|
||||
@@ -1442,7 +1442,7 @@ impl WindowManager {
|
||||
self.update_focused_workspace(self.mouse_follows_focus, true)?;
|
||||
|
||||
if animation_temporarily_disabled {
|
||||
ANIMATION_TEMPORARY_DISABLED.store(false, Ordering::SeqCst);
|
||||
ANIMATION_TEMPORARILY_DISABLED.store(false, Ordering::SeqCst);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user