From 302a82da2dda3f1b8f86649bd801697f9f3c2209 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Fri, 12 Sep 2025 18:04:44 +1000 Subject: launcher: loader content --- modules/launcher/Wrapper.qml | 82 +++++++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 31 deletions(-) (limited to 'modules/launcher/Wrapper.qml') diff --git a/modules/launcher/Wrapper.qml b/modules/launcher/Wrapper.qml index d977b07..299828f 100644 --- a/modules/launcher/Wrapper.qml +++ b/modules/launcher/Wrapper.qml @@ -1,3 +1,5 @@ +pragma ComponentBehavior: Bound + import qs.components import qs.config import Quickshell @@ -9,48 +11,66 @@ Item { required property PersistentProperties visibilities required property var panels + readonly property bool shouldBeActive: visibilities.launcher && Config.launcher.enabled + property int contentHeight + visible: height > 0 implicitHeight: 0 implicitWidth: content.implicitWidth - states: State { - name: "visible" - when: root.visibilities.launcher && Config.launcher.enabled + onShouldBeActiveChanged: { + if (shouldBeActive) { + hideAnim.stop(); + showAnim.start(); + } else { + showAnim.stop(); + hideAnim.start(); + } + } - PropertyChanges { - root.implicitHeight: content.implicitHeight + SequentialAnimation { + id: showAnim + + Anim { + target: root + property: "implicitHeight" + to: root.contentHeight + duration: Appearance.anim.durations.expressiveDefaultSpatial + easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial + } + ScriptAction { + script: root.implicitHeight = Qt.binding(() => content.implicitHeight) } } - transitions: [ - Transition { - from: "" - to: "visible" - - Anim { - target: root - property: "implicitHeight" - duration: Appearance.anim.durations.expressiveDefaultSpatial - easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial - } - }, - Transition { - from: "visible" - to: "" - - Anim { - target: root - property: "implicitHeight" - easing.bezierCurve: Appearance.anim.curves.emphasized - } + SequentialAnimation { + id: hideAnim + + ScriptAction { + script: root.implicitHeight = root.implicitHeight } - ] + Anim { + target: root + property: "implicitHeight" + to: 0 + easing.bezierCurve: Appearance.anim.curves.emphasized + } + } - Content { + Loader { id: content - wrapper: root - visibilities: root.visibilities - panels: root.panels + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + + Component.onCompleted: { + root.contentHeight = implicitHeight; + active = Qt.binding(() => root.shouldBeActive || root.visible); + } + + sourceComponent: Content { + visibilities: root.visibilities + panels: root.panels + } } } -- cgit v1.2.3-freya