From 7157fe2cddc3583a0219e59251d273e86c423569 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sat, 9 Aug 2025 17:18:51 +1000 Subject: picker: fix clients for special ws Also focus on first window if none focused on init --- modules/areapicker/Picker.qml | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) (limited to 'modules/areapicker') diff --git a/modules/areapicker/Picker.qml b/modules/areapicker/Picker.qml index 4c574ad..afb1017 100644 --- a/modules/areapicker/Picker.qml +++ b/modules/areapicker/Picker.qml @@ -36,14 +36,17 @@ MouseArea { property real sw: Math.abs(sx - ex) property real sh: Math.abs(sy - ey) - property list clients: Hyprland.toplevels.values.filter(c => c.workspace?.id === Hyprland.activeWsId).sort((a, b) => { - // Pinned first, then floating, then any other - if (a.lastIpcObject.pinned === b.lastIpcObject.pinned) - return a.lastIpcObject.floating === b.lastIpcObject.floating ? 0 : a.lastIpcObject.floating ? -1 : 1; - if (a.lastIpcObject.pinned) - return -1; - return 1; - }) + property list clients: { + const ws = Hyprland.activeToplevel?.workspace?.id ?? Hyprland.activeWsId; + return Hyprland.toplevels.values.filter(c => c.workspace?.id === ws).sort((a, b) => { + // Pinned first, then floating, then any other + if (a.lastIpcObject.pinned === b.lastIpcObject.pinned) + return a.lastIpcObject.floating === b.lastIpcObject.floating ? 0 : a.lastIpcObject.floating ? -1 : 1; + if (a.lastIpcObject.pinned) + return -1; + return 1; + }); + } function checkClientRects(x: real, y: real): void { for (const client of clients) { @@ -75,10 +78,22 @@ MouseArea { clients = clients; opacity = 1; - sx = screen.width / 2 - 100; - sy = screen.height / 2 - 100; - ex = screen.width / 2 + 100; - ey = screen.height / 2 + 100; + + const c = clients[0]; + if (c) { + const cx = c.lastIpcObject.at[0] - screen.x; + const cy = c.lastIpcObject.at[1] - screen.y; + onClient = true; + sx = cx; + sy = cy; + ex = cx + c.lastIpcObject.size[0]; + ey = cy + c.lastIpcObject.size[1]; + } else { + sx = screen.width / 2 - 100; + sy = screen.height / 2 - 100; + ex = screen.width / 2 + 100; + ey = screen.height / 2 + 100; + } } onPressed: event => { -- cgit v1.2.3-freya