Avoid continuous redrawing during horizontal gesture

This commit is contained in:
Ivan Molodetskikh
2024-04-14 14:29:41 +04:00
parent f8412ecff3
commit 568fbe26fe
2 changed files with 16 additions and 1 deletions
+4 -1
View File
@@ -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>) {
+12
View File
@@ -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()