aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/companion/Figure.qml
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-24 09:31:17 +0200
committerDanilo M. <danix@danix.xyz>2026-10-24 09:31:17 +0200
commitda9faa9db8fbf813d815d30fc8d590a034704ead (patch)
tree6e852d626bce31607a0165c636e21eca58dc9b58 /desktop/companion/Figure.qml
parentd95199db6c1ca830fdf10d32cadbe8f8a4f71d83 (diff)
downloadquickshell-da9faa9db8fbf813d815d30fc8d590a034704ead.tar.gz
quickshell-da9faa9db8fbf813d815d30fc8d590a034704ead.zip
companion: stay out of view when the shell starts with her hidden
A shell started with Prefs.companion false created the Figure with out already true. A starting value fires no onOutChanged, so the drop never ran and she was drawn in place. Hidden, her 200 ms clock does not tick, so every timed step froze: an empty desktop left her on the watch frame of the wallpaper blush, and a balloon left her on shoved, never mad. Toggling her on made the bug look fixed until the next restart. The body is now invisible while out and not animating, and the first entrance after such a start begins from below like any other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/companion/Figure.qml')
-rw-r--r--desktop/companion/Figure.qml7
1 files changed, 7 insertions, 0 deletions
diff --git a/desktop/companion/Figure.qml b/desktop/companion/Figure.qml
index 3401168..df21bf5 100644
--- a/desktop/companion/Figure.qml
+++ b/desktop/companion/Figure.qml
@@ -59,8 +59,14 @@ Item {
target: s; property: "drop"; duration: 320
onFinished: s.settled(s.out)
}
+ // Out from creation (a shell started with her hidden) never ran the drop,
+ // since a starting value fires no onOutChanged, and she was drawn in place
+ // with her clock stopped, frozen on whatever frame came next. The body
+ // below hides her until she is shown, and the first entrance starts from
+ // below like any other.
onOutChanged: {
dropAnim.stop();
+ if (!s.out && s.drop === 0) s.drop = s.height + 24;
dropAnim.to = s.out ? s.height + 24 : 0;
dropAnim.easing.type = s.out ? Easing.InCubic : Easing.OutBack;
dropAnim.start();
@@ -86,6 +92,7 @@ Item {
Item {
anchors.fill: parent
+ visible: !s.out || dropAnim.running
opacity: 1 - s.drop / (s.height + 24)
transform: Translate { x: s.shake; y: s.drop - s.bob }