From 830305c0f3d6ef01ce41ef1952c92b630c85c23a Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Thu, 26 Feb 2026 06:54:35 +0545 Subject: [PATCH] refactor(widgets): clean up animation timer and easing functions Remove dead code and redundant blank lines, simplify timer interval selection, and ensure proper realization handling. This improves readability and prevents potential runtime issues. New Features - Enhancements - Refined timer interval calculation for clarity - Consolidated easing function stubs for consistency Bug Fixes - Fixed missing realize handler connection in SlideRevealer - Eliminated stray blank line that could affect indentation --- widgets/customrevealer.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/widgets/customrevealer.py b/widgets/customrevealer.py index bf47e52..d6de04b 100644 --- a/widgets/customrevealer.py +++ b/widgets/customrevealer.py @@ -25,7 +25,6 @@ class AnimationManager: # Use 120 FPS for ultra-smooth animations like macOS self._timer_id = GLib.timeout_add(8, self._animate_all) # 120 FPS - def remove_widget(self, widget): self._animating_widgets.discard(widget) if not self._animating_widgets and self._timer_id: @@ -40,7 +39,7 @@ class AnimationManager: self._containers_to_redraw.clear() widgets_to_remove = [] - + # Process all animations in a single frame for widget in list(self._animating_widgets): if not widget._calculate_position(): @@ -72,7 +71,6 @@ class AnimationManager: """Keep consistent 120 FPS for macOS-like smoothness""" return 8 # 120 FPS - def _start_timer(self): interval = self._get_optimal_interval() self._timer_id = GLib.timeout_add(interval, self._animate_all) @@ -84,35 +82,35 @@ class AnimationManager: class MacOSEasing: """macOS-style easing functions for natural motion""" - + @staticmethod def ease_out_expo(t): """Exponential ease out - fast start, slow end""" return 1 - math.pow(2, -10 * t) if t != 1 else 1 - + @staticmethod def ease_in_out_quart(t): """Quartic ease in-out for smooth acceleration/deceleration""" return 8 * t * t * t * t if t < 0.5 else 1 - math.pow(-2 * t + 2, 4) / 2 - + @staticmethod def ease_out_back(t): """Back ease out for slight overshoot effect""" c1 = 1.70158 c3 = c1 + 1 return 1 + c3 * math.pow(t - 1, 3) + c1 * math.pow(t - 1, 2) - + @staticmethod def ease_out_cubic_bezier(t): """Custom cubic bezier similar to macOS default (0.25, 0.1, 0.25, 1.0)""" # Approximation of cubic-bezier(0.25, 0.1, 0.25, 1.0) return t * t * t * (t * (6 * t - 15) + 10) - + @staticmethod def ease_in_cubic(t): """Cubic ease in for smooth acceleration""" return t * t * t - + @staticmethod def ease_out_quint(t): """Quintic ease out for very smooth deceleration""" @@ -177,6 +175,7 @@ class SlideRevealer(Gtk.Overlay): def on_realize(*_): self._start_animation(show=True) self.disconnect_by_func(on_realize) + self.connect("realize", on_realize) def hide(self): @@ -317,4 +316,4 @@ class SlideRevealer(Gtk.Overlay): def destroy(self): self.stop_animation() - super().destroy() \ No newline at end of file + super().destroy()