From 40b6eaa4fe68a82f13bba50a7a4c84f95cd5cb13 Mon Sep 17 00:00:00 2001 From: bbedward Date: Sun, 11 Oct 2026 16:44:50 -0400 Subject: [PATCH] notifications: pin hovered popups to their slot fixes #3758 --- quickshell/Modules/Notifications/Popup/NotificationPopup.qml | 1 + .../Modules/Notifications/Popup/NotificationPopupManager.qml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/quickshell/Modules/Notifications/Popup/NotificationPopup.qml b/quickshell/Modules/Notifications/Popup/NotificationPopup.qml index d82a061f3..4660d42ac 100644 --- a/quickshell/Modules/Notifications/Popup/NotificationPopup.qml +++ b/quickshell/Modules/Notifications/Popup/NotificationPopup.qml @@ -50,6 +50,7 @@ PanelWindow { return false; } readonly property real screenY: stackMotion.value + readonly property real stackTarget: stackMotion.target readonly property bool stackMoving: stackMotion.running property real presentationProgress: 0 property real chromeRelease: 0 diff --git a/quickshell/Modules/Notifications/Popup/NotificationPopupManager.qml b/quickshell/Modules/Notifications/Popup/NotificationPopupManager.qml index c9b8430cd..c63b98d76 100644 --- a/quickshell/Modules/Notifications/Popup/NotificationPopupManager.qml +++ b/quickshell/Modules/Notifications/Popup/NotificationPopupManager.qml @@ -261,7 +261,7 @@ QtObject { return currentY; if (!_isLayoutWindow(p)) continue; - const gap = p.layoutPinned ? Math.max(0, p.screenY - currentY) : 0; + const gap = p.layoutPinned ? Math.max(0, p.stackTarget - currentY) : 0; currentY += gap + _popupHeight(p); } return currentY; @@ -270,7 +270,7 @@ QtObject { function _repositionAll() { let currentY = topMargin; for (const win of _layoutWindows()) { - const gap = win.layoutPinned ? Math.max(0, win.screenY - currentY) : 0; + const gap = win.layoutPinned ? Math.max(0, win.stackTarget - currentY) : 0; const position = currentY + gap; win.setStackPosition(position); currentY = position + _popupHeight(win);