diff --git a/settings/quickshell.nix b/settings/quickshell.nix index 71d7ab3..51641bd 100644 --- a/settings/quickshell.nix +++ b/settings/quickshell.nix @@ -2621,19 +2621,31 @@ in highlightMoveVelocity: -1 highlightResizeDuration: 0 + // Only x,y are animated, and that is deliberate. + // There used to be add/remove transitions + // fading `opacity` and `scale` on the delegate + // root, and they corrupted the list: the model + // is re-diffed on EVERY keystroke, so a row + // part-way through a fade often survives the + // next pass as a move rather than a + // remove — and move animates x,y only, so the + // half-finished opacity was never restored. + // Rows accumulated stuck at 0.3, 0.6, 1.0 + // depending on typing speed, which looked like + // the colours randomly fading. + // + // x,y are safe to animate because the view + // re-asserts them on every layout, so an + // interrupted slide self-corrects. opacity and + // scale have no such backstop. If a fade is + // ever wanted back, animate a child item, not + // the root the view recycles. move: Transition { NumberAnimation { properties: "x,y"; duration: Theme.animContent; easing.type: Easing.OutExpo } } displaced: Transition { NumberAnimation { properties: "x,y"; duration: Theme.animContent; easing.type: Easing.OutExpo } } - add: Transition { - NumberAnimation { property: "opacity"; from: 0; to: 1; duration: Theme.animContent } - NumberAnimation { property: "scale"; from: 0.92; to: 1; duration: Theme.animContent; easing.type: Easing.OutExpo } - } - remove: Transition { - NumberAnimation { property: "opacity"; to: 0; duration: 100 } - } delegate: Item { required property string appId