Inter-icon hover changes were snapping because icon_scale_for read the hovered icon's real rectangle directly. This adds a small animation layer so the bell center lerps toward the target and the whole effect fades in/out at the dock's edges. CosmicAppList gains three fields: - anim_hover_center: Option<(f32, f32)> — virtual cursor position, chases the hovered icon's center across ticks. - anim_hover_intensity: f32 (0..1) — global fade-in/out of the fisheye. Target 1.0 while a dock icon is hovered, 0.0 otherwise. - anim_last_tick: Option<Instant> — for dt-based exponential smoothing (time-constant tau = 60ms, ~99% of target reached in ~120ms). A new Message::AnimTick(Instant) is emitted at ~60 fps by a conditional iced::time::every subscription — only active when the pointer is over a dock icon OR intensity hasn't faded back to ~0 yet, so the panel stays idle when no one is hovering the dock. icon_scale_for now reads anim_hover_center instead of rectangles[hovered] and multiplies the bell's peak by anim_hover_intensity. Behaviour: - Pointer slides A → B: bell glides continuously, both icons animate. - Pointer enters dock: icons inflate smoothly over ~120 ms. - Pointer leaves dock: icons deflate smoothly over ~120 ms. Fallback paths (first frame, missing rectangles) still respond instantly so the feature never looks 'stuck' before the animation kicks in. |
||
|---|---|---|
| .. | ||
| cosmic-app-list-config | ||
| data | ||
| i18n | ||
| src | ||
| Cargo.toml | ||
| i18n.toml | ||