diff --git a/modules/applets/VolPopup.qml b/modules/applets/VolPopup.qml index 4aba62c..9721192 100644 --- a/modules/applets/VolPopup.qml +++ b/modules/applets/VolPopup.qml @@ -2,39 +2,59 @@ pragma ComponentBehavior: Bound import qs import qs.settings import Quickshell +import Quickshell.Wayland import QtQuick import qs.widgets import qs.modules.Services import QtQuick.Layouts import QtQuick.Controls -PopupWindow { - implicitWidth: audioLayout.implicitWidth + 2 * audioLayout.anchors.margins - implicitHeight: audioLayout.implicitHeight + 24 - anchor.edges: Edges.Top | Edges.Right - anchor.gravity: Edges.Bottom | Edges.Left - anchor.margins.top: 40 +WlrLayershell { + id: win + + required property ShellScreen barScreen + screen: barScreen + + visible: false color: 'transparent' - grabFocus: true + layer: WlrLayer.Overlay + exclusionMode: ExclusionMode.Ignore + + keyboardFocus: visible ? WlrKeyboardFocus.Exclusive : WlrKeyboardFocus.None + + anchors { + top: true + right: true + } + margins { + top: Config.cfg.bar.height + (Config.cfg.bar.floating ? 20 : 10) + right: Config.cfg.bar.floating ? 10 : 0 + } + + implicitWidth: audioLayout.implicitWidth + 20 + implicitHeight: audioLayout.implicitHeight + 20 + onVisibleChanged: { + if (visible) + root.forceActiveFocus(); + } Rectangle { id: root - Keys.onEscapePressed: { - parent.visible = false; - } - onVisibleChanged: { - if (parent.visible) - forceActiveFocus(); - } anchors.fill: parent - anchors.centerIn: parent + focus: true color: Colors.barBg radius: Config.cfg.appearance.rounding + + Keys.onEscapePressed: event => { + win.visible = false; + event.accepted = true; + } + ColumnLayout { id: audioLayout anchors.centerIn: parent - anchors.margins: 10 spacing: 8 + Repeater { id: audioRep model: Audio.sinks @@ -50,8 +70,6 @@ PopupWindow { RowLayout { id: audioRow - anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter anchors.fill: parent StyledText { @@ -89,6 +107,8 @@ PopupWindow { } Slider { Layout.rightMargin: 10 + + focusPolicy: Qt.NoFocus value: audioDelContainer.modelData.audio.volume from: 0 to: 1 diff --git a/modules/applets/WallPicker.qml b/modules/applets/WallPicker.qml index 14b5839..31f860d 100644 --- a/modules/applets/WallPicker.qml +++ b/modules/applets/WallPicker.qml @@ -10,12 +10,12 @@ import qs.settings import qs.widgets BarComponent { + id: main implicitWidth: implicitHeight required property int screenHeight - id: main StyledIcon { - iconName: "preferences-desktop-wallpaper-symbolic" - anchors.centerIn: parent + iconName: "preferences-desktop-wallpaper-symbolic" + anchors.centerIn: parent } MouseArea { id: clickHandler @@ -30,7 +30,7 @@ BarComponent { id: wallPicker visible: false exclusionMode: ExclusionMode.Ignore - keyboardFocus: WlrKeyboardFocus.OnDemand + keyboardFocus: visible ? WlrKeyboardFocus.Exclusive : WlrKeyboardFocus.None implicitHeight: main.screenHeight / 8 color: 'transparent' anchors { @@ -92,7 +92,7 @@ BarComponent { hoverEnabled: true onClicked: { Config.cfg.wallpaper.wallpaper = wallTile.modelData.filePath; - Config.save() + Config.save(); } } } diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index c4759d1..c2a78fd 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -16,6 +16,7 @@ Variants { left: true right: true } + color: 'transparent' implicitHeight: Config.cfg.bar.height margins.top: Config.cfg.bar.floating ? 10 : 0 @@ -49,7 +50,7 @@ Variants { screenHeight: root.screen.height } - Pw {} + Pw {barScreen: root.modelData} Netstatus {} } } diff --git a/modules/bar/Pw.qml b/modules/bar/Pw.qml index 8261d63..8379b2d 100644 --- a/modules/bar/Pw.qml +++ b/modules/bar/Pw.qml @@ -8,6 +8,7 @@ import qs.settings import qs.modules.Services BarComponent { + required property ShellScreen barScreen id: root active: clickHandler.containsMouse implicitWidth: pwLayout.implicitWidth + 16 @@ -32,7 +33,7 @@ BarComponent { onClicked: volPopup.visible = !volPopup.visible } VolPopup { + barScreen: root.barScreen id: volPopup - anchor.item: root } }