diff --git a/quickshell/Modules/DankDash/DankDashPopout.qml b/quickshell/Modules/DankDash/DankDashPopout.qml index 89e6a263b..7aea8ada9 100644 --- a/quickshell/Modules/DankDash/DankDashPopout.qml +++ b/quickshell/Modules/DankDash/DankDashPopout.qml @@ -226,6 +226,13 @@ DankPopout { LayoutMirroring.enabled: I18n.isRtl LayoutMirroring.childrenInherit: true + MouseArea { + anchors.fill: parent + z: -1 + enabled: root.__dropdownType !== 0 + onClicked: root.__hideDropdowns() + } + implicitWidth: Math.max(700, pages.implicitWidth + (Theme.spacingM * 2)) implicitHeight: contentColumn.height + Theme.spacingM * 2 color: "transparent" diff --git a/quickshell/Modules/DankDash/MediaDropdownOverlay.qml b/quickshell/Modules/DankDash/MediaDropdownOverlay.qml index 2293dd55f..0488df066 100644 --- a/quickshell/Modules/DankDash/MediaDropdownOverlay.qml +++ b/quickshell/Modules/DankDash/MediaDropdownOverlay.qml @@ -6,6 +6,7 @@ import qs.Widgets Item { id: root + visible: dropdownType !== 0 LayoutMirroring.enabled: I18n.isRtl LayoutMirroring.childrenInherit: true @@ -582,10 +583,4 @@ Item { } } - MouseArea { - anchors.fill: parent - z: -1 - enabled: dropdownType !== 0 - onClicked: closeRequested() - } } diff --git a/quickshell/Widgets/DankPopoutConnected.qml b/quickshell/Widgets/DankPopoutConnected.qml index 9bdbc5b54..31f97b8e4 100644 --- a/quickshell/Widgets/DankPopoutConnected.qml +++ b/quickshell/Widgets/DankPopoutConnected.qml @@ -996,18 +996,53 @@ Item { height: root.renderedAlignedHeight + contentContainer.verticalConnectorExtent * 2 } - MouseArea { - anchors.fill: parent - enabled: shouldBeVisible && backgroundInteractive - acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton + Item { + id: backgroundClickCatcher z: -1 - onClicked: mouse => { - const clickX = mouse.x; - const clickY = mouse.y; - const outsideContent = clickX < root.alignedX || clickX > root.alignedX + root.alignedWidth || clickY < root.renderedAlignedY || clickY > root.renderedAlignedY + root.renderedAlignedHeight; - if (!outsideContent) - return; - backgroundClicked(); + enabled: shouldBeVisible && backgroundInteractive + x: 0 + y: 0 + width: parent.width + height: parent.height + + // Four edge strips that exclude the popup body, so cursor shapes + // inside the content propagate correctly (full-screen MouseAreas + // at z:-1 can suppress child cursorShape on Wayland). + MouseArea { + x: 0 + y: 0 + width: parent.width + height: root.renderedAlignedY + enabled: parent.enabled + acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton + onClicked: backgroundClicked() + } + MouseArea { + x: 0 + y: root.renderedAlignedY + root.renderedAlignedHeight + width: parent.width + height: Math.max(0, parent.height - root.renderedAlignedY - root.renderedAlignedHeight) + enabled: parent.enabled + acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton + onClicked: backgroundClicked() + } + MouseArea { + x: 0 + y: root.renderedAlignedY + width: root.alignedX + height: root.renderedAlignedHeight + enabled: parent.enabled + acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton + onClicked: backgroundClicked() + } + MouseArea { + x: root.alignedX + root.alignedWidth + y: root.renderedAlignedY + width: Math.max(0, parent.width - root.alignedX - root.alignedWidth) + height: root.renderedAlignedHeight + enabled: parent.enabled + acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton + onClicked: backgroundClicked() } }