diff --git a/bar/systray/SysTray.qml b/bar/systray/SysTray.qml index e09b8ef..22fd367 100644 --- a/bar/systray/SysTray.qml +++ b/bar/systray/SysTray.qml @@ -29,11 +29,10 @@ RowLayout { hoverEnabled: true anchors.fill: parent onClicked: { - // trayText.width = sysTrayContent.width - trayIcon.width - trayContainer.spacing; - // trayText.visible = true; - // root.popup.set(this, trayMenu); + menuOpener.menu = trayField.modelData.menu; + if (root.popup.content == trayMenu) { - root.popup.toggle() + root.popup.hide(); return; } @@ -44,7 +43,6 @@ RowLayout { QsMenuOpener { id: menuOpener - menu: trayField.modelData.menu } WrapperItem { @@ -62,6 +60,7 @@ RowLayout { id: sysTrayContent Layout.fillWidth: true Layout.fillHeight: true + onInteracted: menuOpener.menu = null } } } diff --git a/bar/systray/TrayMenu.qml b/bar/systray/TrayMenu.qml index 0e0c8eb..cb07c37 100644 --- a/bar/systray/TrayMenu.qml +++ b/bar/systray/TrayMenu.qml @@ -6,6 +6,7 @@ import "../.." ColumnLayout { id: root required property QsMenuEntry modelData + signal interacted Rectangle { visible: (root.modelData?.isSeparator ?? false) @@ -20,5 +21,6 @@ ColumnLayout { visible: !root.modelData?.isSeparator menuData: root.modelData Layout.fillWidth: true + onInteracted: root.interacted() } } diff --git a/bar/systray/TrayMenuEntry.qml b/bar/systray/TrayMenuEntry.qml index 58d5ae0..930074f 100644 --- a/bar/systray/TrayMenuEntry.qml +++ b/bar/systray/TrayMenuEntry.qml @@ -8,6 +8,7 @@ import "../.." ColumnLayout { id: root required property var menuData + signal interacted WrapperRectangle { Layout.fillWidth: true @@ -31,10 +32,13 @@ ColumnLayout { if (!root.menuData?.enabled) return; - if (root.menuData?.hasChildren) + if (root.menuData?.hasChildren) { subTrayMenu.visible = !subTrayMenu.visible; + return; + } root.menuData?.triggered(); + root.interacted(); } RowLayout { @@ -72,7 +76,7 @@ ColumnLayout { Text { id: text - text: (root.menuData?.text) ?? "" + text: root.menuData?.text ?? "" verticalAlignment: Text.AlignVCenter color: { let color = Qt.color(ShellSettings.settings.colors["inverse_surface"]); @@ -88,6 +92,14 @@ ColumnLayout { Layout.fillWidth: true Layout.fillHeight: true + + Connections { + target: root.menuData + + function onTextChanged() { + console.log("Hi"); + } + } } Item {