aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-04-14 14:29:41 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-04-14 14:29:41 +0400
commit568fbe26fe58be7de34e46ddb980a26d12e85ac6 (patch)
tree1ee6a0d90d16419284ae837351071acf9cc00d39
parentf8412ecff3bc2b3d6fa394b79c4f476179a55a90 (diff)
downloadniri-568fbe26fe58be7de34e46ddb980a26d12e85ac6.tar.gz
niri-568fbe26fe58be7de34e46ddb980a26d12e85ac6.tar.bz2
niri-568fbe26fe58be7de34e46ddb980a26d12e85ac6.zip
Avoid continuous redrawing during horizontal gesture
-rw-r--r--src/layout/monitor.rs5
-rw-r--r--src/layout/workspace.rs12
2 files changed, 16 insertions, 1 deletions
diff --git a/src/layout/monitor.rs b/src/layout/monitor.rs
index 6e8cb36d..9476acfb 100644
--- a/src/layout/monitor.rs
+++ b/src/layout/monitor.rs
@@ -544,7 +544,10 @@ impl<W: LayoutElement> Monitor<W> {
pub fn are_transitions_ongoing(&self) -> bool {
self.workspace_switch.is_some()
- || self.workspaces.iter().any(|ws| ws.are_animations_ongoing())
+ || self
+ .workspaces
+ .iter()
+ .any(|ws| ws.are_transitions_ongoing())
}
pub fn update_config(&mut self, options: Rc<Options>) {
diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs
index 493a3c54..39e377b5 100644
--- a/src/layout/workspace.rs
+++ b/src/layout/workspace.rs
@@ -213,6 +213,10 @@ impl OutputId {
}
impl ViewOffsetAdjustment {
+ pub fn is_animation(&self) -> bool {
+ matches!(self, Self::Animation(_))
+ }
+
pub fn target_view_offset(&self) -> f64 {
match self {
ViewOffsetAdjustment::Animation(anim) => anim.to(),
@@ -307,6 +311,14 @@ impl<W: LayoutElement> Workspace<W> {
}
pub fn are_animations_ongoing(&self) -> bool {
+ self.view_offset_adj
+ .as_ref()
+ .is_some_and(|s| s.is_animation())
+ || self.columns.iter().any(Column::are_animations_ongoing)
+ || !self.closing_windows.is_empty()
+ }
+
+ pub fn are_transitions_ongoing(&self) -> bool {
self.view_offset_adj.is_some()
|| self.columns.iter().any(Column::are_animations_ongoing)
|| !self.closing_windows.is_empty()