diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-04-14 14:29:41 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-04-14 14:29:41 +0400 |
| commit | 568fbe26fe58be7de34e46ddb980a26d12e85ac6 (patch) | |
| tree | 1ee6a0d90d16419284ae837351071acf9cc00d39 /src | |
| parent | f8412ecff3bc2b3d6fa394b79c4f476179a55a90 (diff) | |
| download | niri-568fbe26fe58be7de34e46ddb980a26d12e85ac6.tar.gz niri-568fbe26fe58be7de34e46ddb980a26d12e85ac6.tar.bz2 niri-568fbe26fe58be7de34e46ddb980a26d12e85ac6.zip | |
Avoid continuous redrawing during horizontal gesture
Diffstat (limited to 'src')
| -rw-r--r-- | src/layout/monitor.rs | 5 | ||||
| -rw-r--r-- | src/layout/workspace.rs | 12 |
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() |
