popouts: reload tray menu on show

This commit is contained in:
2 * r + 2 * t 2025-06-07 20:15:41 +10:00
parent d76587c2db
commit 82756b2866
3 changed files with 35 additions and 17 deletions

View file

@ -15,16 +15,6 @@ Item {
property real currentCenter
property bool hasCurrent
Behavior on currentCenter {
enabled: root.implicitWidth > 0
NumberAnimation {
duration: Appearance.anim.durations.normal
easing.type: Easing.BezierSpline
easing.bezierCurve: Appearance.anim.curves.emphasized
}
}
anchors.centerIn: parent
implicitWidth: hasCurrent ? (content.children.find(c => c.shouldBeActive)?.implicitWidth ?? 0) + Appearance.padding.large * 2 : 0
@ -70,8 +60,26 @@ Item {
required property int index
name: `traymenu${index}`
sourceComponent: TrayMenu {
trayItem: trayMenu.modelData.menu
sourceComponent: trayMenuComp
Connections {
target: root
function onHasCurrentChanged(): void {
if (root.hasCurrent && trayMenu.shouldBeActive) {
trayMenu.sourceComponent = null;
trayMenu.sourceComponent = trayMenuComp;
}
}
}
Component {
id: trayMenuComp
TrayMenu {
popouts: root
trayItem: trayMenu.modelData.menu
}
}
}
}
@ -91,6 +99,16 @@ Item {
}
}
Behavior on currentCenter {
enabled: root.implicitWidth > 0
NumberAnimation {
duration: Appearance.anim.durations.normal
easing.type: Easing.BezierSpline
easing.bezierCurve: Appearance.anim.curves.emphasized
}
}
component Popout: Loader {
id: popout

View file

@ -11,6 +11,7 @@ import QtQuick.Controls
StackView {
id: root
required property Item popouts
required property QsMenuHandle trayItem
implicitWidth: currentItem.implicitWidth
@ -27,9 +28,7 @@ StackView {
component Anim: Transition {
NumberAnimation {
duration: 0 // Appearance.anim.durations.normal
easing.type: Easing.BezierSpline
easing.bezierCurve: Appearance.anim.curves.standard
duration: 0
}
}
@ -114,8 +113,10 @@ StackView {
handle: entry,
isSubMenu: true
}));
else
else {
item.modelData.triggered();
root.popouts.hasCurrent = false;
}
}
}

View file

@ -1,5 +1,4 @@
import "root:/services"
import Quickshell.Io
import QtQuick
Image {